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

Prochaine révision
Révision précédente
apptainer [2026/03/20 14:36] – créée adminapptainer [2026/03/20 15:11] (Version actuelle) admin
Ligne 1: Ligne 1:
-====== Utilisation d'Apptainer avec OpenBLAS ======+====== Utilisation d'Apptainer ======
  
-Cette page décrit comment créer et utiliser un conteneur Apptainer contenant OpenBLAS +Cette page décrit comment utiliser Apptainer pour faire tourner un programme C 
-pour soumettre des jobs de calcul sur le cluster.+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 =====
  
   * Avoir Apptainer installé sur sa machine Linux personnelle (voir [[https://apptainer.org/docs/user/latest/quick_start.html|documentation officielle]])   * Avoir Apptainer installé sur sa machine Linux personnelle (voir [[https://apptainer.org/docs/user/latest/quick_start.html|documentation officielle]])
-  * Avoir accès au cluster via SSH+
  
 ===== 1. Créer le fichier de définition (.def) ===== ===== 1. Créer le fichier de définition (.def) =====
  
 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 31: 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 40: 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 59: 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 93: 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 99: 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 107: 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 145: 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 164: 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 184: 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 203: 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.1774013772.txt.gz · Dernière modification : 2026/03/20 14:36 de admin