Turing : CP2K

Présentation

CP2K est un logiciel libre (GPL), ecrit en Fortran 95. Ce logiciel de chimie réalise des simulations atomiques et moléculaires dans différents états (solide, liquide…) au moyen de méthodologies variées (DFT avec approche GPW, classical pair potentials…).

Ce produit est modifié en permanence sur le site www.cp2k.org, et accessible grâce à un repository SVN donnant accès à toutes les versions.

Disponibilité

Le logiciel CP2K est installé à l'IDRIS sur la machine Turing. Utilisez la commande module avail cp2k pour consulter toutes les version installées.

Les anciennes versions sont désignées comme suit : numéro-de-version_numéro-de-révision-SVN.

Le programme a été compilé en mode parallèle MPI et/ou hybride MPI/OpenMP. Les versions disponibles sont :

  • 2.3_12343 (MPI et hybride)
  • 2.4.0_12993 (Hybride)
  • 2.5.1_13632 (version par défaut, hybride, inclut la bibliothèque ELPA)
  • 2.6.0 (hybride, inclut la bibliothèque ELPA)

Les binaires sont appelés cp2k.popt pour la version MPI, et cp2k.psmp pour la version hybride MPI/OpenMP.

Script de lancement

L'utilisation de Modules permet de se placer dans l'environnement adapté à CP2K. La commande module load cp2k charge la version par défaut. Si vous souhaitez en utiliser une autre, référez vous à la documentation sur la commande module.

Voici un exemple de script de lancement en parallélisation hybride pour un calcul exécuté dans le WORKDIR :

job.ll
# @ job_name         = CP2K
# @ job_type         = BLUEGENE
# @ output           = $(job_name).$(jobid)
# @ error            = $(job_name).$(jobid)
# @ wall_clock_limit = 1:00:00
# @ bg_size          = 64
# @ queue
 
### Initialisation de Module ###
module load cp2k
 
### Echo des commandes ###
set -x
 
### Lancement du calcul ###
runjob --np 1024 --ranks-per-node=16 --envs "OMP_NUM_THREADS=4" : $CP2K_EXEDIR/cp2k.psmp fichier_entrée

Voici un exemple de script de lancement en parallélisation MPI pour un calcul exécuté dans le TMPDIR :

job.ll
# @ job_name         = CP2K
# @ job_type         = BLUEGENE
# @ output           = $(job_name).$(jobid)
# @ error            = $(job_name).$(jobid)
# @ wall_clock_limit = 1:00:00
# @ bg_size          = 64
# @ queue
 
### Initialisation de Module ###
module load cp2k/2.3_12343
 
### Echo des commandes ###
set -x
 
### Copie vers le TMPDIR ###
cp ./* $TMPDIR
 
### Lancement du calcul ###
cd $TMPDIR
runjob --np 2048 --ranks-per-node=32 : $CP2K_EXEDIR/cp2k.popt fichier_entrée
 
### Copie vers le dossier de soumission ###
cd -
cp $TMPDIR/* .

Vous pouvez aussi vous référer à nos conseils plus généraux sur la soumission en queue sur Turing d'un travail parallélisé avec MPI ou parallélisé en mode mixte MPI/OpenMP.

Paramètres propres au logiciel

Il est fortement conseillé d'utiliser les binaires compilés en mode hybride MPI/OpenMP sur Turing pour des raisons de performances (voir les exemples de script de soumission ci-dessus), en raison de l'architecture très spécifique de cette machine. Pour plus d'informations, consultez la page dédiée au placement des processus sur Turing.

Equilibrage de charge

Afin que les données soient distribuées le plus équitablement possible entre les processus MPI, vous pouvez ajouter à votre fichier d'entrée :

&FORCE_EVAL 
 &DFT
  &MGRID
     SKIP_LOAD_BALANCE_DISTRIBUTED .FALSE.
  &END MGRID
 &END DFT
&END FORCE_EVAL

Bibliothèque ELPA

Depuis la version 2.5 de CP2K, la bibliothèque ELPA, spécialisée dans le calcul de valeurs propres, est intégrée. Selon la nature de votre système et le type de calcul que vous souhaitez exécuter, cette bibliothèque permet un gain de temps de restitution. Pour l'activer, il faut ajouter à votre fichier d'entrée :

&GLOBAL
   PREFERRED_DIAG_LIBRARY ELPA
&END GLOBAL

Par défaut, la bibliothèque ScaLAPACK est utilisée.