Ada : GROMACS

Présentation

GROMACS est une suite logicielle de dynamique moléculaire en champ de force, principalement conçue pour la simulation de molécules biochimiques comme les protéines, les lipides et les acides nucléiques, présentant de complexes interactions liées.

La documentation est disponible sur le site officiel de GROMACS.

Disponibilité

Les versions installées sont :

  • 4.6.3
  • 4.6.5
  • 5.0.1
  • 5.0.2
  • 5.1.4 avec le plugin PLUMED
  • 2016.3

L'exécutable de calcul mdrun bénéficie de la parallélisation mixte MPI/OpenMP.

Pour connaitre les versions disponibles sur la machine, utilisez la commande module

module avail gromacs

Script de lancement

Les exécutables sont accessibles grâce à la commande module

module load gromacs

Notez qu'à partir de la version 5.1.4, l'environnement par défaut ne peut plus être utilisé pour l'exécution de Gromacs. Il devient nécessaire d'utiliser l'environnement Intel MPI et donc d'adapter vos scripts de soumission en fonction (voir l'exemple plus loin).

Voici un exemple de script de lancement en parallélisation hybride pour un calcul exécuté dans le TMPDIR avec l'environnement IBM MPI :

job.ll
# @ job_name         = gromacs
# @ output           = $(job_name).$(jobid)
# @ error            = $(job_name).$(jobid)
# @ job_type         = parallel
# Nombre de processus MPI demandes
# @ total_tasks      = 32
# Nombre de tâches OpenMP par processus MPI
# @ parallel_threads = 4
# @ wall_clock_limit = 10:00:00
# @ queue
 
### Initialisation de Module ###
module load gromacs
 
### Echo des commandes ###
set -x
 
### Copie des fichiers d'entrée vers le TMPDIR ###
cp *.gro *.top *.mdp *.tpr $TMPDIR
 
### Lancement du calcul ###
cd $TMPDIR
poe mdrun -s example.tpr
 
### Copie des fichiers de sortie vers le dossier de soumission ​###
cd -
cp $TMPDIR/*.trr $TMPDIR/*.log .

Voici un exemple de script de lancement en parallélisation hybride pour un calcul exécuté dans le TMPDIR avec l'environnement Intel MPI et Gromacs 2016.3 :

job.ll
# @ job_name         = gromacs
# @ output           = $(job_name).$(jobid)
# @ error            = $(job_name).$(jobid)
# @ job_type         = mpich
# Nombre de processus MPI demandes
# @ total_tasks      = 32
# Nombre de tâches OpenMP par processus MPI
# @ nb_threads       = 4
# @ resources        = ConsumableCpus($(nb_threads))
# @ environment      = OMP_NUM_THREADS=$(nb_threads); NB_TASKS=$(total_tasks)
# @ queue
 
### Initialisation de Module ###
module load gromacs/2016.3
 
### Echo des commandes ###
set -x
 
### Copie des fichiers d'entrée vers le TMPDIR ###
cp *.gro *.top *.mdp *.tpr $TMPDIR
 
### Lancement du calcul ###
cd $TMPDIR
mpirun -n $NB_TASKS mdrun_mpi -s example.tpr
 
### Copie des fichiers de sortie vers le dossier de soumission ​###
cd -
cp $TMPDIR/*.trr $TMPDIR/*.log .

Paramètres propres au logiciel

Afin de bénéficier de l'utilisation du mode hybride, l'algorithme de Verlet doit être utilisé. Pour éviter de devoir régénérer les fichiers d'entrée, ou simplement pour tester ce mode, vous pouvez utiliser l'option -testverlet pour l'exécutable mdrun.
N'oubliez pas d'adapter les directives du script de lancement (lancer un code parallélisé en mode mixte MPI/OpenMP).