6. Viewing a Summary Report

When you first open a report, the Summary view is shown. It consists of high-level information about the Poplar program, split into various sections.

Each summary section displays information in collapsible blocks (marked with a downward-pointing arrow, or, for the Poplar Engine Options section, clickable disclosure triangles), making it easy to show only sections of interest to you. Whether a section is collapsed or not is saved automatically across all reports.

6.1. Program Information

The top half of the report shows details of the IPU system the program was compiled for, and also details of the size of the graph that Poplar created.

6.1.1. Target

  • Type: The kind of IPU the program was compiled for. This will either be IPU or IPUModel.

  • Architecture: The version of IPU used to run the program. This will either be Mk1 or Mk2.

  • Timestamp: When the program compilation was started.

  • Tiles per IPU: The number of tiles in each IPU

  • IPUs per replica: The number of IPUs in each replica (only shown if more than one replica is used)

  • Replicas: The number of replicas. (Only shown if more than one replica is used)

  • Total tiles: The number of tiles in total (tiles per IPU * num IPUs)

  • Total IPUs: The number of IPUs in total (IPUs per replica * num replicas)

  • Memory per tile: The maximum memory on a tile.

  • Memory per IPU: The maximum memory on an IPU.

  • Memory per replica: The maximum memory for a replica.

  • Total memory: The total memory on all IPUs the program was compiled for.

  • Compute set instrumentation: The type of instrumentation compiled into the program to record compute set execution cycles. The method is controlled by the debug.computeInstrumentationLevel Poplar Engine option and is enable or disabled via the debug.instrumentCompute option (or debug.instrument which enables all instrumentation).

    • Off: Instrumentation disabled; estimates are used instead, if available.

    • Vertex: Cycles are recorded for each vertex execution. This means vertex execution is serialised, and this only really works on very small graphs.

    • Tile: Cycles are recorded separately for each tile. If you find this uses too much memory try using the Ipu method.

    • Ipu: Cycles are recorded for the slowest tile on each IPU for each compute set. An internal sync is inserted before and after each compute set. The tile that is used to do the cycle recording is controlled by debug.profilingTile. If you have enough memory consider using the Tile method instead.

    • Device: Cycles are recorded for the slowest tile on the entire device for each compute set. This mode is not recommended - use Ipu instead.

  • External exchange instrumentation: The type of instrumentation compiled into the program to record external exchange cycles, so host exchange and global exchange. The is enabled or disabled using the debug.instrumentExternalExchange Poplar Engine option (or debug.instrument which enables all instrumentation).

    • Off: Instrumentation disabled; estimates are used instead.

    • Tile: Cycles are recorded separately for each tile.

6.1.2. Graph

  • Number of compute sets: The number of compute sets in the graph. This is after compilation so it may be a larger number than the number of compute sets added through the Poplar API because some are created during compilation.

  • Number of edges: The number of edges in the graph. This is after compilation. An edge is a pointer from an Input<>, Output<> or InOut<> vertex field to a variable.

  • Number of variables: The number of variables in the graph, after compilation. Post-compilation variables are called lowered variables to distinguish them from the variables you created when defining the program. The main difference between these types of variables is that lowered variables are restricted to a single tile.

  • Number of vertices: The number of compute vertices the graph contains after compilation. Some vertices are added to the graph during compilation (for example memcpy vertices) so this may be higher than the number of vertices added with the Poplar API.

6.2. Poplar Engine options

This section displays all of the Poplar Engine options that were used to generate the reports, the values supplied for each, and whether they are the default values or otherwise. You can also choose to show the options for the three different phases: compilation, execution and target.

If no Poplar Engine options are displayed, click on the Engine Options heading to expand that section and show its contents.

  • To view options by their phase (execution, compilation or target), select the phase from the Type drop-down list. If a phase is not available, it is disabled.

  • If you select the Execution type, another drop-down list appears in which each of your runs is listed. Select None to see all execution parameters, or select one of the runs to see execution parameters just for that run. See run-specific execution parameters for more details.

  • Values which are different from the default are displayed in bold. Use the View - All selection box in the top right-hand corner to switch between a list of all options, or View - Non-default to view just those which are different from the default values.

  • Click on the small book icon to follow a web link to the Poplar API Reference for a description of each of these options.

6.3. Framework and application JSON files

If you have a framework.json or an app.json file that was created in your program, their contents are displayed here so that you can check any parameters that you recorded in them. This is useful when comparing two reports, allowing you to spot differences easily.

You can put whatever information you wish into these two files, and if they’re found in the reports folder when the other report files are being loaded, their contents are displayed in a foldable tree. This assumes that the files are valid JSON.

6.4. Report files

This section of the Summary report shows the folder from which the report files were loaded (or both folders, if you’re comparing reports). It also shows which individual files are being loaded into the Graph Analyser, as documented in Report Files.

  • If no Report Files are displayed, click on the Report Files heading to expand the section.

For each file that is present:

  • A set of three green dots indicates the file was found, and is being analysed and loaded.

  • A green tick indicates that a file was found and has been loaded successfully.

  • A greyed-out question mark indicates that the corresponding file was not found.

  • A red cross indicates that the file could not be loaded. A warning message can be found in the Host Information section, directly above.

You can click each file path and either use your system’s Copy command to copy the entire path to your clipboard, or you can simply click on the Copy icon to the right of the file path, which does the same thing.

The folder from which the reports were loaded (or both folders, if you’re comparing reports) is also displayed.