Technical notes
Technical notes describing various topics in ML development on IPUs
Implementation
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.
Optimisation
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
Hardware
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.