5.2.4 : Le singularity_run.sh
Ce script va nous permettre de compiler et exécuter notre programme de test avec Apptainer noteQui s'appelle encore Singularity sur MUST.
Nous allons définir deux dossiers à la racine de notre image Apptainer :
- /source : les sources de notre projet
- /build : le dossier de comilation de notre projet
Voici un exemple où on relie un dossier extérieur noteDonc, du système de fichiers courrant à l'image Apptainer noteDonc, au système de fichiers à l'intérieur de l'image Apptainer
apptainer run --bind /path/to/source/:/source --bind /path/to/build/:/build image.sif commandÉcrivons le script singularity_run.sh :
1 |
#!/bin/bash
|
Commençons par le prefix de notre programme (si on considère que nous lancerons nos jobs depuis les sources) :
1 |
PREFIX=${PWD}
|
On affiche sur quelle machine on tourne :
1 |
echo "Used machine is $(uname -a)" |
On définit un dossier build unique pour que plusieurs jobs ne se marchent pas dessus :
1 2 3 4 5 6 7 |
BUILD_DIR="${PREFIX}/build_cmake_$(uname -n)" if [ -d ${BUILD_DIR} ] then echo "Remove existing directory $BUILD_DIR" rm -fr ${BUILD_DIR} fi |
Créons notre dossier de compilation :
1 2 |
mkdir -p ${BUILD_DIR} echo "BUILD_DIR = '${BUILD_DIR}'" |
Définition notre image Apptainer :
1 |
CONTAINER_IMAGE="./ubuntu2204-TBB.sif"
|
On appelle le script d'installation que nous définirons dans la section 5.2.5 :
1 |
singularity run --bind $PREFIX:/source --bind ${BUILD_DIR}:/build ${CONTAINER_IMAGE} /source/install_singularity.sh |
Le singularity_run.sh complet :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/bin/bash PREFIX=${PWD} echo "Used machine is $(uname -a)" BUILD_DIR="${PREFIX}/build_cmake_$(uname -n)" if [ -d ${BUILD_DIR} ] then echo "Remove existing directory $BUILD_DIR" rm -fr ${BUILD_DIR} fi mkdir -p ${BUILD_DIR} echo "BUILD_DIR = '${BUILD_DIR}'" CONTAINER_IMAGE="./ubuntu2204-TBB.sif" singularity run --bind $PREFIX:/source --bind ${BUILD_DIR}:/build ${CONTAINER_IMAGE} /source/install_singularity.sh |