GPU-Accelerated Amber

Inizia subito con questa guida per applicazioni basate su GPU.

Amber

AMBER è un'applicazione di dinamica molecolare sviluppata per la simulazione di sistemi biomolecolari. AMBER è accelerata tramite GPU ed esegue simulazioni PME di solventi espliciti e simulazioni GB di solventi impliciti.

L'ultima versione, AMBER 16, è 15 volte più veloce su GPU NVIDIA rispetto ai sistemi solo con CPU*, per cui le simulazioni biomolecolari richiedono ore e non giorni. AMBER è distribuito su licenza dall'University of California.

*Server a doppia CPU: Intel E5-2690 v4 2,6 GHz | 3,5 GHz Turbo (Broadwell-EP) | NVIDIA® Tesla® P100 | ECC disattivato | Autoboost attivato | dataset PME-JAC_NVE_2fs

Amber è 15 volte più veloce su GPU

Installazione

Requisiti di sistema

AMBER gira su qualunque versione di Linux con compilatori C, C++ e Fortran 95. AMBER utilizza molto le GPU, per cui le GPU di ultima generazione incrementano al massimo le prestazioni. Per ulteriori dettagli, consultare la sezione configurazioni di sistema consigliate. 

Istruzioni di download e di installazione

AMBER viene distribuito sotto forma i codice sorgente con l'acquisto di una licenza. Per i dettagli, consultare il sito Web dell'applicazione. 

SEGUE UN BREVE SOMMARIO DELLA PROCEDURA DI COMPILAZIONE

1. Scaricare gli archivi con il codice sorgente AMBER e ambertools

2. Installare le dipendenze. Per informazioni sull'installazione delle dipendenze di AMBER in varie distribuzioni di Linux, fare clic qui. Per ulteriori informazioni, consultare il manuale di riferimento ufficiale.

3. Estrarre i pacchetti e impostare la variabile di ambiente AMBERHOME (qui illustrata per la bash)

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

4. Configurare AMBER

Per aggiornare AMBER e/o ambertools, potrebbe essere necessario lo script della build. Selezionare "y" a ogni richiesta.

./configure -cuda -noX11 gnu # Con supporto CUDA, compilatori GNU
./configure -cuda -mpi -noX11 gnu # Con supporto CUDA e MPI, compilatori GNU

5. Build di AMBER

make install -j8 # utilizzare 8 thread per la compilazione

Se si preferiscono esecuzioni con GPU sia singole che multiple, è necessario configurare i passaggi della build con e senza MPI. 

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

Per effettuare esecuzioni di benchmarking solo con CPU, è necessario anche eseguire la build in un file binario non abilitato CUDA. 

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

Esecuzione di processi

Prima di eseguire una versione di AMBER accelerata tramite GPU, installare il driver per display NVIDIA più recente per la GPU.

Per eseguire AMBER, è necessario il file eseguibile "pmemd.cuda". Per esecuzioni con più GPU, è necessario anche il file eseguibile "pmemd.cuda.MPI" (per la compilazione con il supporto MPI, consultare le istruzioni per il download e l'installazione). Per esecuzioni con più GPU, le GPU devono trovarsi nello stesso nodo fisico e le GPU utilizzate devono supportare la comunicazione P2P (peer-to-peer) per ottimizzare le prestazioni.

È necessario, inoltre, scaricare la suite di benchmark AMBER16, disponibile gratuitamente dalla pagina di benchmark. Da questo punto in poi, si suppone che i benchmark siano stati scaricati ed estratti in una directory che sarà denominata $BENCHMARKS.

OPZIONI DELLA RIGA DI COMANDO

Per ottimizzare le prestazioni dell'esecuzione di AMBER, si raccomanda di impostare i boost clock della GPU sul valore massimo. In questo caso, verranno impostati i clock per la GPU 0 utilizzando i boost clock per Tesla K80 nella prima riga, per Tesla M40 nella seconda e per Tesla P100 nella terza. Tenere presente che boost clock dei dispositivi GeForce potrebbero non essere modificabili.

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

Riga di comando generica per l'esecuzione di AMBER su un sistema con un singolo nodo:

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

In un sistema con più GPU, AMBER deve essere eseguito con mpirun come specificato di seguito:

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

{opzioni}

1. -O: sovrascrivere il file di output, se esiste già.

2. -o: specificare il nome del file di output in cui eseguire la scrittura

Si raccomanda di controllare sempre la parte iniziale del file di output per accertarsi che tutti gli 87 parametri, in particolare GPU, siano stati specificati correttamente.

{input}

Utilizzare il file di input corrispondente da uno dei dataset indicati nella sottosezione successiva (generalmente mdin.GPU)

Esempio 1. Esecuzione NVE produzione JAC (DHFR (NVE) 2fs dalla pagina benchmark) su una singola GPU:

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

Esempio 2. Esecuzione NPT produzione cellulosa su 2 GPU (tutte nello stesso nodo):

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

Esempio 3. Esecuzione NPT produzione cellulosa su 32 core di CPU (tutti sullo stesso nodo):

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

Benchmark

Questa sezione dimostra l'accelerazione via GPU per le serie di dati selezionate. I benchmark sono elencati per ordine crescente di numero di atomi. Nella lettura dell'output, la figura di interesse è "ns/giorno" (più alto è il valore, maggiore è la validità), situato al termine dell'output nel file "mdout". È preferibile acquisire le misurazioni per tutti gli incrementi temporali (invece che per gli ultimi 1000 incrementi).

NPT produzione tipica MD con BUONA conservazione dell'energia, 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

NPT produzione JAC (Joint Amber CHARMM) è DHFR in un contenitore d'acqua TIP3P. È uno dei benchmark di minori dimensioni, con 23.588 atomi incluse molecole d'acqua. Il benchmark viene eseguito tramite un modello di solvente esplicito (PME).

NPT produzione tipica MD con BUONA conservazione dell'energia.
# 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 è un benchmark che simula il fattore di coagulazione del sangue IX. Consiste di 90.906 atomi incluse molecole d'acqua. Per il modello dell'acqua viene utilizzato un solvente esplicito TIP3P. Questo benchmark viene eseguito tramite un modello di solvente esplicito (PME).

NVT produzione tipica MD
# 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

Questo benchmark simula una fibra di cellulosa. È uno dei modelli di maggiori dimensioni da simulare nel benchmark con 408.609 atomi incluse molecole d'acqua. Per il modello dell'acqua viene utilizzato un risolutore TIP3P esplicito. Il benchmark viene eseguito tramite un modello di solvente esplicito (PME).

Risultati previsti

Questa sezione fornisce i benchmark delle prestazioni previste per vari sistemi a nodo singolo e a nodi multipli.

Prestazioni di Amber (JAC_NVE) su server a singolo nodo
Prestazioni di Amber (factorIX_NVE) su server a singolo nodo
Prestazione di Amber (Cellulose_NPT) su server a singolo nodo

Configurazioni del sistema consigliate

Configurazione hardware

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

Configurazione software

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.

Crea la tua soluzione GPU ideale oggi stesso.