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:39] – admin | apptainer [2026/03/20 15:11] (Version actuelle) – admin | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Utilisation d' | ====== Utilisation d' | ||
| - | Cette page décrit comment | + | 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 80: | Ligne 87: | ||
| 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 86: | Ligne 101: | ||
| <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 94: | Ligne 110: | ||
| 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 132: | Ligne 149: | ||
| 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 151: | 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=~/ | IMG=~/ | ||
| Ligne 171: | Ligne 184: | ||
| -Wl, | -Wl, | ||
| - | # Exécution | + | # Exécution |
| - | for i in $(seq 1 10); do | + | apptainer exec $IMG $BIN |
| - | echo -n "Run $i : " | + | |
| - | | + | |
| - | done | + | |
| </ | </ | ||
| Ligne 190: | Ligne 201: | ||
| </ | </ | ||
| - | 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.1774013973.txt.gz · Dernière modification : 2026/03/20 14:39 de admin