Profile Report

good general report, utilizes pie charts for displaying information

The Profile Report is a good general display showing where the program spent the most time, a good indicator of how much time the program is spending performing which activities, and a good place to start looking for load imbalance. Depending on the data collected, this report initially displays as one or two pie charts. When the Profile Report is displayed, look for:

  • In the pie chart on the left, the calls, functions, regions, and loops in the program, sorted by the number of times they were invoked and expressed as a percentage of the total call volume.
  • In the pie chart on the right, the calls, functions, regions, and loops, in the program, sorted by the amount of time spent performing the calls or functions and expressed as a percentage of the total program execution time.
  • Hover the cursor over any section of a pie chart to display a pop-up window containing specific detail about that call, function, region, or loop.
  • For trace and full-trace experiments, right-click on any call or function on a pie chart to display the "Fastbreak" option. Click Fastbreak to jump directly to this call or function in the Call Tree graph.
  • For trace and full-trace experiments, click any function of interest to display a Load Balance Report for that function.
    The Load Balance Report shows:
    • The load balance information for the function selected on the Profile Report. This report can be sorted by either PE, Calls, or Time. Click a column heading to sort the report by the values in the selected column.
    • The minimum, maximum, and average times spent in this function, as well as standard deviation.
    • Hover the cursor over any bar to display PE-specific quantitative detail.

    Alternately, click the Toggle (the double-headed arrow in the upper right corner of the report tab) to view the Profile Report as a bar graph, or click the Toggle again to view the Profile Report as a text report. In both bar graph and text report modes, the Load Balance and "Fastbreak" functions are available by right-clicking on a call or function.

    The text version of the Profile Report is a table showing the time spent by function, as both a wall clock time and percentage of total run time. This report also shows the number of calls to the function, the extent to which the call is imbalanced, and the potential savings that would result if the function were perfectly balanced.

    This is an active report. Click on any column heading to sort the report by that column, in ascending or descending order. In addition, if a source file is listed for a given function, the user can click on the function name and open the source file at the point of the call.

    Look for routines with high usage, and the largest imbalance and potential savings, as these are the often the best places to focus optimization efforts.

    Together, the Profile and Load Balance reports provide a good look at the behavior of the program during execution and can help identify opportunities for improving code performance. Look for functions that take a disproportionate amount of total execution time and for PEs that spend considerably more time in a function than other PEs do in the same function. This may indicate a coding error, or it may be the result of a data based load imbalance.

    To further examine load balancing issues, examine the Mosaic report (if available), and look for any communication "hotspots" that involve the PEs identified on the Load Balance Report.