User guide


The Graphcore PopVision™ System Analyser is a desktop tool for analysing the execution of IPU-targeted software on your host system processors. It shows an interactive timeline visualisation of the execution steps involved, helping you to identify any bottlenecks between the CPUs and IPUs. This is particularly useful when you are scaling models to run on multiple CPUs and IPUs.

Used in combination with the PopVision™ Graph Analyser application, the System Analyser allows you to identify exactly how long execution events take to run, from the main program itself all the way down to individual IPU execution steps.

Poplar - and the machine learning frameworks it supports such as PyTorch, TensorFlow and PopART - use the Poplar libpvti library to capture profiling information from your code. This information is saved to a file which you can then open and analyse in the System Analyser application. User APIs in C++ and Python are available to instrument your own application code.


The majority of the functionality in the System Analyser requires at least Poplar SDK 1.4, but there are some features (for example line graphs and metadata) that only become available in later SDK versions. These features are highlighted within this help document.

End User License Agreement

Before you can use the System Analyser, you must first agree to the End User License Agreement (EULA) that is displayed when the app is first opened (assuming that you have not already agreed to it in a previous version). Clicking on the Disagree button will quit the application immediately.

You can re-read the EULA at any time after you have agreed to it. Select View EULA from the Help menu.

  • You can toggle the EULA dialog between modal and full-screen view by clicking on the icon to the left of the window’s title.

Capturing execution information

To capture execution data from your program to a file, use the following options when executing your program. These are specified at the same time as the POPLAR_ENGINE_OPTIONS :


Additional options include:

  • directory : To specify where the .pvti file will be saved,

  • channels : To specify a list of channels to capture from. See Using the libpvti API for details.


.pvti files are streamed to disk as the program executes, so it should not have a significant effect on your host system’s memory (although it may affect the speed of execution).

The libpvti User Guide gives more details.

Capturing function entry and exit

For most basic cases, there are POPLAR_TRACEPOINT macros that can be used inside your program to capture the timing of function entry and exit. For example:

void Engine::prepareForStreamAccess(StreamAndIndex stream) const {
  const DataStream &streamInfo = getStreamInfo(;
  logging::engine::debug("prepareForStreamAccess {} \\"{}\\" (id {}, index {}))",
                          isHostToDevice(streamInfo.type) ? "host write of",
                                                          : "host read of",
                          streamInfo.handle,, stream.index);

This will capture the name of the method, and, using object construction and destruction, record the entry and exit time.

Similar macros are available for PopART ( POPART_TRACEPOINT ) and TensorFlow ( TENSORFLOW_TRACEPOINT ).

Using the libpvti API

The API allows you to mark the begin and end of a section of code. This is not limited to functions - markers can be placed anywhere in your code. More information on the instrumentation API (available in Python and C++) can be found in the libpvti User Guide .

To use the API to indicate the beginning and end of trace events, you must first create a channel.

For example, in Python you would:

import libpvti as pvti
channel = pvti.createTraceChannel("MyChannel")

# Functional implementation
def foo ():
  pvti.Tracepoint.begin(channel, "foo")
  pvti.Tracepoint.end(channel, "foo")

# context manager implementation
def bar():
  with pvti.Tracepoint(channel, "bar"):

# wrapped object
class Bob:
  def somemethod(self):

bob = Bob()
pvti.instrument(bob ["somemethod"], channel)

# decorator (later)
def cat():

and in C++ you would:

// Create channel
pvti::TraceChannel channel = {"MyChannel"};

// Functional implementation
void foo() {
  pvti::TracePoint::begin(channel, "foo");
  pvti::TracePoint::end(channel, "foo");

// Scoped tracepoint object
void bar() {
  pvti::Tracepoint tp(channel, "bar");

Capturing scalar values

The API also allows you to capture scalar values over time. This can be used to log any scalar value, for example host memory usage or CPU load. More information on the instrumentation API can be found in the the libpvti User Guide .

To use the API to capture scalar values, you must first create a graph (with units) and then a series against that graph.

For example, in Python you would:

import libpvti as pvti
# Create graph
graph = pvti.Graph("MyGraph", "%")

# Create series
series1 = graph.addSeries("series1")
series2 = graph.addSeries("series2")

# Capture values

and in C++ you would:

// Create graph
pvti::Graph graph("MyGraph", "%");

// Create series
auto series1 = graph.addSeries("series1");
auto series2 = graph.addSeries("series2");

// Capture values

You can capture default driver monitoring information by setting the environment variable GCDA_MONITOR=1 . See the online documentation for the gc-monitor command for more details of the data provided by the drivers.

Opening reports

You can open report files on your local machine, or from a remote server over SSH.


You can open a .pvti file in the System Analyser by double-clicking it in your OS’s file browser. (Not supported on Linux.)

Opening the Demo Report

If you don’t have any generated reports, you can open and browse the demo report that’s included with the System Analyser. It’s a small report, but contains all of the features that are supported in the current application.

  • Click on the Open demo report link on the Home screen to open the demo report.

Opening recent reports

If you’ve opened a report before, the Home screen displays a list of recently opened reports in the Recent panel.

  • Click on a recent report to open it again. That report will automatically move to the top of the Recent list.

  • If you want to remove a report from the Recent list, click on the trash icon that appears to the left of a report when you hover your mouse over it.

  • If you attempt to open a report file from the Recent list that has been moved or deleted since it was last opened, an error dialog appears indicating that the file can’t be found. You can either replace the file, in which case the corresponding link in the Recent panel will work again, or you can click on the Remove from recent files button in the error dialog to remove that file from the Recent list.

The Recent list can contain up to 64 previous file selections.

Local reports

You can open report files stored on your local machine.

To open a report stored locally on your machine:

  • Click on the Open a report link from the Open panel on the Home screen. You’ll be presented with a file selection dialog, and the local tab at the top will be selected by default. You’ll see listings of the directories and files on your local machine.

  • The System Analyser application can open .pvti files and .json files that support the Chromium trace format. When the System Analyser identifies a directory in which any .pvti files are found, those files are listed on the right-hand side.

  • When typing a path into the box at the top of the dialog, a drop-down list shows the directories within the current directory. You can use the up and down arrow keys to navigate this list, and choose the next path element by pressing the Enter key.

  • You can sort these files by name or modified date, in ascending or descending order, by clicking on the appropriate column header. Your sorting preference is saved.

  • You can toggle the Open dialog between modal and full-screen view by clicking on the icon to the left of the window’s title.

  • After navigating to the desired directory, you can select a file by clicking on it. Multiple files can be selected at once.

  • Once you’ve selected the file(s) you wish to open, click on the Open button to load the report data from the file(s).

While the report file(s) load into the application, you’ll see a Loading progress bar, then the main reports view is displayed.


While you have a report open, you can add other reports to it by clicking the Open button in the top left-hand corner of the application.

Remote reports

If you are using an IPU system on a remote server, for example on a cloud service, any reports generated will be saved to that server. In this case you can open them remotely by specifying the server address, and connecting to the machine over SSH. The reports are analysed and the output is streamed back to the System Analyser application on your local machine, allowing you to view the reports.


When the System Analyser opens report files on a remote machine, it uploads a small binary app containing an analysis engine to the remote server. This analysis engine pre-processes the report data and sends it back over SSH to the System Analyser application running on your local machine. If you’re running other performance-critical processes on that remote machine, you should be aware of any effects this process may have on the capacity of the remote machine’s hardware to run any other tasks. As server performance varies a great deal, the only way to know how much processor speed the app takes is to try a small sample, and monitor the CPU usage.

To open a report stored on a remote machine:

  • Click on the Open a report link in the Open panel on the Home screen. You’ll be presented with a file selection dialog, and the local tab at the top will be selected by default.

  • Click on the remote tab at the top, and you’ll see a login dialog that allows you to connect to a remote server. Enter your username, and the address of the remote machine. You can enter the port or use the default. Click on the Connect button to connect to the remote machine.

  • If you have configured your SSH key in the Preferences dialog , then the connection should use the key for authentication on the remote server.

  • If your SSH key requires a passphrase, then you will have to configure an SSH agent in order to use the key.

  • If you haven’t set a path to your private SSH key in the Preferences dialog nor have you configured an SSH agent , then you will be prompted for a password to log into the remote machine.

  • Once logged in, you’ll see listings of the directories and files on the remote machine. You can sort these files by name, modified date or size, in ascending or descending order, by clicking on the appropriate column header.

  • The System Analyser application can open .pvti files and .json files that support the Chromium trace format. Multiple files can be opened together from this dialog by clicking to select all the files you want to open. You’ll notice that when the System Analyser identifies a directory in which any .pvti files are found, those files are listed on the right-hand side.

  • Once you’ve selected the file(s) you wish to open, click on the Open button to load the report data from the file(s).

While the report file(s) load into the application, you’ll see a Loading progress bar, then the main reports view is displayed.

Configure the SSH agent


The System Analyser does not currently support encrypted SSH private keys, so keys that are protected by a passphrase. However it does support SSH agents. If your key is passphrase protected you will need to make sure to add it to your SSH agent before the System Analyser can use it, by using the ssh-add command-line tool and ensure that the SSH agent mode is set correctly in the Preferences dialog.

To configure the SSH agent, from a terminal run:

# Start the SSH agent in the background.
eval "$(ssh-agent -s)"

# Add your SSH private key to the SSH agent
ssh-add -K ~/.ssh/id_rsa

Then edit your preferences to remove the entry in SSH private key path . Make sure that SSH agent mode is set to Automatically obtain ssh-agent socket path from environment .

Connection errors

A number of errors can occur when connecting to a remote server. This section lists the most common and gives some troubleshooting steps.


Error: getaddrinfo ENOTFOUND

This error occurs when the specified server could not be found (DNS lookup failed). Check that you have typed the server’s name correctly. If a VPN connection is required, check that it is connected and working correctly.


Error: Password authentication failed

If the SSH agent and SSH key authentication fail then password authentication is attempted. If you normally use a public key to connect to the server, check that you have correctly specified the key as described in SSH preferences . Otherwise, check that password authentication is enabled on the server and that you have typed your password correctly.


Error: Cannot create directory .cache/popvision_system_analyser’ because a file already exists there.

The System Analyser will attempt to create a number of directories on the remote server if they do not already exist. If a file already exists with the same name then attempting to create the directory will fail. Check what the file is and either delete or rename it to allow the directory to be created.


Error: Could not create directory .cache’: Permission denied

The application will attempt to create a number of directories on the remote server if they do not already exist. This error indicates that you did not have permission to create one of these directories. This usually indicates a problem with how your home directory is set up on the server: either you do not have a home directory and don’t have permission to create one, or you have not been given adequate permissions on your own home directory. Contact the server administrator to ask for a home directory to be created or for its permissions to be corrected.


Error: Could not write to .cache/popvision_system_analyser/backend_… on the remote. This could be caused by a full filesystem

This error usually occurs because there was not enough disk space on the server to upload the required binary file to your home directory (around 20 MB is required). You may be able to free up some space by deleting unused files.

In some cases servers have a home directory filesystem which is very limited in size but have a much larger local disk or “scratch space” available. The application can upload to the scratch space if you create a symbolic link from your home directory to the scratch drive, for example:

mv ~/.cache /localdata/username/.cache
ln -s /localdata/username/.cache ~/.cache

Viewing reports

The application’s main reports view displays the Timeline information of the execution events recorded in the files you opened, together with a scaled-down overview above, which shows the entire set of events irrespective of your current zoom and pan state.

In the main reports view, the following actions are available:

Using the sidebar buttons

Once a report has been opened, the application sidebar is displayed, which contains several buttons that allow you to perform the following actions:

  • Reload the report (this option is also available from the application’s View menu, or by pressing Ctrl/Command and R).

  • Close the current report(s),

  • Open the in-app help,

  • Expand or contract the sidebar button labels.

Timeline flamegraphs

Events in the timeline are grouped and layered according to the file where they originated, and beneath that to the process and thread in which they occurred. If there’s room to display it, the event’s name is shown within each event block. Hovering your mouse over an event block displays a pop-up that shows the details of the event .

The number of events within the currently displayed portion of the timeline is displayed in the top left-hand corner, as well as the duration of that portion. You’ll see these numbers change as you pan and zoom around the timeline.

The time scale is displayed across the top of the timeline, showing the elapsed time from the start of the first event. This is displayed in hours, minutes and seconds, and more significant digits of the seconds are displayed as you zoom in. You can choose to display the time scale in relative terms (starting at 0:00 at the beginning of the first captured event), or in absolute terms, where a real time is displayed. Choose the display you want by clicking the Options button at the top of the application window.


Once you’ve opened a report, you can open additional reports to display on the same timeline. Just click the Add file button at the top-left of the application window, and follow the standard method to open reports .

Events in the timeline are coloured as follows:

  • Poplar : Events triggered from the Poplar libraries are coloured red.

  • Framework : Events triggered from the PopART libraries, or any of the machine learning frameworks such as PyTorch or TensorFlow, are coloured orange.

  • Driver : Events triggered by the driver layer are coloured blue.

  • Others : User-generated event categories are then assigned a different colour.

Viewing instant PVTI events

Instant PVTI events are now displayed in the timeline as small lollipop icons above the main timeline event blocks. Instant events are set in your program code using, for example:

pvti.Tracepoint.event(channelName, "Here's an instant event")

This event will then show up on the timeline when that command was encountered as the program executes.

  • Clicking on an event displays its details in the tabs below the timeline.

Viewing zero-length blocks

PVTI files may contain sub-microsecond events which are rounded down to zero duration. To make these visible on the timeline, we have set their length to 0.5µs (providing they do not overlap the next event), and changed their label to read “<1µs”.

Timeline line graphs

If any scalar values have been captured, the timeline will also show a collection of line graphs grouped at the bottom of a file. These can be used to view these scalar values over time, for comparison to the events shown in the flamegraphs above.

Hovering over a line graph will display a tooltip with the value for each series at that timestamp.

You can display a line graph as a line or as a filled-in area:

  • Click on the Line Graph Type drop-down list at the top of the screen to select the display type.


This feature is only available in reports generated with Poplar SDK 2.1 and later.

IPU utilisation

The data used to populate the IPU Utilisation line graph is sourced from the drivers when the GCDA_MONITOR environment variable is set. It is the average amount of time spent waiting for one or more IPU syncs in the previous second. This measurement is a rough guide, and is not intended to be used for performance measurement.

See the online documentation for the gc-monitor command for more details of the data provided by the drivers.


IPU utilisation is not the same as the derived IPU execution, which shows when each IPU is active, as described in Timeline options .

Timeline options

Above the timeline overview there are the following buttons:

  • Add file : This reopens the file browsing dialog, allowing you to add more files to the current timeline following the standard method to open reports .

  • Graph Type : This allows you to switch between graph display types:

    • Timeline : Displays a flamegraph showing the position and duration of each event in the call stack. Each event on the timeline view corresponds directly to an event logged in the PVTI file.

    • Aggregated : Displays a flamegraph showing each event aggregated by its unique call stack. The starting timestamp at which a block appears in this view has no link to the timestamp that its events took place at within the trace. However, its duration does correspond to the total duration of the events that combine to make the block.

  • Options : This shows the following options to apply to your timeline:

    • Absolute timing : Checking this option will position files on your timeline using their absolute times rather than positioning all files to start at time 0.

    • Collapse all charts : Checking this option will collapse all charts in your timeline, it will leave parent nodes in their current state. Unchecking this will similarly expand all charts in your timeline.

    • Derive IPU Execution : Checking this option will display an additional chart at the top of the timeline. It shows intervals of IPU activity that may be derived from host synchronisation events in the other charts.

    • Hide charts below threshold duration : Checking this option will hide all charts in your timeline with a total duration (sum of all top-level event durations) less than or equal to the threshold percentage of the total time-window of the file. You can specify the threshold percentage using the radio buttons below this option.

  • Key : This allows you to see which channels the different colours represent on your timeline. Clicking one of these will reload the timeline without that channel shown.

  • Save (camera icon) : This allows you to save the current view as a PNG file. This can either be saved to a file on your local machine, or to the clipboard.

Panning and zooming

You can move around the timeline using the mouse to bring events into view:

  • In the overview at the top of the timeline, click and drag a section to zoom into the corresponding area of the timeline. The section of the timeline you’re currently viewing is highlighted in the overview.

  • Drag the mouse left and right in the timeline to shift it left and right at the current zoom level.

  • Use the mouse wheel to zoom in and out of the timeline. If the timeline is too deep to fit into the application window, a scrollbar is displayed to enable you to move the timeline up and down in the window. As the mouse wheel is used for zooming in and out, you can hold down the Ctrl/Command key to scroll the timeline up and down using the mouse wheel.

  • Note that you can choose how you want your scroll wheel to behave by setting the Scroll behaviour in the Preferences dialog.


You can switch between window and full-screen display by selecting Toggle Full screen from the View menu, or by pressing Ctrl/Command and F.

Using the Navigation panel

In the top left-hand corner of the report graph, there is a small compass icon that, when clicked, opens out into a navigation panel that allows you to move around the report easily with the keyboard, or if you don’t have a scrolling mouse or mouse pad.


When you hover your mouse over each icon in the navigation panel, you can see the equivalent quick-key for that action.

  • Click the compass icon to open the navigation panel. You can click it again to close it, or click on the < icon at the panel’s right-hand end.

  • Click on the magnifying glass icons to zoom in or out of the graph, or type in the magnification percentage you’d like to jump to (and press the Enter key).

  • Click the « and » icons to pan the graph left and right.

  • Click the ? icon to open the in-app help listing all the keyboard commands.

Selecting events

You can select any individual event in the timeline by clicking on it. Tabs giving further event information are then displayed beneath the timeline. By holding down the Shift key whilst clicking on an event, you can select multiple events.

  • Summary:

    • Name : For events dispatched through one of the libraries (for example PyTorch, TensorFlow, Poplar or PopART) this is a concatenated list of the namespaces from which the event originated. For user-created functions (for example, in your Python programs), it is the name of the function.

    • Channel : The channel is where this event has been called. This can be one of the predefined channels (Drivers, Poplar, Framework) or user-created.

    • Timestamp : This is the execution time at which the event occurred in the timeline, measured in hours, minutes and microseconds.

    • Absolute Timestamp : Same as the timestamp but in absolute terms rather than relative to the start of the event.

    • Duration : The amount of time the event took to execute.

    • Metadata : Any metadata information that has been associated with the selected trace event.

  • Call Tree:

    The call tree shows the events that are descendants of the selected event in a tree structure. You can expand to see the children of an event by clicking the caret on the left. Percentages given in the call tree are a percentage of the total time of the selected event. Hovering on a node in the call tree will highlight the respective events in the timeline above.

    • Self Time : This is the total time of an event minus the time taken by its children.

    • Total Time : This is the total time that the event took.

    • Activity : This is the name of the event.

    The call tree also has the following options that apply to it:

    • Aggregate : When checked, this option aggregates all nodes with the same event name at the same level, summing their times and combining all their children under one node.

Searching for events

Use the Search box at the top of the report window to find events by their name. The search looks for events within all processes and threads.

  • Click in the Search box, enter some search text, and press the Enter key to start the search.

  • If any events have names that match your search text, the number of matches is displayed below the search box, and they are highlighted in the timeline. Events that do not match the search text are greyed out in the timeline display, making it simple to see at a glance which events match your search.

  • Press the Enter key repeatedly to step through the matches one-by-one, or click on the small arrows either side of the match count to move forward and backward through the matches. The report scrolls to the location of the current match.

  • You can cancel the search by deleting the text in the search box, or by clicking the small x icon at its right-hand end.


Metadata information (in JSON format) can be recorded by the libpvti library and associated with trace events in the .pvti report file. This data can be added to the Begin phase, the End phase or both phases of a function. Metadata information is displayed in the summary tab if the selected event has any metadata associated with it.

This metadata capability has been added to the Poplar software stack in two places:

  • to show information regarding the state of the synchronization with the IPU in the GDCA layer;

  • to show the stream that is being requested by Poplar in the prefetch and fetch calls.


Metadata information for trace events is only supported for .pvti files of version 1.2 or higher, and only with Poplar SDK version 2.3 or later.

Expanding and collapsing nodes

The timeline is described by a tree of nodes at its left-hand edge. Each of these nodes may be expanded or collapsed by clicking the caret icon at the left of the node’s label.


A chart node that is collapsed displays only the top-level events for that node. By collapsing nodes, you can view more threads at once which may help to understand the events that occurred.

Pinning charts

An empty pin icon is displayed at the right of each chart node in the timeline (flame and line graphs). To pin a chart to the top of the timeline, click its pin. The chart will move from its initial position to a highlighted region above the rest of the timeline named Pinned , and its pin icon will now appear filled.

To return the chart to its initial position, click the filled icon again and it will be removed from the Pinned region.


All charts are returned to their initial positions when the graph type or options change. Any pinned charts will remain in the Pinned region when files are added to the timeline.

The Pinned region may be expanded and collapsed, like the other nodes in the timeline. Charts appear beneath it in the order in which they were pinned.


Pinning a chart does not affect the timeline overview.

To return all charts to their initial positions, click the pin icon at the right of the Pinned region, which will also then disappear.

Viewing selected duration

You can view a duration on the timeline by holding down the Shift key and dragging the mouse from side to side anywhere in the timeline. This displays a timing duration marker at the top of the timeline, showing you the duration of the timeline you’ve selected. The selected duration is highlighted in pink in the overview.

Saving reports

To save the currently displayed portion of the timeline as a PNG image file:

  1. Click on the Save button in the top, right-hand corner of the main screen.

  2. Your system’s file browser dialog appears. Select the directory in which you want the image file saved.

  3. Click Save .

{MODE === Mode.Development && ( <>

Dimensioning Calculator

After starting the System Analyser, you’re presented with a “landing page” from which you can open the Dimensioning Calculator. The Dimensioning Calculator helps identify when you are likely to be limited by one of two common bottlenecks when executing an application on IPU systems:

  • The compute required to execute the application

  • The I/O bandwidth required to transfer the data to and from the IPUs


You can use the Dimensioning Calculator when you have an idea of an application you want to run on the IPU system, but do not have a program yet. This helps you become aware of potential bottlenecks before writing your program.


You should have a good understanding of your application, as you will need to estimate values such as input size and output size.


In the About your system section, you can choose which IPU system to run your application on via the dropdown menu, and how many IPUs your application needs using the slider.

You then need to enter:

  • Input size : The input size of your application.

  • Output size : The output size of your application.

When an IPU is selected from the list on the left of the IPU section, a card is displayed in which you can customise the configuration of each IPU in the system:

  • Number of TFLOPS per iteration : This is the number of FLoating-point OPerations per Second (FLOPS) that will be executed on this IPU for each iteration of your application (in Tebiflops).

  • Compute FLOPS ratio : A scaling factor for the IPU compute to prevent an overestimation of performance.

  • Bandwidth ratio : A scaling factor to prevent overestimation of the I/O transfer rate.


In the advanced settings, when Parallel I/O Transfer is selected, the values are not configurable per IPU, and instead are configurable for the entire system.

There are also advanced settings, which are collapsed by default:

  • I/O Transfer

    • Pipelined : Data is transferred to IPU 0 and then pipelined through to the other IPUs in the system. Data is then transferred back to the host via the last IPU in the system.

    • Parallel : Data is transferred from the host to each IPU in the system, and vice versa, at the same time.

  • Overlapping I/O : Whether the I/O to and from the IPUs is overlapped with the IPU compute.

  • Tiles reserved for I/O : When I/O is overlapped, the number of tiles on each IPU that must be reserved for I/O.

  • Transfer rate : The rate at which data is transferred between the host and the IPUs, which depends on the hardware used.

  • Number format : Whether your application primarily uses half-precision floating-point (FP16) or single-precision floating-point (FP32).

  • MAX TFLOP/S : The theoretical compute assuming 100% efficiency. This depends on the IPU system type and number format.


Click the Calculate button to view the results corresponding to the details of your IPU system and application. The results indicate whether compute or I/O to and from the IPUs is the limiting factor in your application.

  • Bottleneck classification

    • Bandwidth : Transfer time is longer than compute time

    • Compute : Compute time is longer than transfer time

The results section also includes a visualisation of your system to illustrate the structure of the IPUs and host CPU.

The visualisation includes information about each IPU:

  • Frequency : IPU frequency is a constant that depends on the system type. This value is the same for each IPU.

  • FLOPS per iteration : This is the number of FLoating-point OPerations per Second (FLOPS) that will be executed on this IPU for each iteration of your application. This value is input by the user.

  • Max FLOPS : The theoretical compute assuming 100% efficiency. This depends on the IPU system type and number format. It is customisable in the advanced settings. This value is the same for each IPU.

  • Duration : The amount of compute time spent on each IPU. It is calculated by taking the number of FLOPS in your application model and dividing it by the IPU compute (with an applied scaling factor).


Application preferences

Click on Preferences from the application’s main menu to open the Preferences dialog.

Colour theme

The PopVision™ tools support light and dark colour themes. There are three options:

  • Auto : This is the default setting, and allows the application to follow your machine’s system-wide theme setting for light or dark mode.

  • Light : This forces the application into light mode, irrespective of your machine’s theme settings.

  • Dark : This forces the application into dark mode, irrespective of your machine’s theme settings.

SSH preferences

You can store your SSH preferences in the Preferences dialog to allow authorisation when opening reports on remote machines.

  • SSH private key path : Enter the file path of your machine’s private SSH key. This filepath will be used to authenticate you on remote machines during the connection process. The default path is ~/.ssh/id_rsa/ .

  • SSH agent mode : This dropdown-list allows you to choose whether you want to specify an SSH agent socket path, and, if so, how you want to do so:

    • Disabled : Do not use an SSH agent socket.

    • Manually specify : Enter file path to the SSH agent socket in the field that appears below this option.

    • Automatically obtain from environment : Obtain the SSH agent path from an environment variable.

Scroll behaviour

Use this preference to set the default behaviour for your mouse’s scroll wheel (or using two-finger drag on on a laptop trackpad). You can choose either:

  • Scroll by default : The mouse wheel will scroll the window content up and down. Holding down the Ctrl/ Command key while using the scroll wheel then zooms the window content in and out.

  • Zoom by default : The mouse wheel zooms the window content in and out. Holding down the Ctrl/ Command key while using the scroll wheel then scrolls the window content up and down.

Experimental features

Each version of the System Analyser contains some experimental features that are hidden by default. These features are not fully release-capable, and will have limited support and may change or be removed in future. You can enable these features if you wish.

Send telemetry

When you first install the System Analyser, you will be asked for your consent for Graphcore to collect telemetry information that helps Graphcore improve the application and monitor performance. Your response to this dialog is stored in your preferences, and you can turn telemetry on or off with this option.

You can read more about the data we collect in the Graphcore Privacy Policy .

Check for updates

You can choose for the the System Analyser to periodically check for updates. If enabled, and a newer version is detected, a pop-up notification appears, prompting you to download and install it. You can choose to download and install immediately, or have the application prompt you again later. All your preferences will be transferred to the new version.

If you’ve previously delayed the update, you can manually check again at any time by selecting Check For Updates… from the application’s main menu.

Sometimes, network issues may cause a download to take too long to finish, in which case a dialog is diaplayed that allows you to cancel the current download, and retry later.

About System Analyser

To see the details of the System Analyser application, select About PopVision™ System Analyser from the application’s main menu. A dialog opens showing:

  • Version : The version number of the application.

  • Commit : The unique commit hash of this release version.

  • Date : The date and time this version was released.

  • Component version numbers : The version numbers of the main software components used by the application, including Electron, Node, Chrome and the V8 engine.

  • Installation ID : The randomly generated unique identifier to link your interactions with the application.

Release Notes

To see details of the latest features and updates to the System Analyser application, select Release Notes from the application’s Help menu or click the What’s new since the last release link in the Help panel on the Home screen.

  • You can toggle the Release Notes dialog between modal and full-screen view by clicking on the icon to the left of the window’s title.

License information

To see license details of third-party software used in the System Analyser application, select License from the application’s Help menu.

  • You can toggle the License dialog between modal and full-screen view by clicking on the icon to the left of the window’s title.

Data we collect

Graphcore’s PopVision™ tools collect data from you about the way in which you use them, as described in Send telemetry . The data we collect depends on how you interact with the tools and may change between releases. This data helps us to develop and improve the tools.

We do not obtain any personal data when you use the PopVision™ tools. On installation, we randomly generate a unique identifier to link your interactions with the application. This identifier is stored and can be seen at any time in the About PopVision™ System Analyser dialog. We also randomly generate an identifier each time you open the tool to distinguish between sessions of usage.


We do not collect any data about the reports or models you analyse, such as the names of variables and events.

Frequently Asked Questions (FAQ)

Question : How can I use the System Analyser over X-Forwarding on macOS?

Answer : To view the System Analyser over X-forwarding on macOS, follow these steps:

  1. On your macOS machine, download and install XQuartz from

  2. Start the XQuartz app, and start a terminal session from within it.

  3. In the terminal, enter ssh -X [username]@[host] , supplying the username and host for the remote machine.

  4. In the SSH session, run the following commands (assuming you want to use version 2.7.2 of the System Analyser):

$ wget
$ chmod +x ./popvision-system-analyser-2.7.2.AppImage
$ ./popvision-system-analyser-2.7.2.AppImage

The System Analyser application should then start up and work normally over X.