Aller au contenu principal

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++ (remplace icc et icpc) ;
  • icpx → variante C++ de icx ;
  • ifx → compilateur Fortran (remplace ifort).

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 :

  1. oneapi-2025.3.0/compiler-rt/2025.3.0
  2. oneapi-2025.3.0/tbb/2022.3
  3. oneapi-2025.3.0/umf/1.0.2
  4. oneapi-2025.3.0/compiler/2025.3.0
  5. oneapi-2025.3.0/compiler-intel-llvm/2025.3.0
  6. oneapi-2025.3.0/mkl/2025.3
  7. oneapi-2025.3.0/mpi/2021.17
  8. oneapi-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​

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 → C
    • nvc++ → 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​

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.

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.

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.

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.

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.

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.

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.

Intel VTune​

Intel VTune est un outil de profilage pour les applications HPC.

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-min pour la production ;
    • oneapi-all/2025.3.0-dev pour le développement, le débogage et le profilage.
  • Optimisez avec prudence : -O3 peut 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.

Pages associées​