IMB > cellule > Calcul et Développement

keops sur curta, plafrim, et à l’IMB

keops sur curta

Recette testée le 23/1/2020 pour faire tourner keops sur Curta/mcia

# go on a gpu node
srun -p gpu --gres=gpu:1 --pty bash

# active some debug flags in case...
export PYKEOPS_VERBOSE=1
export PYKEOPS_BUILD_TYPE="Debug"

module purge
module load python/3.7.2 cmake/3.14.3 gcc/7.3.0 cuda/10.0

## (first time) remove old/cache install
rm -rf ~/.local/lib/python3.7
rm -rf ~/.cache/pykeops-1.2-cpython-37

# (first time) ensure we use the right python/pip versions !
#ln -s /gpfs/softs/contrib/apps/python/3.7.2/bin/python3.7 $HOME/bin/python
#ln -s /gpfs/softs/contrib/apps/python/3.7.2/bin/pip3.7    $HOME/bin/pip
ln -s `which python3.7` $HOME/bin/python
ln -s `which pip3.7`    $HOME/bin/pip

# to put in .bashrc for regular use
export PATH=$HOME/bin:$PATH

pip install --user pykeops

# version torch/torchvision spéciale CUDA 10.0
pip install --user torch==1.4.0+cu100 torchvision==0.5.0+cu100 -f https://download.pytorch.org/whl/torch_stable.html

# create a test example
cat > keops.py <<'EOF'
import numpy as np
import pykeops.numpy as pknp

import pykeops
pykeops.build_type = 'Debug'
pykeops.verbose = True

x = np.arange(1, 10).reshape(-1, 3).astype('float32')
y = np.arange(3, 9).reshape(-1, 3).astype('float32')

my_conv = pknp.Genred('SqNorm2(x - y)', ['x = Vi(3)', 'y = Vj(3)'])
print(my_conv(x, y))
EOF

# run it !
python keops.py

keops sur plafrim

recette testée le 13/02/2020 pour faire marcher keops sur PlaFRIM3

srun -C p100  --pty bash
# ou , pour ne pas choisir le type de gpu (p100,v100,...)
# srun -C gpu --pty bash

# si vous utilisez le flag --exclusive
# pensez à utiliser toutes les cartes GPU en jouant sur la variable
# CUDA_VISIBLE_DEVICES à 0, 1 ou plus pour accéder à la carte correspondante
#      CUDA_VISIBLE_DEVICES=0 programme1
#      CUDA_VISIBLE_DEVICES=1 programme2

# si besoin, virer les infos des caches / et tous les modules python => les reinstaller
rm -rf ~/.local/lib/python3.6
rm -rf ~/.cache/pykeops-1.2-cpython-36

# si besoin pour avoir du debug + de la verbosité
export PYKEOPS_VERBOSE=1
export PYKEOPS_BUILD_TYPE="Debug"

module purge
## gcc 8 avec cuda 10.2 !
module load language/python-keras/3.6.9 build/cmake/3.15.3 compiler/gcc/8.2.0 compiler/cuda/10.2

python keops.py

keops à l’IMB sur diskless

recette testée le 14/01/2020

export CC=gcc-9
python3.5 -m pip install --user pykeops

python3.5 keops.py