Compilation et exécution du programme Gromacs en mode GPU

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 :

  1. Définition de la variable TIME pour la métrologie :
    export TIME=$(cat '/etc/time_command.cfg')
  2. Création du dossier utilisateur :
    mkdir /local/$USER
  3. Placement dans le dossier créé :
    cd /local/$USER
  4. Récupération du source
    wget ftp://ftp.gromacs.org/pub/gromacs/gromacs-2018.1.tar.gz
  5. Expansion de l'archive :
    tar xzf gromacs-2018.1.tar.gz
  6. Définition d'une variable d'environnement pour ce dossier :
    export GMXSRC=$PWD/gromacs-2018.1
  7. Création d'un dossier de construction :
    mkdir gromacs-2018.1_build
  8. Définition d'une variable d'environnement pour ce dossier :
    export GMXBUILD=$PWD/gromacs-2018.1_build
  9. Création d'un dossier d'installation :
    mkdir gromacs-2018.1_install
  10. Définition d'une variable d'environnement pour ce dossier :
    export GMXINSTALL=$PWD/gromacs-2018.1_install
  11. Déplacement dans le dossier de construction :
    cd $GMXBUILD
  12. 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
  13. Compilation du programme en mode parallèle :
    make -j 16 > GMX-Compile-$(date "+%Y%m%d-%H%M") 2>&1
  14. Exécution des tests :
    make check > GMX-Check-$(date "+%Y%m%d-%H%M") 2>&1 
  15. 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

  1. Création du dossier de tests à la date du jour :
    mkdir -p /local/$USER/tests-$(date "+%Y%m%d")
  2. Placement dans le dossier créé :
    cd /local/$USER/tests-$(date "+%Y%m%d")
  3. Récupération des entrées Gromacs pour le test :
    wget ftp://ftp.gromacs.org/pub/benchmarks/water_GMX50_bare.tar.gz
  4. Expansion de l'archive récupérée :
    tar xzf water_GMX50_bare.tar.gz
  5. Passage dans le dossier de paramètres :
    cd water-cut1.0_GMX50_bare/1536
  6. Paramétrage de l'environnement :
    source $GMXINSTALL/bin/GMXRC
  7. Lancement de l'exemple sur GPU :
    1. Initialisation de GROMACS :
      $GMXINSTALL/bin/gmx grompp -f pme.mdp
    2. 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
  8. Lancement du code sur CPU :
    1. Effacement des fichiers créés par la simulation sur GPU :
      find . -mtime -1 | grep -v $(echo $PWD | tr "/" "_") | grep '/' | xargs -I '{}' rm '{}'
    2. Initialisation de GROMACS :
      $GMXINSTALL/bin/gmx grompp -f pme.mdp
    3. 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.

formation/insa2018gpu/insa2018gromacs4stretch.txt · Dernière modification: 2019/06/05 13:36 par equemene