Amber avec accélération GPU

Exploitez le plein potentiel d’Amber avec notre guide de démarrage pour application GPU.

Amber

AMBER est une application de dynamique moléculaire développée pour la simulation des systèmes biomoléculaires. AMBER tire profit de l’accélération GPU et permet d’exécuter des simulations PME à solvants explicites ou des simulations GB à solvants implicites.

AMBER 16, la dernière version de l’application, offre des performances jusqu’à 15 fois plus rapides avec les GPU NVIDIA qu’avec les systèmes uniquement basés sur le traitement CPU*, ce qui permet de réduire la durée des simulations biomoléculaires de plusieurs jours à quelques heures seulement. AMBER est distribué sous licence de l’Université de Californie.

*Serveur CPU : double Intel E5-2690 v4 à 2,6 GHz | 3,5GHz Turbo (Broadwell-EP) | NVIDIA® Tesla® P100 avec fonctions ECC désactivées et Autoboost activé | Jeu de données : PME-JAC_NVE_2fs

Amber s’exécute jusqu’à 15 fois plus vite grâce à l’accélération GPU

Installation

Configuration requise

AMBER est portable sur n’importe quelle version de Linux avec les compilateurs C, C++ et Fortran 95. AMBER exploite le traitement GPU et offre un maximum de performances avec les processeurs graphiques de nouvelle génération. Veuillez consulter la configuration système recommandée pour de plus amples informations. 

Instructions de téléchargement et d’installation

AMBER est distribué sous forme de code source après l’achat d’une licence. Vous trouverez plus d’informations sur le site Internet de l’application. 

VOUS TROUVEREZ CI-DESSOUS UNE SYNTHÈSE DE LA PROCÉDURE DE COMPILATION

1. Téléchargez le code source d’AMBER et la suite d’outils AmberTools.

2. Installez les dépendances. Pour en savoir plus sur l’installation des dépendances d’AMBER sur différentes distributions Linux, veuillez cliquer ici. Pour consulter des instructions détaillées, veuillez vous référer au manuel de référence officiel.

3. Extrayez les packs d’installation et définissez la variable d’environnement AMBERHOME (présentée ici en bash).

tar xvjf AmberTools16.tar.bz2
tar xvjf Amber16.tar.bz2
cd amber16
export AMBERHOME=`pwd` # bash, zsh, ksh, etc.
setenv AMBERHOME `pwd` # csh, tcsh

4. Configurez AMBER.

Le script de construction peut requérir une mise à jour d’AMBER et/ou d’AmberTools. Sélectionnez "y" à chaque invite pour accepter.

./configure -cuda -noX11 gnu # Avec support de CUDA + compilateurs GNU
./configure -cuda -mpi -noX11 gnu # Avec support de CUDA et MPI + compilateurs GNU

5. Déployez AMBER.

make install -j8 # (utilisez 8 threads pour la compilation)

Si vous souhaitez exécuter des instances mono-GPU et multi-GPU, vous devez procéder aux étapes de configuration et de déploiement avec et sans MPI. 

./configure -cuda -noX11 gnu
make install -j32
./configure -cuda -mpi -noX11 gnu
make install -j32

Pour exécuter des instances de benchmark exclusivement CPU, vous devrez assembler une version binaire sans CUDA. 

./configure -mpi -noX11 gnu
make install -j32

Exécution

Avant d’exécuter une version d’AMBER accélérée par GPU, vous devez installer la dernière version des pilotes d’affichage NVIDIA.

Pour utiliser AMBER, vous aurez besoin du fichier exécutable "pmemd.cuda". Pour les instances multi-GPU, vous aurez par ailleurs besoin du fichier exécutable "pmemd.cuda.MPI" (veuillez vous référer aux instructions de téléchargement et d’installation pour en savoir plus sur la procédure de compilation avec support MPI). Pour les instances multi-GPU, vos GPU doivent se trouver sur le même nœud physique et prendre en charge les communications peer-to-peer pour fournir les meilleures performances possibles.

Vous devez en outre télécharger la suite de benchmarking AMBER16, disponible gratuitement sur la page dédiée. Dans la suite de cette section, nous partons du principe que vous avez téléchargé tous les outils nécessaires et que vous les avez extraits dans un répertoire nommé "$BENCHMARKS".

OPTIONS DE LIGNE DE COMMANDE

Nous vous recommandons d’activer la fréquence boostée de votre GPU afin d’obtenir un maximum de performances avec AMBER. Dans l’exemple suivant nous avons défini les fréquences pour la valeur GPU 0, en utilisant la fréquence boostée avec un accélérateur Tesla K80 sur la première ligne, un Tesla M40 sur la deuxième et un Tesla P100 sur la troisième. Veuillez noter que les produits de la gamme GeForce ne possèdent pas tous des fréquences modifiables.

nvidia-smi -i 0 -ac 2505,875 # K80
nvidia-smi -i 0 -ac 3004,1114 # M40
Nvidia-smi -i 0 -ac 715,1328 # P100

Ligne de commande générale pour l’exécution d’AMBER sur un système à nœud unique :

$AMBERHOME/bin/pmemd.cuda -i {input} -o {output file} {options}

Ligne de commande pour l’exécution d’AMBER avec mpirun sur un système à GPU multiples :

mpirun -np <NP> $AMBERHOME/bin/pmemd.cuda.MPI -i {input} -o {output} {options}

{options}

1. -O : écrase le fichier de sortie s’il existe déjà.

2. -o : spécifie le nom du fichier de sortie dans lequel écrire les données.

Nous vous recommandons de systématiquement vérifier le début du fichier de sortie afin de vous assurer que les 87 paramètres (en particulier ceux relatifs au GPU) ont été spécifiés correctement.

{input}

Utilisez le fichier d'entrée correspondant de l'un des jeux de données de la sous-section suivante (généralement mdin.GPU).

Exemple 1. Exécution de JAC Production NVE (voir DHFR (NVE) 2fs sur la page de benchmark) avec un seul GPU :

cd $BENCHMARKS/PME/JAC_production_NVE
$AMBERHOME/bin/pmemd.cuda -i mdin.GPU -O -o mdout

Exemple 2 .Exécution de Cellulose Production NPT avec 2 GPU (sur le même nœud) :

cd $BENCHMARKS/PME/Cellulose_production_NPT
mpirun -np 2 $AMBERHOME/bin/pmemd.cuda.MPI -i mdin.GPU -O -o mdout

Exemple 3 .Exécution de Cellulose Production NPT avec 32 cœurs CPU (sur le même nœud) :

cd $BENCHMARKS/PME/Cellulose_production_NPT
mpirun -np 32 $AMBERHOME/bin/pmemd.MPI -i mdin.CPU -O -o mdout

Benchmarks

Cette section présente certains jeux de données relatifs à l’accélération GPU d'AMBER. Les benchmarks ci-après sont présentés par ordre croissant de nombre d’atomes. Le facteur de mérite s'exprime en nanosecondes par jour ("ns/day" ; plus la valeur est élevée, mieux c'est) et est enregistré à la fin du fichier de sortie "mdout". Nous vous recommandons de mettre en place des cas d’essai larges prenant en compte l’ensemble des étapes (et non les 1000 dernières étapes).

Production typique MD NPT avec bonne conservation d’énergie (2fs).
# of Atoms
23,558

Typical Production MD NPT with GOOD energy conservation, 2fs.

&cntrl
ntx=5, irest=1,
ntc=2, ntf=2, tol=0.000001,
nstlim=250000,
ntpr=2500, ntwx=2500,
ntwr=250000,
dt=0.002, cut=8.,
ntt=0, ntb=1, ntp=0,
ioutfm=1,
/
&ewald
dsum_tol=0.000001,
/

DHFR (JAC PRODUCTION) NPT 2FS

JAC (Joint Amber CHARMM) Production NPT est un benchmark basé sur la dihydrofolate réductase (ou DHFR) avec un modèle d’eau de type TIP3P. C’est un benchmark de taille réduite (23 588 atomes avec H2O) qui s’exécute avec un modèle PME à solvants explicites.

Production typique MD NPT avec bonne conservation d’énergie.
# of Atoms
90,906

Typical Production MD NPT with GOOD energy conservation.

&cntrl
ntx=5, irest=1,
ntc=2, ntf=2, tol=0.000001,
nstlim=70000,
ntpr=1000, ntwx=1000,
ntwr=10000,
dt=0.002, cut=8.,
ntt=0, ntb=1, ntp=0,
ioutfm=1,
/
&ewald
dsum_tol=0.000001
/

FACTOR IX NPT

FactorIX est un benchmark qui simule le facteur IX de coagulation sanguine. Il comprend 90 906 atomes avec H2O et est modélisé avec une structure explicite TIP3P. Ce benchmark s’exécute avec un modèle PME à solvants explicites.

Production typique MD NVT.
# of Atoms
408,609

Typical Production MD NVT
 

& cntrl
ntx=5, irest=1,
ntc=2, ntf=2,
nstlim=14000,
ntpr=1000, ntwx=1000,
ntwr=8000,
dt=0.002, cut=8.,
ntt=1, tautp=10.0,
temp0=300.0,
ntb=2, ntp=1, barostat=2,
ioutfm=1,
/

CELLULOSE NPT

Ce benchmark simule une fibre de cellulose. C’est un modèle de grande taille qui comprend 408 609 atomes avec H2O et est modélisé avec une structure explicite TIP3P. Ce benchmark s’exécute avec un modèle PME à solvants explicites.

Résultats attendus

Cette section vous fournit les performances prévisionnelles de différents benchmarks avec des systèmes à nœud unique ou à nœuds multiples.

Performances Amber (JAC_NVE) sur un serveur à un seul nœud
Performances Amber (factorIX_NVE) sur un serveur à un seul nœud
Performances Amber (Cellulose_NPT) sur un serveur à un seul nœud

Configuration système recommandée

Configuration matérielle

PC

Parameter
Specs

CPU Architecture

x86

System Memory

16-32GB

CPUs

1-2

GPU Model

NVIDIA TITAN X

GPUs

1-2

Servers

Parameter
Specs

CPU Architecture

x86

System Memory

64-128GB

CPUs

1-2

GPU Model (for workstations)

Tesla® P100

GPU Model (for servers)

Tesla® P100

GPUs

1-2 P100 PCIe
1-4 P100 SMX2

Configuration logicielle

Software stack

Parameter
Version

Application

AMBER 16

OS

Centos 7.2

GPU Driver

375.20 or newer

CUDA Toolkit

8.0 or newer

See a list of supported GPUs on Amber.

Déployez votre solution GPU personnalisée.