====== Compilation et exécution du programme Gromacs en mode GPU ======
[[formation:insa2018gpu|Retour aux travaux pratiques]]
===== Compilation du programme dans l'environnement du CBP =====
La recette pour compiler Gromacs avec un support GPU sur du Debian Stretch 9.0 est la suivante :
- Définition de la variable TIME pour la métrologie : export TIME=$(cat '/etc/time_command.cfg')
- Création du dossier utilisateur :mkdir /local/$USER
- Placement dans le dossier créé :cd /local/$USER
- Récupération du source wget ftp://ftp.gromacs.org/pub/gromacs/gromacs-2018.1.tar.gz
- Expansion de l'archive : tar xzf gromacs-2018.1.tar.gz
- Définition d'une variable d'environnement pour ce dossier :export GMXSRC=$PWD/gromacs-2018.1
- Création d'un dossier de construction : mkdir gromacs-2018.1_build
- Définition d'une variable d'environnement pour ce dossier :export GMXBUILD=$PWD/gromacs-2018.1_build
- Création d'un dossier d'installation : mkdir gromacs-2018.1_install
- Définition d'une variable d'environnement pour ce dossier :export GMXINSTALL=$PWD/gromacs-2018.1_install
- Déplacement dans le dossier de construction : cd $GMXBUILD
- Construction des tâches de compilation : CC=gcc-4.9 CXX=g++-4.9 cmake $GMXSRC -DGMX_OPENMP=ON -DGMX_GPU=ON -DGMX_BUILD_OWN_FFTW=ON -DGMX_PREFER_STATIC_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$GMXINSTALL
- Compilation du programme en mode parallèle : make -j 16 > GMX-Compile-$(date "+%Y%m%d-%H%M") 2>&1
- Exécution des tests : make check > GMX-Check-$(date "+%Y%m%d-%H%M") 2>&1
- Installation du programme et ses dépendances : make install > GMX-Install-$(date "+%Y%m%d-%H%M") 2>&1
===== Exécution de l'exemple exploité par Nvidia dans l'environnement du CBP =====
- Création du dossier de tests à la date du jour : mkdir -p /local/$USER/tests-$(date "+%Y%m%d")
- Placement dans le dossier créé : cd /local/$USER/tests-$(date "+%Y%m%d")
- Récupération des entrées Gromacs pour le test :wget ftp://ftp.gromacs.org/pub/benchmarks/water_GMX50_bare.tar.gz
- Expansion de l'archive récupérée : tar xzf water_GMX50_bare.tar.gz
- Passage dans le dossier de paramètres : cd water-cut1.0_GMX50_bare/1536
- Paramétrage de l'environnement : source $GMXINSTALL/bin/GMXRC
- Lancement de l'exemple sur GPU :
- Initialisation de GROMACS : $GMXINSTALL/bin/gmx grompp -f pme.mdp
- Lancement du calcul sur GPU : /usr/bin/time $GMXINSTALL/bin/gmx mdrun -resethway -noconfout -nsteps 4000 -v -gpu_id 0 >$(echo $PWD | tr '/' '_')_$(date "+%Y%m%d-%H%M").out 2>&1
- Lancement du code sur CPU :
- Effacement des fichiers créés par la simulation sur GPU :find . -mtime -1 | grep -v $(echo $PWD | tr "/" "_") | grep '/' | xargs -I '{}' rm '{}'
- Initialisation de GROMACS : $GMXINSTALL/bin/gmx grompp -f pme.mdp
- Lancement du calcul sur GPU : /usr/bin/time $GMXINSTALL/bin/gmx mdrun -resethway -noconfout -nsteps 4000 -v -nb cpu >$(echo $PWD | tr '/' '_')_$(date "+%Y%m%d-%H%M").out 2>&1
Les deux fichiers de sortie en ''*.out'' donnent les informations sur les exécutions et la métrologie associée. Un ''grep'' sur le mot ''Elapsed'' extrait les temps d'exécution sur GPU et CPU.