Table des matières
Gromacs sur Jean Zay
Présentation
Gromacs est un logiciel de simulation atomistique qui réalise principalement des dynamiques moléculaires de systèmes d'intérêt biologique.
Liens utiles
Versions disponibles
Version | Variantes |
---|---|
2024.2 | mpi, mpi-cuda, tmpi-cuda |
2023.4 | tmpi, tmpi-cuda, mpi, mpi-cuda |
2023.2 | tmpi-cuda, mpi-cuda |
2022.5 | tmpi-cuda-plumed, mpi-cuda-plumed, mpi-plumed |
2022.3 | tmpi-cuda-plumed, mpi-cuda-plumed, mpi-double-cp2k |
2022.2 | mpi-cuda |
2021.5 | mpi-cuda |
2021.4 | mpi-cuda |
2021.2 | tmpi-cuda |
2020.4 | tmpi-cuda, mpi-cuda-plumed |
2020.3 | tmpi |
2020.2 | mpi-cuda-plumed |
2020.1 | tmpi-cuda |
2019.6 | mpi-cuda |
2019.4 | mpi-cuda-plumed |
2019.2 | serial, mpi-cuda |
2018.7 | serial, mpi-cuda |
Actuellement les meilleures performances sur GPU sont obtenues avec les versions thread-MPI à partir de 2020.
Message d'erreur OpenMPI
Les versions récentes de Gromacs ont été compilées avec OpenMPI CUDA-aware pour améliorer les performances sur GPU.
Si vous n'utilisez pas les GPU, un message d'avertissement apparait.
-------------------------------------------------------------------------- The library attempted to open the following supporting CUDA libraries, but each of them failed. CUDA-aware support is disabled. libcuda.so.1: cannot open shared object file: No such file or directory libcuda.dylib: cannot open shared object file: No such file or directory /usr/lib64/libcuda.so.1: cannot open shared object file: No such file or directory /usr/lib64/libcuda.dylib: cannot open shared object file: No such file or directory If you are not interested in CUDA-aware support, then run with --mca opal_warn_on_missing_libcuda 0 to suppress this message. If you are interested in CUDA-aware support, then try setting LD_LIBRARY_PATH to the location of libcuda.so.1 to get passed this issue. --------------------------------------------------------------------------
Ce message est sans conséquence pour le job. Si vous souhaitez le faire disparaitre vous pouvez ajouter les lignes suivantes dans votre script de soumission :
export PSM2_CUDA=0 export OMPI_MCA_opal_warn_on_missing_libcuda=0
Outils
Les outils de pré et post-traitement de Gromacs (ex : grompp
) peuvent-être utilisés sur les frontales, à condition de choisir leur version séquentielle. Il faut, pour cela, charger une version de Gromacs sans MPI ni CUDA.
Options importantes de mdrun
Si vous constatez un fort déséquilibre de charge, il faudra faire varier les paramètres de mdrun
. Par exemple les options suivantes vont avoir un rôle important :
-npme
: nombre de tâches MPI dédiées au calcul de PME-pme
: où calculer PME (cpu, gpu)-pmefft
: où calculer la partie FFT de PME-nb
: où calculer les interactions non liées- …
N'hésitez pas à consulter la documentation de Gromacs (liens ci-dessus) pour les autres options.
Exemple d'utilisation sur la partition CPU
Script de soumission
- gromacs_cpu.slurm
#!/bin/bash #SBATCH --nodes=1 # 1 node is used #SBATCH --ntasks-per-node=4 # 4 MPI tasks #SBATCH --cpus-per-task=10 # Number of OpenMP threads per MPI task #SBATCH --hint=nomultithread # Disable hyperthreading #SBATCH --job-name=gromacs # Jobname #SBATCH --output=GMX_GenMD.o%j # Standard output file (%j is the job number) #SBATCH --error=GMX_GenMD.o%j # Standard error file #SBATCH --time=10:00:00 # Expected runtime HH:MM:SS (max 100h) ## ## Please, refer to comments below for ## more information about these 4 last options. ##SBATCH --account=<account>@cpu # To specify cpu accounting: <account> = echo $IDRPROJ ##SBATCH --partition=<partition> # To specify partition (see IDRIS web site for more info) ##SBATCH --qos=qos_cpu-dev # Uncomment for job requiring less than 2 hours ##SBATCH --qos=qos_cpu-t4 # Uncomment for job requiring more than 20h (up to 4 nodes) # Cleans out the modules loaded in interactive and inherited by default module purge # Load needed modules module load gromacs/2018.7-mpi-cuda # Run : 4 MPI tasks (--ntasks-per-node=4) and 10 threads/task (--cpus-per-task=10) # Be aware that Gromacs recommands 2 <= ntomp <= 6. # Do your own tests srun gmx_mpi mdrun -v -deffnm md_test -ntomp $SLURM_CPUS_PER_TASK
Exemple d'utilisation sur la partition GPU
La détection des GPU étant faite automatiquement par Gromacs, il n'y a pas de modification à faire dans la ligne de commande.
Par contre, vous devez réserver les GPUs dans votre fichier de soumission via la directive SLURM #SBATCH --gres=gpu:4
.
Les exemples de scripts de soumission sont à adapter en fonction de la partition utilisée. Nous vous invitons à consulter les pages dédiées à la soumission sur A100 et H100.
Scripts de soumission sur V100
- gromacs_gpu.slurm
#!/bin/bash #SBATCH --nodes=1 # 1 node is used #SBATCH --ntasks-per-node=4 # 4 MPI tasks #SBATCH --cpus-per-task=10 # Number of OpenMP threads per MPI task #SBATCH --gres=gpu:4 # Number of GPUs per node #SBATCH --hint=nomultithread # Disable hyperthreading #SBATCH --job-name=gromacs # Jobname #SBATCH --output=GMX_GenMD.o%j # Standard output file (%j is the job number) #SBATCH --error=GMX_GenMD.o%j # Standard error file #SBATCH --time=10:00:00 # Expected runtime HH:MM:SS (max 100h for V100, 20h for A100) ## ## Please, refer to comments below for ## more information about these 4 last options. ##SBATCH --account=<account>@v100 # To specify gpu accounting: <account> = echo $IDRPROJ ##SBATCH --partition=<partition> # To specify partition (see IDRIS web site for more info) ##SBATCH --qos=qos_gpu-dev # Uncomment for job requiring less than 2 hours ##SBATCH --qos=qos_gpu-t4 # Uncomment for job requiring more than 20h (up to 16 GPU, V100 only) # Cleans out the modules loaded in interactive and inherited by default module purge # Load needed modules module load gromacs/2022.3-mpi-cuda-plumed # Run : 4 MPI tasks (--ntasks-per-node=4) and 10 threads/task (--cpus-per-task=10) # Be aware that Gromacs recommands 2 <= ntomp <= 6. # Do your own tests # and 4 GPUs (--gres=gpu:4) automatically detected. srun gmx_mpi mdrun -v -deffnm md_test -ntomp $SLURM_CPUS_PER_TASK
Script de soumission sur la partition GPU avec la version thread-MPI (Derniers développements) sur V100
- gromacs_gpu.slurm
#SBATCH --nodes=1 # 1 node is used #SBATCH --ntasks-per-node=1 # 1 MPI tasks #SBATCH --cpus-per-task=40 # Number of OpenMP threads per MPI task #SBATCH --gres=gpu:4 # Number of GPUs per node #SBATCH --hint=nomultithread # Disable hyperthreading #SBATCH --job-name=gromacs_tmpi # Jobname #SBATCH --output=GMX_GenMD.o%j # Standard output file (%j is the job number) #SBATCH --error=GMX_GenMD.o%j # Standard error file #SBATCH --time=10:00:00 # Expected runtime HH:MM:SS (max 100h for V100, 20h for A100) ## ## Please, refer to comments below for ## more information about these 4 last options. ##SBATCH --account=<account>@v100 # To specify gpu accounting: <account> = echo $IDRPROJ ##SBATCH --partition=<partition> # To specify partition (see IDRIS web site for more info) ##SBATCH --qos=qos_gpu-dev # Uncomment for job requiring less than 2 hours ##SBATCH --qos=qos_gpu-t4 # Uncomment for job requiring more than 20h (up to 16 GPU, V100 only) # Cleans out the modules loaded in interactive and inherited by default module purge # Load needed modules module load gromacs/2022.3-cuda-plumed # Activate latest GPU developments export GMX_GPU_PME_PP_COMMS=true export GMX_FORCE_UPDATE_DEFAULT_GPU=1 export GMX_GPU_DD_COMMS=true # Run : 4 thread-MPI tasks and 10 threads/task 4 GPUs (--gres=gpu:4) automatically detected. # Please read the documentation about thread-MPI and latest GPU development # http://manual.gromacs.org/documentation/current/user-guide/mdrun-performance.html gmx mdrun -ntmpi 4 -npme 1 -ntomp 10 \ -update gpu -bonded gpu \ -nb gpu -pme gpu -pmefft gpu \ -deffnm 6vxx_nvt -v
Remarques
- Les jobs ont tous des ressources définies dans Slurm par une partition et une “Qualité de Service” QoS (Quality of Service) par défaut. Vous pouvez en modifier les limites en spécifiant une autre partition et/ou une QoS comme indiqué dans notre documentation détaillant les partitions et les Qos.
- Pour les comptes multi-projets ainsi que ceux ayant des heures CPU et GPU, il est indispensable de spécifier l'attribution d'heures sur laquelle décompter les heures de calcul du job comme indiqué dans notre documentation détaillant la gestion des heures de calcul.