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:37] adminapptainer [2026/03/20 15:11] (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. +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 11: Ligne 18:
  
 Le fichier `.def` est la recette de construction du conteneur. Il décrit le système Le fichier `.def` est la recette de construction du conteneur. Il décrit le système
-de base et les logiciels à installer.+de base et les logiciels à installer. Pour cet exemple on souhaite un conteneur qui peut compiler et faire tourner un code qui nécessite la bibliothèque OpenBLAS.
  
 Créez un fichier ''openblas.def'' sur votre machine personnelle. Créez un fichier ''openblas.def'' sur votre machine personnelle.
Ligne 30: Ligne 37:
     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 42:
  
 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 61:
 %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 87:
 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 101:
  
 <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 110:
 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 149:
     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 168:
 <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 184:
     -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 201:
 </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.1774013824.txt.gz · Dernière modification : 2026/03/20 14:37 de admin