Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Request: Enhancing Simulation Timing Reports with Color-Coded Outputs in Julia #174

Open
AhmedSalih3d opened this issue Feb 28, 2024 · 0 comments

Comments

@AhmedSalih3d
Copy link

Hello all!

Here is an example of the timing report generated by my simulation:

 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
                                                                                        Time                    Allocations
                                                                               ───────────────────────   ────────────────────────
                               Tot / % measured:                                     165s /  99.8%           1.53GiB /  99.7%

 Section                                                               ncalls     time    %tot     avg     alloc    %tot      avg
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 Step 0.1 | Update Neighbour system.nb.list                             31.2k    78.1s   47.3%  2.50ms    399MiB   25.6%  13.1KiB
   1.1 update particle positions                                        31.2k    25.8s   15.6%   826μs    128MiB    8.2%  4.21KiB
   1.2 extract updated neighborlist                                     31.2k    46.4s   28.1%  1.49ms    268MiB   17.2%  8.78KiB
   1.3 resize split neighborlist                                        31.2k   76.8ms    0.0%  2.46μs   2.78MiB    0.2%    93.6B
   1.4 update values of split neighborlist                              31.2k    5.64s    3.4%   181μs     0.00B    0.0%    0.00B
 Step 0.2 | Reset arrays to zero and resize L arrays                    31.2k    2.61s    1.6%  83.7μs   17.9MiB    1.1%     601B
   1.1 resize calculation buffers                                       31.2k    352ms    0.2%  11.3μs   17.9MiB    1.1%     601B
   1.2 reset calculation buffers                                        31.2k    2.15s    1.3%  69.0μs     0.00B    0.0%    0.00B
 Step 1 | Update xᵢⱼ, kernel values and kernel gradient                 31.2k    17.1s   10.4%   549μs   1.47KiB    0.0%    0.05B
   1.1 calculate xᵢⱼ                                                    31.2k    4.67s    2.8%   150μs     0.00B    0.0%    0.00B
   1.2 calculate kernel and kernel gradient                             31.2k    12.3s    7.5%   395μs     0.00B    0.0%    0.00B
 Step 2 | Simulation Equations to update values, preparing for n+1/2    31.2k    14.8s    9.0%   475μs   2.20KiB    0.0%    0.07B
   2.1 DDT                                                              31.2k    3.58s    2.2%   115μs     0.00B    0.0%    0.00B
   2.2 Pressure                                                         31.2k    750ms    0.5%  24.0μs     0.00B    0.0%    0.00B
   2.3 Artificial Viscosity Momentum Equation                           31.2k    10.4s    6.3%   332μs     0.00B    0.0%    0.00B
 Step 3 | Update values to n+1/2                                        31.2k    3.64s    2.2%   117μs   3.67KiB    0.0%    0.12B
   3.1 vₙ⁺                                                              31.2k    648ms    0.4%  20.8μs     0.00B    0.0%    0.00B
   3.2 Positionₙ⁺                                                       31.2k    579ms    0.4%  18.6μs     0.00B    0.0%    0.00B
   3.3 ρₙ⁺                                                              31.2k    308ms    0.2%  9.86μs     0.00B    0.0%    0.00B
   3.4 LimitDensityAtBoundary!(ρₙ⁺)                                     31.2k    383ms    0.2%  12.3μs     0.00B    0.0%    0.00B
   3.5 updatexᵢⱼ!                                                       31.2k    1.51s    0.9%  48.4μs     0.00B    0.0%    0.00B
 Step 4 | Simulation Equations to update values, preparing for n+1      31.2k    12.6s    7.7%   405μs   2.94KiB    0.0%    0.10B
   4.1 reset L arrays for density diffusion                             31.2k    929ms    0.6%  29.8μs     0.00B    0.0%    0.00B
   4.2 DDT                                                              31.2k    3.22s    2.0%   103μs     0.00B    0.0%    0.00B
   4.3 Pressure                                                         31.2k    677ms    0.4%  21.7μs     0.00B    0.0%    0.00B
   4.4 Artificial Viscosity Momentum Equation                           31.2k    7.66s    4.6%   246μs     0.00B    0.0%    0.00B
 Step 5 | Update values to n+1                                          31.2k    2.43s    1.5%  77.9μs   2.94KiB    0.0%    0.10B
   5.1 DensityEpsi!                                                     31.2k    304ms    0.2%  9.76μs     0.00B    0.0%    0.00B
   5.2 LimitDensityAtBoundary!(Density)                                 31.2k    353ms    0.2%  11.3μs     0.00B    0.0%    0.00B
   5.3 Velocity                                                         31.2k    492ms    0.3%  15.8μs     0.00B    0.0%    0.00B
   5.4 Position                                                         31.2k    1.14s    0.7%  36.4μs     0.00B    0.0%    0.00B
 Step 6 | Calculating time step                                         31.2k    1.39s    0.8%  44.6μs   2.20KiB    0.0%    0.07B
   6.1 calculate dt                                                     31.2k    1.23s    0.7%  39.5μs     0.00B    0.0%    0.00B
   6.2 set new dt                                                       31.2k   33.6ms    0.0%  1.08μs     0.00B    0.0%    0.00B
   6.3 increment total dt                                               31.2k   33.0ms    0.0%  1.06μs     0.00B    0.0%    0.00B
 Step 7 | Outputting save files and updating progress bar               31.2k    32.2s   19.5%  1.03ms   1.12GiB   73.3%  37.5KiB
   7.1 outputting savefile                                                624    28.8s   17.5%  46.2ms   1.01GiB   66.3%  1.66MiB
   7.2 updating progress bar                                            31.2k    3.32s    2.0%   106μs    110MiB    7.0%  3.60KiB
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

I would like to learn if there's a way to color-code these outputs based on the execution time (e.g., red for the most time-consuming sections, yellow for moderate, and green for the least). This enhancement would greatly aid in quickly identifying performance bottlenecks in my simulation.

I think it would be very beneficial if one could do such a thing natively.

Discourse thread: https://discourse.julialang.org/t/enhancing-simulation-timing-reports-with-color-coded-outputs-in-julia/110912

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant