apptainer
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| apptainer [2026/03/20 14:38] – admin | apptainer [2026/04/22 16:23] (Version actuelle) – admin | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Utilisation d' | ====== Utilisation d' | ||
| - | Cette page décrit comment | + | |
| + | //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' | ||
| + | |||
| + | Cette page décrit comment utiliser | ||
| + | utilisant la bibliothèque OpenBLAS sur le cluster. Elle couvre la création de | ||
| + | l' | ||
| + | sur le cluster, et la soumission d'un job Slurm. | ||
| + | |||
| + | OpenBLAS n' | ||
| + | la bibliothèque dans une image portable et de l' | ||
| + | l' | ||
| ===== Prérequis ===== | ===== Prérequis ===== | ||
| Ligne 35: | 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, | + | (optimisations CPU, support multithread, |
| < | < | ||
| Ligne 54: | Ligne 64: | ||
| %environment | %environment | ||
| export LD_LIBRARY_PATH=/ | export LD_LIBRARY_PATH=/ | ||
| - | |||
| - | %labels | ||
| - | Author | ||
| - | Version | ||
| - | Description Image HPC avec GCC 13 et OpenBLAS compilé depuis les sources | ||
| </ | </ | ||
| - | <note tip> | + | |
| - | Compiler depuis les sources (Option B) permet d' | + | |
| - | et les mêmes options que sur le cluster, ce qui est utile pour des benchmarks de performance. | + | |
| - | </ | + | |
| ===== 2. Construire l' | ===== 2. Construire l' | ||
| Ligne 88: | Ligne 90: | ||
| apptainer exec openblas.sif ls / | apptainer exec openblas.sif ls / | ||
| </ | </ | ||
| + | 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 : | ||
| + | / | ||
| + | / | ||
| + | |||
| + | Si l'une des deux commandes retourne une erreur, l' | ||
| + | recommencez la construction. | ||
| ===== 3. Transférer l' | ===== 3. Transférer l' | ||
| Ligne 94: | Ligne 104: | ||
| <code bash> | <code bash> | ||
| - | scp openblas.sif | + | scp openblas.sif |
| </ | </ | ||
| + | /* | ||
| <note warning> | <note warning> | ||
| Évitez de stocker les images '' | Évitez de stocker les images '' | ||
| Ligne 102: | Ligne 113: | ||
| Pour des tests ponctuels, le '' | Pour des tests ponctuels, le '' | ||
| </ | </ | ||
| + | */ | ||
| ===== 4. Préparer le code source ===== | ===== 4. Préparer le code source ===== | ||
| - | Voici un exemple de programme C utilisant OpenBLAS (multiplication de matrices | + | Voici un exemple de programme C utilisant OpenBLAS (multiplication de matrices) : |
| <code c> | <code c> | ||
| Ligne 140: | Ligne 152: | ||
| double gflops = (2.0 * N * N * N) / elapsed / 1e9; | double gflops = (2.0 * N * N * N) / elapsed / 1e9; | ||
| - | printf(" | + | printf(" |
| free(A); free(B); free(C); | free(A); free(B); free(C); | ||
| Ligne 159: | 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=~/ | IMG=~/ | ||
| Ligne 179: | Ligne 187: | ||
| -Wl, | -Wl, | ||
| - | # Exécution | + | # Exécution |
| - | for i in $(seq 1 10); do | + | apptainer exec $IMG $BIN |
| - | echo -n "Run $i : " | + | |
| - | | + | |
| - | done | + | |
| </ | </ | ||
| Ligne 198: | Ligne 204: | ||
| </ | </ | ||
| - | Surveillez l' | ||
| - | <code bash> | + | Ensuite tout se déroule comme un job classique. |
| - | squeue -u $USER | + | |
| - | </ | + | |
| - | Consultez les résultats une fois le job terminé : | ||
| - | |||
| - | <code bash> | ||
| - | cat bench_apptainer_< | ||
| - | </ | ||
| - | |||
| - | ===== Résultats attendus ===== | ||
| - | |||
| - | < | ||
| - | Run 1 : DGEMM N=8192 : xx.xxx s | xx.xx GFLOPS | ||
| - | Run 2 : DGEMM N=8192 : xx.xxx s | xx.xx GFLOPS | ||
| - | ... | ||
| - | </ | ||
| ===== Références ===== | ===== Références ===== | ||
apptainer.1774013915.txt.gz · Dernière modification : 2026/03/20 14:38 de admin