Software Documents

Licensed Software

This software is made available under the terms of the Graphcore End User License Agreement (EULA) and the Graphcore Container License Agreement. Please ensure you have read and accept the terms of the corresponding license before using the software. The Graphcore EULA applies unless indicated otherwise.

There are release notes for each software release.

PyTorch

PyTorch for the IPU: User Guide

User guide and API reference for PyTorch on the IPU

PyTorch Geometric for the IPU: User Guide

User guide and API reference for PyTorch Geometric on the IPU

PyTorch technical notes

Memory and Performance Optimisation on the IPU

Optimising high-performance machine learning models running on the IPU

Creating Custom Operations for the IPU

An overview of the steps for implementing a custom op in each of the frameworks available in the Poplar SDK

Optimising Temporary Memory Usage for Convolutions and Matmuls on the IPU

Using the “available memory proportion” option to optimise memory use or performance

TensorFlow

Warning

The versions of TensorFlow included in Poplar SDK 2.5 and earlier are not compatible with protobuf version 4 (see TensorFlow issue #56077). When you install a TensorFlow wheel from the Poplar SDK, you must ensure you have a compatible version of protobuf, downgrading if necessary. See the getting started guides for more information.

Targeting the IPU from TensorFlow 1

User guide and API reference for the IPU implementation of TensorFlow 1

Targeting the IPU from TensorFlow 2

User guide and API reference for the IPU implementation of TensorFlow 2

Keras with IPUs

The Graphcore implementation of TensorFlow 2 includes Keras support for IPUs

TensorFlow technical notes

Porting TensorFlow 2 Models Quick Start

A short description of how to port TensorFlow 2 models to the IPU, including code snippets to help

Porting TensorFlow 1 models to the IPU

A practical guide to porting TensorFlow models to the IPU using the Poplar SDK.

Memory and Performance Optimisation on the IPU

Optimising high-performance machine learning models running on the IPU

Creating Custom Operations for the IPU

An overview of the steps for implementing a custom op in each of the frameworks available in the Poplar SDK

Optimising for the IPU: Computational Graph Recompilation and Executable Switching in TensorFlow

Strategies to minimise recompilation when running code on the IPU

Model Parallelism on the IPU with TensorFlow: Sharding and Pipelining

Ways of parallelising TensorFlow models on IPU hardware

Optimising Temporary Memory Usage for Convolutions and Matmuls on the IPU

Using the “available memory proportion” option to optimise memory use or performance

PopART

PopXL User Guide and API (experimental)

User Guide and API reference for working with PopXL

PopART User Guide

The Poplar Advanced Runtime (PopART) for importing and executing models using the ONNX format

PopART technical notes

Memory and Performance Optimisation on the IPU

Optimising high-performance machine learning models running on the IPU

Creating Custom Operations for the IPU

An overview of the steps for implementing a custom op in each of the frameworks available in the Poplar SDK

Optimising Temporary Memory Usage for Convolutions and Matmuls on the IPU

Using the “available memory proportion” option to optimise memory use or performance

Profiling and debugging

PopVision Graph Analyser User Guide

The Graph Analyser can be downloaded from the PopVision tools web page

PopVision System Analyser User Guide

The System Analyser can be downloaded from the PopVision tools web page

PopVision Analysis Library (libpva) User Guide

The PopVision analysis library can be used for programmatic analysis of Poplar profiling information

PopVision Trace Instrumentation Library

The PopVision trace instrumentation library provides functions to capture data used by the PopVision System Analyser

Optimisation technical notes

Memory and Performance Optimisation on the IPU

Optimising high-performance machine learning models running on the IPU

Optimising Temporary Memory Usage for Convolutions and Matmuls on the IPU

Using the “available memory proportion” option to optimise memory use or performance

Optimising for the IPU: Computational Graph Recompilation and Executable Switching in TensorFlow

Strategies to minimise recompilation when running code on the IPU

Pre-Training and Fine-Tuning BERT for the IPU

BERT-Large implementation on Graphcore IPU-POD systems, using both TensorFlow and PyTorch

Poplar graph programming framework

Poplar and PopLibs User Guide

Information on how to use the Poplar graph programming tools to write code for the IPU

Poplar and PopLibs API Reference

Description of the classes and functions in the Poplar and PopLibs libraries

GCL User Guide and API Reference

Description of the classes and functions in the GCL library

Tile Vertex Instruction Set Architecture

Tile vertex instruction set architecture (ISA) documents for the IPU. This contains the subset of instructions used by the worker threads.

Poplar technical notes

Memory and Performance Optimisation on the IPU

Optimising high-performance machine learning models running on the IPU

Optimising Temporary Memory Usage for Convolutions and Matmuls on the IPU

Using the “available memory proportion” option to optimise memory use or performance

Open source software

TensorFlow 2 for IPU

Keras for TensorFlow 2 on the IPU

IPU TensorFlow Addons for TensorFlow 2 on the IPU

TensorFlow 1 for IPU

IPU TensorFlow Addons for TensorFlow 1 on the IPU

Poprithms

A library of graph algorithms used by the ML frameworks