Outils pour utilisateurs

Outils du site


apptainer

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
apptainer [2026/03/20 14:38] adminapptainer [2026/04/22 16:23] (Version actuelle) admin
Ligne 1: Ligne 1:
 ====== Utilisation d'Apptainer ====== ====== Utilisation d'Apptainer ======
  
-Cette page décrit comment créer et utiliser un conteneur Apptainer sur le cluster. + 
 +//Apptainer est un outil de conteneurisation permettant d’exécuter des applications dans des environnements logiciels isolés, appelés conteneurs. Apptainer s’inscrit dans la même logique que Docker, tout en étant adapté aux contraintes des infrastructures de calcul. Dans le cadre de la plateforme de calcul, il permet d'installer de manière autonome des outils et bibliothèques et de les faire tourner sur les noeuds de calcul.// 
 + 
 +Cette page décrit comment utiliser Apptainer pour faire tourner un programme C 
 +utilisant la bibliothèque OpenBLAS sur le cluster. Elle couvre la création de 
 +l'image conteneur, sa construction sur votre machine personnelle, son transfert 
 +sur le cluster, et la soumission d'un job Slurm. 
 + 
 +OpenBLAS n'étant pas installé sur les nœuds de calcul, Apptainer permet d'embarquer 
 +la bibliothèque dans une image portable et de l'utiliser sans intervention de 
 +l'administrateur système.
  
 ===== Prérequis ===== ===== Prérequis =====
Ligne 30: Ligne 40:
     export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH     export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
  
-%labels 
-    Author      votre.email@exemple.fr 
-    Version     1.0 
-    Description Image HPC avec GCC 13 et OpenBLAS 
 </code> </code>
  
Ligne 39: Ligne 45:
  
 Recommandée si vous souhaitez contrôler précisément les options de compilation Recommandée si vous souhaitez contrôler précisément les options de compilation
-(optimisations CPU, support multithread, etc.).+(optimisations CPU, support multithread, etc.), ou que votre bibliothèque n'est pas dans les packages standard.
  
 <code> <code>
Ligne 58: Ligne 64:
 %environment %environment
     export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH     export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
- 
-%labels 
-    Author      votre.email@exemple.fr 
-    Version     1.0 
-    Description Image HPC avec GCC 13 et OpenBLAS compilé depuis les sources 
 </code> </code>
  
-<note tip> +
-Compiler depuis les sources (Option B) permet d'utiliser exactement le même compilateur +
-et les mêmes options que sur le cluster, ce qui est utile pour des benchmarks de performance. +
-</note>+
  
 ===== 2. Construire l'image sur sa machine personnelle ===== ===== 2. Construire l'image sur sa machine personnelle =====
Ligne 92: Ligne 90:
 apptainer exec openblas.sif ls /usr/lib/x86_64-linux-gnu/libopenblas* apptainer exec openblas.sif ls /usr/lib/x86_64-linux-gnu/libopenblas*
 </code> </code>
 +La première commande doit afficher la version de GCC, par exemple :
 +  gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
  
 +La seconde doit afficher le chemin de la bibliothèque OpenBLAS, par exemple :
 +  /usr/lib/x86_64-linux-gnu/libopenblas.so
 +  /usr/lib/x86_64-linux-gnu/libopenblas.so.0
 +
 +Si l'une des deux commandes retourne une erreur, l'image est incomplète —
 +recommencez la construction.
 ===== 3. Transférer l'image sur le cluster ===== ===== 3. Transférer l'image sur le cluster =====
  
Ligne 98: Ligne 104:
  
 <code bash> <code bash>
-scp openblas.sif votrenom@cluster.exemple.fr:~/+scp openblas.sif login@frontalhpc2025:
 </code> </code>
  
 +/*
 <note warning> <note warning>
 Évitez de stocker les images ''.sif'' directement dans votre ''$HOME'' pour un usage Évitez de stocker les images ''.sif'' directement dans votre ''$HOME'' pour un usage
Ligne 106: Ligne 113:
 Pour des tests ponctuels, le ''$HOME'' est suffisant. Pour des tests ponctuels, le ''$HOME'' est suffisant.
 </note> </note>
 +*/
  
 ===== 4. Préparer le code source ===== ===== 4. Préparer le code source =====
  
-Voici un exemple de programme C utilisant OpenBLAS (multiplication de matrices DGEMM) :+Voici un exemple de programme C utilisant OpenBLAS (multiplication de matrices) :
  
 <code c> <code c>
Ligne 144: Ligne 152:
     double gflops = (2.0 * N * N * N) / elapsed / 1e9;     double gflops = (2.0 * N * N * N) / elapsed / 1e9;
  
-    printf("DGEMM N=%d : %.3f s | %.2f GFLOPS\n", N, elapsed, gflops);+    printf("N=%d : %.3f s | %.2f GFLOPS\n", N, elapsed, gflops);
  
     free(A); free(B); free(C);     free(A); free(B); free(C);
Ligne 163: Ligne 171:
 <code bash> <code bash>
 #!/bin/bash #!/bin/bash
-#SBATCH --job-name=bench_apptainer 
 #SBATCH --nodes=1 #SBATCH --nodes=1
 #SBATCH --ntasks=1 #SBATCH --ntasks=1
 #SBATCH --cpus-per-task=1 #SBATCH --cpus-per-task=1
-#SBATCH --account=votre_compte 
-#SBATCH --output=bench_apptainer_%j.out 
-#SBATCH --error=bench_apptainer_%j.err 
  
 IMG=~/openblas.sif IMG=~/openblas.sif
Ligne 183: Ligne 187:
     -Wl,-rpath,/usr/local/lib     -Wl,-rpath,/usr/local/lib
  
-# Exécution (10 runs) +# Exécution dans le conteneur 
-for i in $(seq 1 10); do +apptainer exec $IMG $BIN 
-    echo -n "Run $i : " +
-    apptainer exec $IMG $BIN +
-done+
 </code> </code>
  
Ligne 202: Ligne 204:
 </code> </code>
  
-Surveillez l'avancement : 
  
-<code bash> +Ensuite tout se déroule comme un job classique.
-squeue -u $USER +
-</code>+
  
-Consultez les résultats une fois le job terminé : 
- 
-<code bash> 
-cat bench_apptainer_<jobid>.out 
-</code> 
- 
-===== Résultats attendus ===== 
- 
-<code> 
-Run 1 : DGEMM N=8192 : xx.xxx s | xx.xx GFLOPS 
-Run 2 : DGEMM N=8192 : xx.xxx s | xx.xx GFLOPS 
-... 
-</code> 
  
 ===== Références ===== ===== Références =====
apptainer.1774013883.txt.gz · Dernière modification : 2026/03/20 14:38 de admin