Calcul HPC et GPU

Configuration MPI

Dans le cas du calcul parallèle, l’interface de gestion des processus (PMI - Process Management Interface) permet au processus MPI d’interagir avec le gestionnaire de processus en ajoutant des informations à la base de données (opérations « put ») et en interrogeant les informations ajoutées par d’autres processus dans l’application (opérations « get »).

Des PMIs sont disponibiles dans notre installation SLURM. Pour connaître la liste des PMIs disponibles, lancez la commande suivante depuis un serveur interactif :

% srun --mpi=list

La correspondence entre le PMI et le type de MPI souhaité est indiquée dans le Guide MPI de SLURM.

Pour implementer du MPI dans vos calculs parallèles veuiller ajouter l’une des syntaxes ci-dessous dans le script job.sh que vous soumettrez :

Utilisant le logiciel installé sur notre système :
module load openmpi
mpirun -np 4 <path>/<script openmpi>
Utilisant le PMI installé dans SLURM :
srun --mpi=pmix -n 4 <path>/<script openmpi>

Utiliser CUDA

Le CC-IN2P3 fournit un environnement Nvidia complet (pilotes, bibliothèques CUDA, CUDnn et NCCL), et le met à jour régulièrement. Pour connaître la version actuelle de CUDA, utilisez la commande suivante à partir d’un serveur GPU interactif :

% nvidia-smi

Les bibliothèques CUDA ne cessant de devenir de plus en plus volumineuses, il n’est pas possible de conserver toutes les versions de CUDA sur les serveurs GPU. C’est pourquoi une seule version est conservée afin de garantir la compatibilité des bibliothèques CUDA avec les drivers.

Si vous avez besoin d’utiliser une version spécifique de CUDA, les options suivantes s’offrent à vous :

Vous pouvez installer votre propre version dans le répertoire THRONG de votre groupe. Ensuite, dans votre job, il vous suffira d’indiquer le chemin d’accès à votre installation CUDA. Par exemple (il n’est pas nécessaire d’être root) :

% wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run
% sh cuda_12.4.0_550.54.14_linux.run --toolkit --installpath=\$THRONG_DIR/cuda-12.4/

Choisissez ensuite d’installer uniquement CUDA (décochez les drivers). Les variables d’environnement à définir dans la tâche seront les suivantes :

export PATH=$HOME/cuda-12.4/bin:$PATH
export LD_LIBRARY_PATH=$HOME/cuda-12.4/lib64:$LD_LIBRARY_PATH

Pour compiler votre code CUDA, connectez-vous sur un serveur GPU interactif et utiliser le compilateur nvcc :

% /usr/local/cuda-12/bin/nvcc

Une fois le code compilé, nous vous conseillons de sortir du serveur interactif et de soumettre vos jobs avec sbatch.

Note

Pour le profilage des jobs GPU, CUPTI (CUDA Profiling Tools Interface) est installé sur nos machines de calcul. CUPTI étant directement lié à CUDA, la version installée est la même.