[[Category:Software]][[Category:BiomolecularSimulation]]
==Introduction==
[https://ambermd.org/ Amber] désigne un ensemble d'applications pour effectuer des simulations de dynamique moléculaire, particulièrement avec les biomolécules. Chacune des applications porte un nom différent, mais l'ensemble fonctionne plutôt bien et constitue un outil puissant pour effectuer plusieurs calculs usuels.
== AmberTools et Amber ==
Les modules pour AmberTools et pour Amber [[Available software/fr|sont disponibles sur nos grappes]].
* Le module ambertools
pour [https://ambermd.org/AmberTools.php AmberTools] offre des outils pour préparer et analyser les simulations. L'application sander
est utilisée pour les simulations de dynamique moléculaire. Tous ces outils sont gratuits et open source.
* Le module amber
pour [https://ambermd.org/AmberMD.php Amber] contient tout ce qui est offert par ambertools
, mais ajoute pmemd
, une application plus avancée pour les simulations de dynamique moléculaire.
Pour la liste des versions installées et de leurs modules dépendants, lancez [[Utiliser des modules#Sous_commande_spider|la commande module spider
]] ou consultez la page [[Available software/fr|Logiciels disponibles]].
== Charger des modules ==
{| class="wikitable sortable"
|-
! Version !! avec CPU !! avec GPU (CUDA) !! Notes
|-
| amber/22.5-23.5 || StdEnv/2023 gcc/12.3 openmpi/4.1.5 amber/22.5-23.5
|| StdEnv/2023 gcc/12.3 openmpi/4.1.5 cuda/12.2 amber/22.5-23.5
|| GCC, FlexiBLAS & FFTW
|-
| ambertools/23.5 || StdEnv/2023 gcc/12.3 openmpi/4.1.5 ambertools/23.5
|| StdEnv/2023 gcc/12.3 openmpi/4.1.5 cuda/12.2 ambertools/23.5
|| GCC, FlexiBLAS & FFTW
|-
|}
{| class="wikitable sortable"
|-
! Version !! avec CPU !! avec GPU (CUDA) !! Notes
|-
| ambertools/21 || StdEnv/2020 gcc/9.3.0 openmpi/4.0.3 scipy-stack ambertools/21
|| StdEnv/2020 gcc/9.3.0 cuda/11.4 openmpi/4.0.3 scipy-stack ambertools/21
|| GCC, FlexiBLAS & FFTW
|-
| amber/20.12-20.15 || StdEnv/2020 gcc/9.3.0 openmpi/4.0.3 amber/20.12-20.15
|| StdEnv/2020 gcc/9.3.0 cuda/11.4 openmpi/4.0.3 amber/20.12-20.15
|| GCC, FlexiBLAS & FFTW
|-
| amber/20.9-20.15 || StdEnv/2020 gcc/9.3.0 openmpi/4.0.3 amber/20.9-20.15
|| StdEnv/2020 gcc/9.3.0 cuda/11.0 openmpi/4.0.3 amber/20.9-20.15
|| GCC, MKL & FFTW
|-
| amber/18.14-18.17 || StdEnv/2020 gcc/9.3.0 openmpi/4.0.3 amber/18.14-18.17
|| StdEnv/2020 gcc/8.4.0 cuda/10.2 openmpi/4.0.3
|| GCC, MKL
|-
|}
{| class="wikitable sortable"
|-
! Version !! avec CPU !! avec GPU (CUDA) !! Notes
|-
| amber/18 || StdEnv/2016 gcc/5.4.0 openmpi/2.1.1 scipy-stack/2019a amber/18
|| StdEnv/2016 gcc/5.4.0 openmpi/2.1.1 cuda/9.0.176 scipy-stack/2019a amber/18
|| GCC, MKL
|-
| amber/18.10-18.11 || StdEnv/2016 gcc/5.4.0 openmpi/2.1.1 scipy-stack/2019a amber/18.10-18.11
|| StdEnv/2016 gcc/5.4.0 openmpi/2.1.1 cuda/9.0.176 scipy-stack/2019a amber/18.10-18.11
|| GCC, MKL
|-
| amber/18.10-18.11 || StdEnv/2016 gcc/7.3.0 openmpi/3.1.2 scipy-stack/2019a amber/18.10-18.11
|| StdEnv/2016 gcc/7.3.0 cuda/9.2.148 openmpi/3.1.2 scipy-stack/2019a amber/18.10-18.11
|| GCC, MKL
|-
| amber/16 || StdEnv/2016.4 amber/16
||
|| Disponible uniquement sur Graham. Certaines fonctionnalités Python ne sont pas prises en charge.
|}
==Utilisation==
===AmberTools 21===
Le module AmberTools 21 est présentement disponible sur toutes les grappes et offre sander, sander.LES, sander.LES.MPI, sander.MPI, sander.OMP, sander.quick.cuda, et sander.quick.cuda.MPI. Après avoir chargé le module, configurez les variables d'environnement avec
source $EBROOTAMBERTOOLS/amber.sh
===Amber 20===
Amber20 est présentement disponible sur toutes les grappes. Il y a deux modules, soit 20.9-20.15 et 20.12-20.15.
* 20.9-20.15 utilise MKL et cuda/11.0; notez que les bibliothèques MKL ne fonctionnent pas bien avec des AMD et des CPU.
* 20.12-20.15 utilise FlexiBLAS et cuda/11.4; FlexiBLAS détecte le type de CPU et utilise des bibliothèques optimisées pour le matériel. De plus, CUDA/11.4 est requis pour effectuer des simulations sur les GPU A100 (installés sur Narval).
Les modules pour utilisation avec CPU offrent les applications disponibles avec AmberTools/20 plus pmemd (séquentiel) et pmemd.MPI (parallèle). Les modules pour utilisation avec ajoutent pmemd.cuda (un seul GPU) et pmemd.cuda.MPI (plusieurs GPU).
=== Known issues ===
1. Le module amber/20.12-20.15 n'offre pas l'exécutable MMPBSA.py.MPI.
2. MMPBSA.py des modules amber/18-10-18.11 et amber/18.14-18.17 ne peut pas effectuer les calculs PB; utilisez plutôt les modules amber/20 plus récents.
==Exemples de soumission de tâches==
=== Avec un seul GPU ===
Pour les simulations avec un GPU sur Narval, utilisez amber/20.12-20.15. Les modules compilés avec une version CUDA < 11.4 ne fonctionnent pas sur un GPU A100.
{{File
|name=pmemd_cuda_job.sh
|lang="bash"
|contents=
#!/bin/bash
#SBATCH --ntasks=1
#SBATCH --gpus-per-node=1
#SBATCH --mem-per-cpu=2000
#SBATCH --time=10:00:00
module purge
module load StdEnv/2023 gcc/12.3 openmpi/4.1.5 cuda/12.2 amber/22
pmemd.cuda -O -i input.in -p topol.parm7 -c coord.rst7 -o output.mdout -r restart.rst7
}}
=== Tâche MPI parallèle avec CPU ===
{{File
|name=pmemd_MPI_job_graham.sh
|lang="sh"
|contents=
#!/bin/bash
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=32
#SBATCH --mem-per-cpu=2000
#SBATCH --time=1:00:00
module purge
module load StdEnv/2023 gcc/12.3 openmpi/4.1.5 amber/22
srun pmemd.MPI -O -i input.in -p topol.parm7 -c coord.rst7 -o output.mdout -r restart.rst7
}}
{{File
|name=pmemd_MPI_job_cedar.sh
|lang="sh"
|contents=
#!/bin/bash
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=48
#SBATCH --mem-per-cpu=2000
#SBATCH --time=1:00:00
module purge
module load StdEnv/2023 gcc/12.3 openmpi/4.1.5 amber/22
srun pmemd.MPI -O -i input.in -p topol.parm7 -c coord.rst7 -o output.mdout -r restart.rst7
}}
{{File
|name=pmemd_MPI_job_beluga.sh
|lang="sh"
|contents=
#!/bin/bash
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=40
#SBATCH --mem-per-cpu=2000
#SBATCH --time=1:00:00
module purge
module load StdEnv/2023 gcc/12.3 openmpi/4.1.5 amber/22
srun pmemd.MPI -O -i input.in -p topol.parm7 -c coord.rst7 -o output.mdout -r restart.rst7
}}
{{File
|name=pmemd_MPI_job_narval.sh
|lang="sh"
|contents=
#!/bin/bash
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=64
#SBATCH --mem-per-cpu=2000
#SBATCH --time=1:00:00
module purge
module load StdEnv/2023 gcc/12.3 openmpi/4.1.5 amber/22
srun pmemd.MPI -O -i input.in -p topol.parm7 -c coord.rst7 -o output.mdout -r restart.rst7
}}
{{File
|name=pmemd_MPI_job_narval.sh
|lang="sh"
|contents=
#!/bin/bash
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=40
#SBATCH --mem-per-cpu=2000
#SBATCH --time=1:00:00
module purge
module load StdEnv/2023 gcc/12.3 openmpi/4.1.5 amber/22
srun pmemd.MPI -O -i input.in -p topol.parm7 -c coord.rst7 -o output.mdout -r restart.rst7
}}
=== Tâche QM/MM distribuée avec plusieurs GPU ===
Dans l'exemple suivant, huit GPU sont demandés.
{{File
|name=quick_MPI_job.sh
|lang="bash"
|contents=
#!/bin/bash
#SBATCH --ntasks=8
#SBATCH --cpus-per-task=1
#SBATCH --gpus-per-task=1
#SBATCH --mem-per-cpu=4000
#SBATCH --time=2:00:00
module purge
module load StdEnv/2023 gcc/12.3 openmpi/4.1.5 cuda/12.2 ambertools/23.5
srun sander.quick.cuda.MPI -O -i input.in -p topol.parm7 -c coord.rst7 -o output.mdout -r restart.rst7
}}
=== Tâche MMPBSA parallèle ===
Dans l'exemple suivant, 32 processus MPI sont utilisés. La scalabilité de MMPBSA se fait de façon linéaire parce que chaque séquence de la trajectoire est traitée indépendamment.
{{File
|name=mmpbsa_job.sh
|lang="bash"
|contents=
#!/bin/bash
#SBATCH --ntasks=32
#SBATCH --mem-per-cpu=4000
#SBATCH --time=1:00:00
module purge
module load module load StdEnv/2023 gcc/12.3 openmpi/4.1.5 amber/22
srun MMPBSA.py.MPI -O -i mmpbsa.in -o mmpbsa.dat -sp solvated_complex.parm7 -cp complex.parm7 -rp receptor.parm7 -lp ligand.parm7 -y trajectory.nc
}}
Les scripts peuvent être modifiés selon les besoins en ressources de calcul de vos tâches (consultez [[Running_jobs/fr|Exécuter des tâches]]).
==Performance et étalonnage benchmarking==
Le guide [https://mdbench.ace-net.ca/mdbench/ Molecular Dynamics Performance Guide] a été créé par une équipe [https://www.ace-net.ca/ d'ACENET]. Le guide décrit les conditions optimales pour exécuter aussi des tâches sur nos grappes avec GROMACS, NAMD et OpenMM.
Étalonnage de simulations avec PMEMD[http://mdbench.ace-net.ca/mdbench/bform/?software_contains=PMEMD&software_id=&module_contains=&module_version=&site_contains=&gpu_model=&cpu_model=&arch=&dataset=6n4o]
Étalonnage de simulations QM/MM avec SANDER.QUICK [http://mdbench.ace-net.ca/mdbench/bform/?software_contains=&software_id=&module_contains=&module_version=&site_contains=&gpu_model=&cpu_model=&arch=&dataset=4cg1].