====== 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.