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/10/16 12:56] – adminapptainer [2026/11/02 10:20] (Version actuelle) – admin
Ligne 43: Ligne 43:
  
 Pour installer d'autres logiciels, ajoutez simplement leurs paquets Ubuntu à la ligne ''apt-get install''. Pour installer d'autres logiciels, ajoutez simplement leurs paquets Ubuntu à la ligne ''apt-get install''.
 +
 +**Remarque**. Si votre logiciel n'existe pas dans le repo d'ubuntu et doit être compilé à la main, voir la section "pour aller plus loin" en bas de cette page.
 +
 +**Astuce** : demandez à une [[https://ia.limos.fr/ |IA générative]] de créer les fichiers .def pour vous (dans chat choisir dev-model par ex.)
  
 ==== 4. Construire l'image ==== ==== 4. Construire l'image ====
Ligne 62: Ligne 66:
  
 ==== 5. Utiliser l'image ==== ==== 5. Utiliser l'image ====
 +
 +Rangez l'image dans le répertoire où vous souhaitez l'utiliser (ou donnez son chemin absolu à l'utilisation). 
  
 Le principe : on préfixe chaque commande par ''apptainer exec openblas.sif''. La commande s'exécute alors //dans// le conteneur. Le principe : on préfixe chaque commande par ''apptainer exec openblas.sif''. La commande s'exécute alors //dans// le conteneur.
Ligne 67: Ligne 73:
 Exemple : on crée  [[#exemple_de_programme_c_avec_openblas|un petit code C]] qui utilise Openblas (donné en bas de page) : enregistrez-le sous le nom ''mon_code.c''. Exemple : on crée  [[#exemple_de_programme_c_avec_openblas|un petit code C]] qui utilise Openblas (donné en bas de page) : enregistrez-le sous le nom ''mon_code.c''.
  
-Compilez-le avec l'image :+Compilez-le en utilisant votre image (il suffit donc de préfixer gcc par ''apptainer exec openblas.sif'')
  
 <code bash> <code bash>
Ligne 97: Ligne 103:
  
 ===== Pour aller plus loin ===== ===== Pour aller plus loin =====
 +
 +==== Utiliser l'image en interactif ====
 +
 +Sur un serveur en accès direct (voir [[accesdirect|travailler en accès direct]]), vous pouvez ouvrir un terminal à l'intérieur de l'image et y travailler comme sur votre PC :
 +
 +<code bash>
 +apptainer shell openblas.sif
 +</code>
 +
 +Tapez ''exit'' pour sortir de l'image. Sur un serveur avec GPU, ajoutez l'option ''%%--nv%%''.
 +
  
 ==== Comprendre le fichier .def ==== ==== Comprendre le fichier .def ====
Ligne 118: Ligne 135:
 %post %post
     apt-get update -y     apt-get update -y
-    apt-get install -y gcc-13 libopenblas-dev+    apt-get install -y gcc libopenblas-dev
 </code> </code>
  
Ligne 125: Ligne 142:
 === Option B — Compilation d'OpenBLAS depuis les sources === === Option B — Compilation d'OpenBLAS depuis les sources ===
  
-À utiliser si vous voulez contrôler précisément les options de compilation (optimisations CPU, multithread, etc.), ou si la bibliothèque dont vous avez besoin n'existe pas en paquet Ubuntu.+A utiliser si vous voulez contrôler précisément les options de compilation (optimisations CPU, multithread, etc.), ou si la bibliothèque dont vous avez besoin n'existe pas en paquet Ubuntu.
  
 <code> <code>
Ligne 133: Ligne 150:
 %post %post
     apt-get update -y     apt-get update -y
-    apt-get install -y gcc-13 make wget tar ca-certificates+    apt-get install -y gcc make wget tar ca-certificates
  
     cd /tmp     cd /tmp
Ligne 139: Ligne 156:
     tar xzf OpenBLAS-0.3.26.tar.gz     tar xzf OpenBLAS-0.3.26.tar.gz
     cd OpenBLAS-0.3.26     cd OpenBLAS-0.3.26
-    make CC=gcc-13 DYNAMIC_ARCH=1+    make DYNAMIC_ARCH=1
     make PREFIX=/usr/local install     make PREFIX=/usr/local install
  
Ligne 152: Ligne 169:
   * La compilation depuis les sources est plus longue (de l'ordre de plusieurs dizaines de minutes).   * La compilation depuis les sources est plus longue (de l'ordre de plusieurs dizaines de minutes).
  
-Avec cette option, il faut indiquer au compilateur où trouver les fichiers. Dans le script Slurm, remplacez la ligne de compilation par :+Avec cette option, la bibliothèque n'est pas au même endroit. Pour vérifier l'image (étape 4), utilisez :
  
 <code bash> <code bash>
-apptainer exec $IMG gcc-13 -O3 -march=native -o $BIN $SRC \ +apptainer exec openblas.sif ls /usr/local/lib/libopenblas.so
-    -I/usr/local/include \ +
-    -L/usr/local/lib \ +
-    -lopenblas \ +
-    -Wl,-rpath,/usr/local/lib+
 </code> </code>
 +
 +Et pour compiler votre programme (étape 5), indiquez au compilateur où trouver les fichiers :
 +
 +<code bash>
 +apptainer exec openblas.sif gcc -o mon_exe mon_code.c -I/usr/local/include -L/usr/local/lib -lopenblas -Wl,-rpath,/usr/local/lib
 +</code>
 +
 +Le script Slurm ne change pas.
  
 ==== À propos de l'image .sif ==== ==== À propos de l'image .sif ====
Ligne 166: Ligne 187:
 Le fichier ''.sif'' est une image au format SquashFS : compressée, en lecture seule et portable. Il contient un système Ubuntu complet avec GCC et OpenBLAS. Vous pouvez le copier, le partager avec un collègue ou le réutiliser pour d'autres projets. Le fichier ''.sif'' est une image au format SquashFS : compressée, en lecture seule et portable. Il contient un système Ubuntu complet avec GCC et OpenBLAS. Vous pouvez le copier, le partager avec un collègue ou le réutiliser pour d'autres projets.
  
-L'option ''--fakeroot'' permet de construire l'image sans être root : à l'intérieur du conteneur, pendant la construction, vous êtes vu comme root (ce qui permet ''apt-get install''), mais pas sur le frontal.+L'option ''%%--fakeroot%%'' permet de construire l'image sans être root : à l'intérieur du conteneur, pendant la construction, vous êtes vu comme root (ce qui permet ''apt-get install''), mais pas sur le frontal.
  
 Pour modifier l'image (ajouter un paquet, par exemple), modifiez le ''.def'' puis relancez la commande ''apptainer build'' de l'étape 4. Si le fichier ''.sif'' existe déjà, Apptainer demande confirmation avant de l'écraser. Pour modifier l'image (ajouter un paquet, par exemple), modifiez le ''.def'' puis relancez la commande ''apptainer build'' de l'étape 4. Si le fichier ''.sif'' existe déjà, Apptainer demande confirmation avant de l'écraser.
Ligne 184: Ligne 205:
 ==== Exemple de programme C avec OpenBLAS ==== ==== Exemple de programme C avec OpenBLAS ====
  
-Programme de test (multiplication de matrices), à placer dans ''mon_projet/bench_dgemm.c'' :+Programme de test (multiplication de matrices), à enregistrer sous ''mon_code.c'' dans le répertoire ''APPTAINER'' :
  
 <code c> <code c>
-/* bench_dgemm.c */+/* mon_code.c */
 #include <stdio.h> #include <stdio.h>
 #include <stdlib.h> #include <stdlib.h>
Ligne 230: Ligne 251:
   * [[https://apptainer.org/docs/|Documentation officielle Apptainer]]   * [[https://apptainer.org/docs/|Documentation officielle Apptainer]]
   * [[https://www.openblas.net/|Site officiel OpenBLAS]]   * [[https://www.openblas.net/|Site officiel OpenBLAS]]
- 
apptainer.1792155406.txt.gz · Dernière modification : 2026/10/16 12:56 de admin