12. Viewing an Operations Summary

The Operations Summary displays a table of all operations in your model, for a software layer, showing statistics about code size, cycle counts, FLOPs and memory usage. You can also select which software layer operations you want to summarise.

Clicking on an operation in the table reveals further information about it in the tabbed section in the bottom half of the report, displaying graphs of code size, cycle counts, and various other measurements and estimates for the selected operation. You can choose which columns you want displayed in the table, and also apply sorting and filtering to it.

12.1. Operations table

The Operations summary table shows a list of all the operations within the selected software layer.

Because the column headings in this table are typically quite long, we’ve used abbreviated headings that match the full column names displayed in the Columns drop-down list. If you hover your mouse over the column headings, you’ll see the full name displayed as a pop-up box.

12.1.1. Selecting a software layer

By default, the PopLibs software layer is displayed, as you can see from the drop-down Layers list in the top right-hand side of the table. You can select other software layers whose operations you wish to see by selecting from this list. Depending on your program, the following software layers may be available:

  • Poplar and PopLibs

  • PopXL and PopART Builder

  • ONNX

  • TensorFlow Poplar Drivers

  • TensorFlow HLO Instructions

  • Tensorflow XLA Operations

Changing layers involves a sometimes lengthy re-calculation of the table metrics, so you may need to wait a short while for larger reports.

12.1.2. Selecting which columns to display

The Columns control works differently depending on whether you’re viewing a single report, or comparing two reports.

  • When viewing a single report, you can select as many columns as your screen has room to display. Each column contains the values for that metric.

  • When comparing two reports, the Operation Name is always displayed, and you can select one other column to display. As well as the Operation Name column, there are three other columns that show the value of the selected column metric for the source report and the target report, as well as a column that shows the difference between the source and target values.

By default, the operations table displays the following metrics for each operation (single view only):

  • Operation Name

  • Debug Name

  • Code Size (Total)

  • Measured Cycles (Total)

  • FLOPs

FLOPs are not generated by default. Enable the profiler.includeFlopEstimates Poplar Engine option to generate FLOP estimates.

Many other operation metrics can be displayed or hidden in this table by checking or unchecking the data types in the drop-down Columns list in the top right-hand corner of the operations table. Your current column selection preferences are automatically saved.

The Not-Always-Live Delta (NAL∆) option (experimental) shows the difference that each operation makes to the variable memory as the program executes. This helps you identify which operations are the most expensive in terms of memory. Note a operation may have multiple liveness values if it is repeated in the execution, the value show is the liveness delta from the first occurrence.

Columns showing a range of Cycle Estimates are experimental.

12.2. Sorting and filtering

You can sort the operations table by any of the column headings, as well as only showing operations that match a particular string:

  • Click on a column heading to sort the table by that operation metric. Repeated clicking cycles through sorting in ascending order, descending order, or removing the sort from that column. A small blue triangle (or none) indicates the current sort order.

  • Type some text in the Filter operations box above the table, and press Enter to display only those operations whose operation name or debug name matches the text you enter. Remove filtering by clearing the text box.

12.3. Operations Summary tabs

The tabbed section in the bottom half of the Operations summary shows further information about the selected operation. When no operation is selected, only the Summary tab is visible, which shows some general statistics about all the operations in the currently selected software layer.

  • Select an operation from the table by clicking on it. The selected operation is displayed at the top of the tabbed section, along with a small x icon that you can click to deselect it, and return to the Summary tab.

12.3.1. Summary tab

When no operation is selected from the table, this tab shows a breakdown of operations for the selected software layer, including:

  • The total number of total operations for that layer

  • The total code size for that layer

  • The total number of cycles executed in that layer

When an operation is selected from the table, data from the default table columns is displayed.

12.3.2. Program Tree tab

When an operation is selected from the table, this tab shows the program steps involved in that operation. This is the same data displayed in the Program Tree report.

12.3.3. Code tab

When an operation is selected from the table, this tab shows a graph of the code size executed for that operation. Code size for OnTileExecute and DoExchange program steps is displayed by tile number for all IPUs. You can zoom and pan around this graph as with other graphs.

12.3.4. Cycles tab

When an operation is selected from the table, this tab shows the number of cycles taken by the selected operation, plotted against all the IPU tiles. You can zoom and pan around this graph as with other graphs.

By default, only cycle counts for the OnTileExecute and DoExchange program steps are displayed, but you can add other program step types to include on the graph by selecting them from the Options drop-down list in the top left-hand corner of the graph. Available options are:

  • Show Copies: Separates steps for OnTileExecute programs that are just for copies.

  • Show Estimates: Includes a number of estimated cycle counts:

    • DoExchange Estimated Cycles

    • OnTileExecute Estimated Cycles

    • OnTileExecuteCopy Estimated Cycles

    • StreamCopyMid Estimated Cycles

    • GlobalExchange Estimated Cycles

12.3.5. FLOPs tab

When an operation is selected from the table, this tab shows a graph of the total number of FLOPs (Floating Point Operations) executed for the selected operation, plotted against IPU tiles.

12.3.6. Debug tab

When an operation is selected from the table, this tab shows debug information from the currently selected software layer for that operation. This information is identical to that on the Liveness Report and the Program Tree Debug sections.