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 :
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
Vous pouvez utiliser une image Apptainer avec une installation CUDA intégrée.
Notez que vous devez d’abord créer l’image et disposer des droits root pour le faire (sur votre poste de travail par exemple), puis copier l’image sur vos espaces de stockage et enfin l’utiliser dans un job.
Si vous utilisez Python, vous pouvez également installer CUDA via les paquets Python, ou même choisir une version de CUDA lorsque vous utilisez des frameworks tels que PyTorch, JAX, etc.
Attention
Dans tous les cas, vous devrez respecter la matrice de compatibilité drivers/CUDA ; en d’autres termes, les anciennes versions de CUDA ne sont plus prises en charge !
Veuillez consulter la matrice de compatibilité NVIDIA et contacter notre support utilisateurs pour obtenir toutes les informations nécessaires.
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.