Sample Profile Report

This is an example (not to be taken literally) of what an automated report would look like. Many of the figures are from existing ParaProf charts, the rest were generated by Dewi and me using Python, Pandas and matplotlib. All of the figures below would be generated with Plotly, and would be interactive. Plotly allows (requires?) you to write plots out to html, and we can aggregate them into one file with a summary of the profile.

Text overview

This would have some kind of overall user-friendly text summary of what happened, using metadata from the profile. For example, show the program, it's arguments, the date it was executed, the total run time, etc. The right side of the below figure.

Timer data

Overall profile view

This would have a stacked bar chart (not necessarily horizontal like this one...maybe vertical instead like the "top 9 timers", below). The point of this chart is to show the timer data distributed across processes and threads. One change would be to NOT show the threads that have little to no activity (3,4,5). This view would also hide small timers.

Top 9 timers (from a different application)

Mean profile

Next would be a breakdown of the "mean" profile, averaged across all threads. This view would also hide small threads. IT would be nice if it showed error bars. Maybe as a box/violin plot?

Callgraph representation (if available)

If the user requested a callgraph, this would show a more sophisticated graph representation of the profile, maybe as a treetable? Maybe as a graph? Best would be as a sunburst?

Counter data

ParaProf data

ParaProf has a kind of rudimentary counter view, we can do a lot better. Some examples are below. We should focus on the types of automatic counters that could be available, like the POSIX I/O counters below, or MPI send/receive bytes and bandwidth rates. Other options are using heatmaps (for communication intensity).

Old view

CPU utilization

Memory usage

IO usage

ib0 usage

eth0 usage

Other views

  1. 3D visualizations (scatter, surface)
  2. Histograms, Box plots, etc.
  3. Bubble charts?
  4. Animations of time-series / snapshot / phase profiles? The counter data would be pretty cool as phased animations...