Outils HPC
eXplor-v2 met à disposition une suite complète d'outils pour le calcul haute performance (HPC). Cette page présente les compilateurs, les implémentations MPI, les bibliothèques mathématiques et les outils de profilage et débogage.
Compilateurs
Plusieurs compilateurs sont disponibles sur eXplor-v2 pour le C, C++, Fortran et autres langages.
GCC (GNU Compiler Collection)
GCC est le compilateur open source de référence.
- Module :
module load gcc/13.4.0(exemple) ; - Langages : C, C++, Fortran ;
- Documentation : https://gcc.gnu.org.
Exemple :
module load gcc/13.4.0
gcc -O3 -o mon_programme mon_programme.c
Intel oneAPI
Intel oneAPI fournit les compilateurs Intel pour C, C++ et Fortran, optimisés pour les architectures Intel (CPU) et, pour certains composants, pour les GPU Intel.
Nouveaux compilateurs Intel (oneAPI)
Dans les versions récentes de oneAPI, les anciens compilateurs icc/icpc/ifort sont remplacés par :
icx→ compilateur C / C++ (remplaceicceticpc) ;icpx→ variante C++ deicx;ifx→ compilateur Fortran (remplaceifort).
Sur eXplor-v2, on utilise donc :
icx -O3 -o mon_programme mon_programme.c # C
icpx -O3 -o mon_programme mon_programme.cpp # C++
ifx -O3 -o mon_programme mon_programme.f90 # Fortran
Deux environnements Intel : -min et -dev
Pour simplifier la gestion des dépendances, deux modules « tout‑en‑un » sont proposés :
oneapi-all/2025.3.0-min: environnement minimal pour compiler et exécuter ;oneapi-all/2025.3.0-dev: environnement complet pour développement, débogage et profilage.
oneapi-all/2025.3.0-min : environnement minimal
Ce module charge un ensemble cohérent de composants essentiels :
module load oneapi-all/2025.3.0-min
module list
Exemple de modules chargés :
oneapi-2025.3.0/compiler-rt/2025.3.0oneapi-2025.3.0/tbb/2022.3oneapi-2025.3.0/umf/1.0.2oneapi-2025.3.0/compiler/2025.3.0oneapi-2025.3.0/compiler-intel-llvm/2025.3.0oneapi-2025.3.0/mkl/2025.3oneapi-2025.3.0/mpi/2021.17oneapi-all/2025.3.0-min
Usage recommandé :
- Compilation et exécution de codes HPC classiques (C/C++/Fortran + MPI + MKL).
- Jobs de production où l’on souhaite un environnement léger et stable.
Exemple :
module load oneapi-all/2025.3.0-min
icx -O3 -o mon_programme mon_programme.c
ifx -O3 -o mon_programme mon_programme.f90
oneapi-all/2025.3.0-dev : environnement de développement
Ce module inclut tout ce qui est dans -min, plus des outils de débogage, de profilage et de développement :
module purge
module load oneapi-all/2025.3.0-dev
module list
Exemple de modules supplémentaires par rapport à -min :
dal,dnnl,dpl: bibliothèques pour data analytics et deep learning ;intel_ipp_intel64,intel_ippcp_intel64: bibliothèques de traitement d’image et crypto ;ccl,ishmem: communications avancées pour MPI / HPC ;vtune,advisor,debugger,dev-utilities,dpct: outils de profilage, conseil, débogage et développement.
Usage recommandé :
- Développement, débogage et optimisation de codes.
- Expérimentation avec les bibliothèques avancées (DAL, DNNL, IPP, etc.).
- Sessions interactives sur nœud de développement ou de test.
Exemple :
module load oneapi-all/2025.3.0-dev
icx -g -O2 -o mon_programme mon_programme.c
# puis utilisation de vtune, advisor, gdb, etc.
Quel module choisir ?
- Production / jobs batch : privilégiez
oneapi-all/2025.3.0-min. - Développement / débogage / profilage : utilisez
oneapi-all/2025.3.0-dev.
Il n’est pas nécessaire de charger en plus les modules individuels (compiler, mkl, mpi, etc.) lorsque vous utilisez oneapi-all/… : ils sont déjà chargés de manière cohérente.
Documentation Intel oneAPI
- Portail oneAPI : https://www.intel.com/content/www/us/en/developer/tools/oneapi.html
- Compilateurs : https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpcpp-compiler.html
- MKL : https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html
- MPI : https://www.intel.com/content/www/us/en/developer/tools/mpi-library.html
NVIDIA compilers / CUDA
Le cluster met à disposition la toolchain NVIDIA pour le calcul sur GPU (CUDA) et les compilateurs CPU associés (C, C++, Fortran).
Module à charger
module load nvidia-compilers/26.5
Ce module configure :
- Les compilateurs CPU NVIDIA :
nvc→ Cnvc++→ C++nvfortran→ Fortran (F77,F90,FC)
- La toolchain CUDA :
nvcc→ compilateur CUDA C/C++cuda-gdb,nvdisasm,ptxas, etc.
- Le MPI NVIDIA (dans
…/comm_libs/mpi/bin) :mpicc,mpicxx,mpifort
- Les bibliothèques et en‑têtes :
- CUDA
- Bibliothèques mathématiques (BLAS/LAPACK NVIDIA)
- NCCL, NVSHMEM, etc.
Il n’y a pas de module nvhpc sur ce système : nvidia-compilers/26.5 joue ce rôle.
Compilation CPU avec les compilateurs NVIDIA
module load nvidia-compilers/26.5
nvc -O3 -o prog_c prog_c.c
nvc++ -O3 -o prog_cpp prog_cpp.cpp
nvfortran -O3 -o prog_f prog_f.f90
Compilation GPU (CUDA C/C++)
module load nvidia-compilers/26.5
nvcc -O3 -o prog_cuda prog_cuda.cu
Tu peux aussi utiliser les compilateurs NVIDIA avec des directives d’accélération (OpenACC, etc.) :
nvc++ -O3 -acc -gpu=cc80 -o prog_acc prog_acc.cpp
Utilisation avec MPI
Le MPI NVIDIA est inclus dans le SDK et activé par le module :
module load nvidia-compilers/26.5
mpicc -O3 -o prog_mpi prog_mpi.c
mpicxx -O3 -o prog_mpi_cpp prog_mpi_cpp.cpp
mpifort -O3 -o prog_mpi_f prog_mpi_f.f90
Exemple de lancement avec Slurm :
srun -n 16 ./prog_mpi
Documentation NVIDIA
- NVIDIA HPC SDK : https://developer.nvidia.com/hpc-sdk
- Compilateurs NVIDIA : https://docs.nvidia.com/hpc-sdk/
- CUDA Toolkit : https://docs.nvidia.com/cuda/
MPI (Message Passing Interface)
Plusieurs implémentations MPI sont disponibles pour le parallélisme distribué.
OpenMPI
OpenMPI est une implémentation MPI open source largement utilisée.
- Module :
module load openmpi/5.0.10-gcc13; - Documentation : https://www.open-mpi.org.
Exemple de compilation :
module load gcc/13.4.0
module load openmpi/5.0.10-gcc13
mpicc -o mon_programme_mpi mon_programme.c
Exemple d'exécution :
srun -n 16 ./mon_programme_mpi
Intel MPI
Intel MPI est une implémentation MPI optimisée pour les architectures Intel.
- Module :
module load intel-mpi/2021.10; - Documentation : https://www.intel.com/content/www/us/en/developer/tools/mpi-library.html.
Lorsque vous utilisez oneapi-all/2025.3.0-min ou oneapi-all/2025.3.0-dev, Intel MPI est déjà chargé via le module oneapi-2025.3.0/mpi/2021.17. Vous pouvez alors compiler et lancer avec :
module load oneapi-all/2025.3.0-min
mpicc -o mon_programme_mpi mon_programme.c
srun -n 16 ./mon_programme_mpi
Bibliothèques mathématiques
Les bibliothèques mathématiques sont essentielles pour le calcul scientifique.
BLAS et LAPACK
BLAS (Basic Linear Algebra Subprograms) et LAPACK (Linear Algebra Package) sont des bibliothèques pour l'algèbre linéaire.
- Module :
module load openblas/0.3.33-gcc13oumodule load oneapi-2025.3.0/mkl/2025.3; - Documentation :
- OpenBLAS : https://www.openblas.net ;
- Intel MKL : https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html.
Avec oneapi-all/2025.3.0-min ou oneapi-all/2025.3.0-dev, MKL est déjà chargé (oneapi-2025.3.0/mkl/2025.3).
ScaLAPACK
ScaLAPACK est une version parallèle de LAPACK pour les systèmes distribués.
- Module :
module load netlib-scalapack/2.2.3-gcc13; - Documentation : https://www.netlib.org/scalapack.
Le nom netlib-scalapack indique qu’il s’agit de la version de référence (Netlib) de ScaLAPACK, compilée avec GCC 13. Utilisez ce module lorsque vous compilez avec GCC pour assurer la compatibilité des bibliothèques.
FFTW
FFTW (Fastest Fourier Transform in the West) est une bibliothèque pour les transformées de Fourier.
- Module :
module load fftw/3.3.11-mpi-gcc13; - Documentation : https://www.fftw.org.
Outils de profilage et débogage
Les outils de profilage et débogage aident à optimiser et déboguer les applications HPC.
gdb
gdb est le débogueur GNU pour C, C++, Fortran et autres langages.
- Module :
module load gdb/17.1-gcc13-py11; - Documentation : https://www.gnu.org/software/gdb.
Lorsque vous utilisez oneapi-all/2025.3.0-dev, un débogueur Intel est également disponible via le module oneapi-2025.3.0/debugger/2025.3.0.
Valgrind
Valgrind est un outil de détection de fuites de mémoire et d'erreurs d'exécution.
- Module :
module load vvalgrind/3.27.1-mpi-gcc13-py311; - Documentation : https://valgrind.org.
Intel VTune
Intel VTune est un outil de profilage pour les applications HPC.
- Module :
module load intel-vtune/2024.0; - Documentation : https://www.intel.com/content/www/us/en/developer/tools/vtune-profiler.html.
Avec oneapi-all/2025.3.0-dev, VTune est déjà chargé via oneapi-2025.3.0/vtune/2025.7.
Bonnes pratiques
- Choisissez le compilateur approprié :
- GCC pour la portabilité ;
- Intel (
icx/ifx) pour la performance sur architectures Intel ; - NVIDIA (
nvc/nvc++/nvfortran/nvcc) pour les GPU NVIDIA et l’accélération CUDA/OpenACC.
- Choisissez l’environnement Intel adapté :
oneapi-all/2025.3.0-minpour la production ;oneapi-all/2025.3.0-devpour le développement, le débogage et le profilage.
- Optimisez avec prudence :
-O3peut améliorer les performances mais affecter la reproductibilité numérique. - Testez plusieurs implémentations MPI : OpenMPI, Intel MPI, MPI NVIDIA peuvent avoir des performances différentes selon l'application.
- Utilisez les outils de profilage : identifiez les goulots d'étranglement avant d'optimiser.