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 30: | Ligne 40: | ||
| export LD_LIBRARY_PATH=/ | export LD_LIBRARY_PATH=/ | ||
| - | %labels | ||
| - | Author | ||
| - | Version | ||
| - | Description Image HPC avec GCC 13 et OpenBLAS | ||
| </ | </ | ||
| 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, | + | (optimisations CPU, support multithread, |
| < | < | ||
| Ligne 58: | 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 92: | 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 98: | 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 106: | 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 144: | 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 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=~/ | IMG=~/ | ||
| Ligne 183: | 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 202: | 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.1774013883.txt.gz · Dernière modification : 2026/03/20 14:38 de admin