Graphcore
Graphcore Intelligence Processing Unit (IPU) is a highly parallel processor which is specifically designed to accelerate Machine Learning and Artificial Intelligence applications. IPU has a unique memory architecture which allows it to hold much more data within IPU than other processors. IPU-Machine is a compute platform consisting of 1U chassis that includes 4 IPUs and up to 260 GB of memory. IPU-Machines can also be used to make larger compute systems. Multiple IPUs can be used together on a single task where they communicate through IPU-Fabric as shown in the image below.

Source: Official Documentation
More information about Graphcore can be found on their official webpage and in this programmer’s guide.
How to Access
Access to Graphcore is currently possible through our Future Technology Platform (FTP). You can contact via support and use FTP in the subject. For this an account is required (usual GWDG account, or AcademicCloudID for external users), that then needs to be explicitly enabled to access the FTP. For more information, check our documentation on getting an account.
Access requests currently run through KISSKI (researchers and companies) and NHR (researchers at Universities only). Please consult their documentation and eventually request a project to test and utilize Graphcore. If you have questions, you can also reach out through one of our support channels .
How to Use
Graphcore provides an Poplar SDK that helps in creating graph software for machine intelligence applications. Poplar integrates with TensorFlow, PyTorch which allows developers to use their existing development tools and models.
In the following, we will see how to train a model using MNIST data.
- Once you have access to the FTP nodes, you can use the following command to login to FTP;
ssh <username>@login.ftp.hpc.gwdg.de
Make you are connected to VPN
- Download the Poplar SDK
wget -O 'poplar_sdk-rhel_8-3.4.0-69d9d03fd8.tar.gz' 'https://downloads.graphcore.ai/direct?package=poplar-poplar_sdk_rhel_8_3.4.0_69d9d03fd8-3.4.0&file=poplar_sdk-rhel_8-3.4.0-69d9d03fd8.tar.gz'
tar -xvzf poplar_sdk-rhel_8-3.4.0-69d9d03fd8.tar.gz
- Enable Poplar SDK
cd poplar_sdk-rhel_8-3.4.0+1507-69d9d03fd8
source enable
Poplar-SDK must be enabled everytime you login. To avoid doing it everytime, you can also add it to .bashrc
.
- Test whether it is enabled or not by running the following command:
popc --version` # POPLAR version 3.4.0 (0a785c2cb5)
- Running example code on Graphcore. Here, we will show how to train MNIST model on Graphcore using PyTorch:
git clone https://github.com/graphcore/examples.git
cd examples/tutorials/simple_applications/pytorch/mnist/
salloc --partition=graphcore` # learn about `salloc` [here](/how_to_use/slurm).
conda activate torch_env` # next section explains how to create the virtual environment
python mnist_poptorch.py
Setup for TensorFlow
- Create conda environment:
conda create -n tensor_env python=3.9
conda activate tensor_env
pip install pip==23.1
cd poplar_sdk-rhel_8-3.4.0+1507-69d9d03fd8
pip install tensorflow-2.6.3+gc3.4.0+253429+b2127bbabc0+amd_znver1-cp39-cp39-linux_x86_64.whl
pip install keras-2.6.0+gc3.4.0+253427+164c0e60-py2.py3-none-any.whl
pip install ipu_tensorflow_addons-2.6.3+gc3.4.0+253427+6dcfc49-py3-none-any.whl
It must be Python version 3.9 and pip version 23.1.
- Test the installation with the following code:
python3 -c "from tensorflow.python import ipu"
Setup for PyTorch
- Create conda environment:
conda create -n torch_env python=3.9
conda activate torch_env
pip install pip==23.1
cd poplar_sdk-rhel_8-3.4.0+1507-69d9d03fd8
pip install poptorch-3.4.0+114286_3d9956d403_rhel_8-cp39-cp39-linux_x86_64.whl
It must be Python version 3.9 and pip version 23.1.
- Test the installation with the following code:
python3 -c "import poptorch; print(poptorch.__version__)"