Technical notes

Technical notes describing various topics in ML development on IPUs


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

PopSparse Matrix Multiplication (Dynamic Pattern) on the IPU

A high-level description of the algorithmic design of the dynamic sparse matrix multiplication in the Graphcore PopSparse library

Porting TensorFlow 1 models to the IPU

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

Model Parallelism on the IPU with TensorFlow: Sharding and Pipelining

Ways of parallelising TensorFlow models on IPU hardware

Switching from GPUs to IPUs for Machine Learning Models

High-level overview of the programming changes required when switching from GPUs to IPUs.


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


Graphcore OpenStack Reference Design for IPU-POD Systems

A reference configuration of an IPU‑POD64 deployed with OpenStack management software

Scaling AI with Graphcore and Pure Storage

An example reference architecture, developed with Pure Storage, using FlashBlade storage with the IPU-POD

Switched GW-Links in large scale Pod systems

Using switched GW-Links to connect IPU-Machines in large-scale switched Pod systems

Graphcore IPU Based Systems with Weka Data Platform

An example reference architecture has been developed in partnership with Weka using the Weka data platform for AI with a Graphcore Pod.