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/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 35: 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 54: 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 88: 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 94: 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 102: 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 140: 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 159: 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 179: 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 198: 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.1774013915.txt.gz · Dernière modification : 2026/03/20 14:38 de admin