Ada : Quantum ESPRESSO

Présentation

Quantum ESPRESSO est une suite intégrée de codes permettant des calculs de structures électroniques, ainsi que des matériaux à échelle nanométrique. Ce logiciel est basé sur la DFT, avec utilisation d'ondes planes et de pseudo-potentiels (norm-conserving et ultrasoft).

Disponibilité

Les versions installées sont des versions parallèles hybrides MPI/OpenMP. Les versions disponibles sont :

  • 5.0.1
  • 5.0.2 (version par défaut jusqu'au 26/05/16)
  • 5.1.0
  • 5.3.0 (version par défaut depuis le 26/05/16)
  • 5.4.0
  • 6.0.0

Pour connaitre les différentes versions installées, tapez depuis votre fenêtre sur Ada :

module avail espresso

Notez qu'à partir de la version 6.0.0, l'environnement par défaut ne peut plus être utilisé pour l'exécution de Quantum Espresso. 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).

ATTENTION : Un calcul utilisant la méthode ESM ne peut pas être lancé avec les versions 5.1.0, 5.3.0, 5.4.0, 6.0.0 sur la machine Ada. Il existe une incompatibilité entre ces versions et la librairie MKL d'Intel. Cette incompatibilité est corrigée dans la version 6.2.1 (en cours de test sur Ada).

Script de lancement

Voici un exemple de script de lancement pour les versions a partir de 6.0.0 pour un calcul Quantum Espresso hybride (32 processus MPI, 4 threads OpenMP par processus MPI) exécuté dans le WORKDIR :

job.ll
# @ job_name         = job
# @ output           = $(job_name).$(jobid)
# @ error            = $(job_name).$(jobid)
# @ job_type         = mpich
# @ total_tasks      = 32
# @ nb_threads  = 4
# @ resources = ConsumableCpus($(nb_threads))
# @ environment = NTASKS=$(total_tasks); OMP_NUM_THREADS=$(nb_threads)
# @ wall_clock_limit = 20:00:00
# @ queue
 
### Initialisation de Module ###
module load espresso
 
### Echo des commandes###
set -x
 
### Lancement du calcul ###
mpirun -np $NTASKS pw.x < fichier.input > fichier.out

Voici un exemple de script de lancement pour les versions antérieures à 6.0.0 pour un calcul Quantum Espresso hybride (32 processus MPI, 4 threads OpenMP par processus MPI) exécuté dans le WORKDIR :

job.ll
# @ job_name         = job
# @ output           = $(job_name).$(jobid)
# @ error            = $(job_name).$(jobid)
# @ job_type         = parallel
# @ total_tasks      = 32
# @ parallel_threads = 4
# @ wall_clock_limit = 20:00:00
# @ queue
 
### Initialisation de Module ###
module load espresso
 
### Echo des commandes###
set -x
 
### Lancement du calcul ###
poe pw.x < fichier.input > fichier.out

Voici un exemple de script de lancement pour un calcul Quantum Espresso hybride (128 processus MPI, 1 thread OpenMP par processus MPI) exécuté dans le TMPDIR :

job.ll
# @ job_name         = job
# @ output           = $(job_name).$(jobid)
# @ error            = $(job_name).$(jobid)
# @ job_type         = parallel
# @ total_tasks      = 128
# @ parallel_threads = 1
# @ wall_clock_limit = 20:00:00
# @ queue
 
### Initialisation de Module ###
module load espresso
 
### Echo des commandes ###
set -x
 
### Les fichiers d'input sont à placer dans un sous répertoire ###
### Copie vers le TMPDIR ###
cp ./input/* $TMPDIR
 
### Lancement du calcul ###
cd $TMPDIR
poe pw.x < fichier.input > fichier.out
 
### Copie vers le dossier de soumission ###
cd -
cp $TMPDIR/* .

Pour utiliser une version particulière, par exemple la version 5.3.0 :

module load espresso/5.3.0

NB: Avec la version 5.3.0 de Quantum ESPRESSO, la valeur associée aux variables nqx1, nqx2 et nqx3, est passé de la valeur “1” par défaut au nombre correspondant de points “k”. Cette modification a été faite dans un souci de convergence mais peu engendrer plus de temps elapsed.

Documentation

Résultats

  • Pour des raisons de performance, il est recommandé d'utiliser la version 5.3.0 de Quantum ESPRESSO. Un gain de l'ordre de 1.5 à 2.5 (selon le cas test) a été observé par rapport à la version 5.0.2.
ADA (64 coeurs) - CAS TEST LP 1) ADA (64 coeurs) - CAS TEST FL 2)
MPIxOMP 5.0.2 (s) 5.3.0 (s) GAIN MPIxOMP 5.0.2 (s) 5.3.0 (s) GAIN
64×1 2403.48 946.17 2.54 64×1 3755.62 2532.51 1.48
32×2 2450.88 1297.67 1.89 32×2 4236.90 2725.13 1.55
16×4 2636.93 2225.57 1.18 16×4 - 4896.02 -
  • Quantum Espresso est un code hybride (i.e. utilisation possible de plusieurs threads OpenMP par processus MPI). Sur la machine ADA, l'utilisation d'un seul thread OpenMP par processus MPI semble donner les meilleures performances.

SCALABILITE - ADA - Q.E. 5.3.0 - CAS TEST LP 3)
MPIxOMP Tps elapsed (s) Mémoire (Go)
64×1 946.17 3.6
128×1 571.02 2.2
192×1 388.02 1.7
256×1 281.50 1.4
320×1 264.30 1.3
512×1 239.52 1.1
  • Version 5.4.0 : un très léger mieux en temps elapsed
ADA (64 coeurs) - CAS TEST LP 4) ADA (64 coeurs) - CAS TEST FL 5)
MPIxOMP 5.0.2 (s) 5.3.0 (s) 5.4.0 (s) MPIxOMP 5.0.2 (s) 5.3.0 (s) 5.4.0 (s)
64×1 2403.48 946.17 943.83 64×1 3755.62 2532.51 2365.57
32×2 2450.88 1297.67 1309.86 32×2 4236.90 2725.13 2645.08

Les cas tests sont des optimisations énergétiques.

Cas test LP-fichier entree: pw.in

1) , 3) , 4) “LP”:400 bandes, 300k ondes planes, 8 points k
2) , 5) “FL”:300 bandes, 94k ondes planes, 4 points k