Comment utiliser l'image Apptainer de GPUMD ?
En préalable de ces explications, il est nécessaire d’avoir installé Apptainer sur votre machine ; voir ce lien pour plus de détails.
Ce tutoriel détaille l’utilisation de l’image de conteneur du code GPUMD. GPUMD signifie Graphics Processing Units Molecular Dynamics et est un code de dynamique moléculaire implémenté pour tirer profits des GPUs. Pour plus d’informations sur GPUMD, ses fichiers d’entrées et les mots-clés disponibles, veuillez consulter la documentation officielle de GPUMD.
L’image contient les outils suivants :
gpumd, l’exécutable de dynamique moléculaire ;nep, l’exécutable Neuroevolution Potential ;
Pour plus d’informations sur les conteneurs Apptainer, veuillez consulter cette page.
Pour avoir un aperçu rapide des principales commandes d’Apptainer, vous pouvez vous référer à ce tutoriel.
Récuperer l’image
L’image de GPUMD est distribué sous le format d’image Apptainer/Singularity (extension .sif). Cette image est un fichier relocalisable et renommable, qu’il est recommandé de placer dans un répertoire dédié pour facilement la retrouver. Ce dernier peut-être quelconque mais dans le cadre de ce tutoriel nous assumerons que vous l’avez placée dans un répertoire nommé $HOME/apptainer-images:
mkdir -p $HOME/apptainer-images
apptainer pull $HOME/apptainer-images/gpumd.sif \
oras://gricad-registry.univ-grenoble-alpes.fr/diamond/apptainer/apptainer-singularity-projects/gpumd.sif:latestDans la suite de ce tutoriel, nous supposons que l’image est disponible à l’emplacement suivant :
$HOME/apptainer-images/gpumd.sifExemple de fichiers d’entrée pour l’Indium liquide.
Afin d’illustrer les différentes commandes, un ensemble de fichiers d’entrée pour GPUMD est fourni, permettant d’effectuer une simulation de dynamique moléculaire sur de l’Indium liquide. Ces fichiers peuvent être téléchargés via ce lien et sont les suivants :
run.inest le fichier d’entrée principale. Il définit le protocol de simulation ainsi que la liste de commandes GPUMD à executer.model.xyzcontient la structure atomique initiale.nep.txtcontient les potentiels NEP, utilisés pour décrire les intéractions du système.
Dans ce tutoriel, nous partirons du principe que ces fichiers se trouvent dans le répertoire courant :
ls
# expected files: nep.txt model.xyz run.inAvertissement
Les commandes présentées sont celles pour l’executable
gpumd. Pour utiliser un autre executable de l’iamge commenep, il faut executer une commande de la formeapptainer exec <options> <image> <executable-name>.
Execution en une ligne
Pour les plus impatients, voici comment lancer l’exemple « GPUMD - Indium liquide » à l’aide de l’image de conteneur préalablement téléchargée et enregistrée dans $HOME/apptainer-images/gpumd.sif:
apptainer exec --nv $HOME/apptainer-images/gpumd.sif gpumdL’argument --nv partage avec le conteneur les bibliothèques et pilotes des GPUs NVIDIA installés sur la machine hôte.
Mode d’emploi du conteneur GPUMD
Cette section présente différentes façons d’utiliser l’image GPUMD. Pour plus de détails sur les commandes Apptainer, veuillez consulter ce tutoriel.
Utilisation du conteneur GPUMD
Dans le cas d’une installation classique, l’utilisation se ferait de la manière suivante :
gpumdOù tous les fichiers d’entrée de GPUMD, notamment run.in, model.xyz et nep.txt, sont stockés dans le répertoire courant.
Pour faire de même avec un conteneur, on peut utiliser deux manières différentes. Dans chaque cas, on suppose que l’image nommée gpumd.sif est situé dans le dossier $HOME/apptainer-images/
- Une des façon consiste à utiliser
apptainer execpour executer une commande dans l’environnement du conteneur.
apptainer exec --nv $HOME/apptainer-images/gpumd.sif gpumd- L’autre consiste à lancer un shell interactif dans l’environnement du conteneur.
apptainer shell --nv $HOME/apptainer-images/gpumd.sif
(env) gpumd
...
(env) exitLa commande exit permet de revenir à notre shell de départ une fois que l’on a finit d’utiliser notre conteneur.
Utiliser les autres executables de l’image
Cette image contient aussi le code nep. Il peut être utilisé de la manière suivante :
apptainer exec --nv $HOME/apptainer-images/gpumd.sif nepPour connaître les fichiers d’entrée attendus et les options de gpumd et nep, veuillez consulter la
documentation de GPUMD.
Afficher l’aide et les métadonnées
Pour afficher le message d’aide du conteneur :
apptainer run-help $HOME/apptainer-images/gpumd.sifPour afficher les métadonnées du conteneur tel que le propriétaire du code, la version ou l’auteur de l’image :
apptainer inspect $HOME/apptainer-images/gpumd.sifIsolation total ou partielle
Par défaut, Apptainer n’isole pas complètement le conteneur du système hôte. Il est possible d’opter pour un isolement partiel ou total en utilisant respectivement les options --no-mount ou --no-home et --containall (voir
ce lien pour plus d’informations).
Lorsque l’option --containall est activée, le répertoire de la machine hôte contenant les fichiers d’entrée de GPUMD n’est pas accessible depuis le conteneur, à moins qu’il ne soit explicitement monté.
apptainer exec --nv --containall $HOME/apptainer-images/gpumd.sif gpumd # run.in not found!Il faut ensuite monter manuellement le répertoire contenant les fichiers run.in, model.xyz et nep.txt à l’aide de l’option --bind. Par exemple, si les fichiers d’entrée se trouvent dans le répertoire courant :
apptainer exec \
--nv \
--containall \
--bind $PWD:/work \
--pwd /work \
$HOME/apptainer-images/gpumd.sif \
gpumdExercices
Exercice 1
Comment récupérer l’image du conteneur GPUMD depuis le registre et l’enregistrer dans $HOME/apptainer-images/gpumd.sif?
- L’image doit être placée à l’endroit suivant :
$HOME/apptainer-images/gpumd.sif- L’image est disponible depuis le registre ORAS à l’adresse montrée dans ce tutoriel.
Exemple de réponse :
mkdir -p $HOME/apptainer-images
apptainer pull $HOME/apptainer-images/gpumd.sif \
oras://gricad-registry.univ-grenoble-alpes.fr/diamond/apptainer/apptainer-singularity-projects/gpumd.sif:latestExercice 2
Comment utiliser l’image de conteneur pour exécuter l’exemple sur l’Indium liquide avec GPUMD ?
Données
- L’image est située à l’endroit suivant :
$HOME/apptainer-images/gpumd.sif- Les fichiers d’entrée
nep.txt,model.xyzetrun.insont dans le répertoire courant :$PWD
Exemple de réponse :
apptainer exec --nv $HOME/apptainer-images/gpumd.sif gpumd
Exercice 3
Comment utiliser l’image pour exécuter l’exemple sur l’Indium liquide avec GPUMD, en isolant entièrement le conteneur du système hôte ?
Données
- L’image est située à l’endroit suivant :
$HOME/apptainer-images/gpumd.sif- Les fichiers d’entrée
nep.txt,model.xyzetrun.insont situés à :$HOME/gpumd-examples/liquid-indium/
Exemple de réponse :
apptainer exec \
--nv \
--containall \
--bind $HOME/gpumd-examples/liquid-indium:/work \
--pwd /work \
$HOME/apptainer-images/gpumd.sif gpumdExercice 4
Comment appeler l’executable nep aussi inclus dans l’image ?
Données
- L’image est située à l’endroit suivant :
$HOME/apptainer-images/gpumd.sif
Exemple de réponse :
apptainer exec --nv $HOME/apptainer-images/gpumd.sif nep