Skip to main content

Compilling PyTorch on Power9 ppc64le

·1 min

1. Environment Preparation #

# Prepare Environment
## Create Python Environment
micromamba create -y -n pytorch python=3.12

## Create Folders
mkdir -p ~/Software/ppc64le/magma
mkdir -p ~/Wheels/ppc64le

## Set qQuad Precision (Float128)
export CFLAGS="-mfloat128"
export LDFLAGS="-lquadmath"

2. Installing Magma #

# Magma
cd ~/Wheels/ppc64le

## Clone Magma (v2.9.0)
git clone https://github.com/icl-utk-edu/magma.git
cd magma
git checkout v2.9.0

## Config Magma
cd magma
echo -e 'BACKEND = cuda\nGPU_TARGET = Volta Turing' > make.inc
make generate

## Build & Install Magma
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=~/Software/ppc64le/magma -DGPU_TARGET='sm_70;sm_75' ..
make -j16
make install

3. Installing PyTorch #

# PyTorch
cd ~/Wheels/ppc64le

## Clone PyTorch (v2.8.0)
git clone https://github.com/pytorch/pytorch.git
cd pytorch
git checkout v2.8.0

## Git Pull SubModule
git submodule sync
git submodule update --init --recursive

## Install CMake and Ninja
micromamba install cmake ninja
pip install -r requirements.txt

Create File .ci/docker/common/install_magma_ppc64le.sh

#!/usr/bin/env bash
set -eou pipefail

cuda_version_nodot=${1/./}
anaconda_dir=${CONDA_PREFIX:-"$(dirname $(which micromamba))/../"}

(
    cp -r /users/congye/Software/ppc64le/magma/include/* "${anaconda_dir}/include/"
    cp -r /users/congye/Software/ppc64le/magma/lib/* "${anaconda_dir}/lib"
)

Continue running the command

## Install Magma to Virtual Environment
.ci/docker/common/install_magma_ppc64le.sh 12.4

## Install PyTorch
export CMAKE_PREFIX_PATH="${CONDA_PREFIX:-'$(dirname $(which micromamba))/../'}:${CMAKE_PREFIX_PATH}"
python setup.py develop