VASP sur Jean Zay

Présentation

VASP est un logiciel de simulation atomistique de physique/chimie des matériaux. Il résoud l'équation de Shrödinger en utilisant la théorie de la fonctionnelle de la densité DFT et la méthode Hartree-Fock, ainsi que d'autres méthodes plus avancées.

Afin d'obtenir l'accès à VASP à l'IDRIS, vous devez au préalable vous enregistrer auprès de VASP pour obtenir une licence. VASP fournit des licences de groupe ; cependant il est nécessaire d'enregistrer chaque personne du groupe. Comme nous le demande VASP, une vérification est faite par l'assistance avant de pouvoir vous ouvrir les accès.

Liens utiles

Versions disponibles

Les versions avec cuda sont compatibles avec le calcul sur GPU.

Version Variantes
6.4.2mpi
6.4.0mpi-cuda-openacc, cuda-openacc-mlff_patched, mpi-cuda-openacc-vaspsol, mpi-ml_ff_patched, 6.4.0-mpi-vaspsol
6.3.2mpi-cuda-openacc_ml-ff-abinitio-patched, mpi_ml-ff-abinitio-patched
6.3.0mpi, mpi-cuda-openacc
6.2.0mpi, mpi-cuda-openacc
6.1.2mpi
5.4.4.pl2 mpi-vaspsol
5.4.4mpi-cuda, mpi-vtst

Exécutables disponibles

Sur CPU

  • vasp_std : version standard de VASP ;
  • vasp_gam : version pour les calculs avec seulement le point Gamma ;
  • vasp_ncl : version pour les calculs non colinéaires.

Sur GPU

Version 6

  • vasp_std
  • vasp_gam
  • vasp_ncl

Version 5

  • vasp_gpu : version standard, portée sur GPU avec CUDA ;
  • vasp_ncl_gpu : version pour les calculs non colinéaires, portée sur GPU avec CUDA.

Informations importantes

Plusieurs problèmes ont été détectés lors de l'utilisation de la version vasp_gam. Si vos travaux s'arrêtent à cause d'un problème de mémoire il est nécessaire de charger une version alternative de VASP. Pour cela il faut charger les modules suivants (l'ordre importe):

module load intel-compilers/18.0.5 intel-mpi/18.0.5
module load vasp/5.4.4-mpi-cuda 

Exemple d'utilisation sur la partition CPU

Exemple de script sur la partition CPU

vasp_cpu.slurm
#!/bin/bash
#SBATCH --nodes=1               # 1 node reserved 
#SBATCH --ntasks-per-node=40    # 40 MPI tasks
#SBATCH --cpus-per-task=1       # 1 OpenMP thread/task 
#SBATCH --hint=nomultithread    # Desabling hyperthreading
#SBATCH --job-name=VASP
#SBATCH --output=%x.o%j         # Output file %x is the jobname, %j the jobid
#SBATCH --error=%x.o%j          # Error file
#SBATCH --time=10:00:00         # Expected runtime HH:MM:SS (max 100h)
##
## Please, refer to comments below for
## more information about these 4 last options.
##SBATCH --account=<account>@cpu       # To specify cpu accounting: <account> = echo $IDRPROJ
##SBATCH --partition=<partition>       # To specify partition (see IDRIS web site for more info)
##SBATCH --qos=qos_cpu-dev      # Uncomment for job requiring less than 2 hours
##SBATCH --qos=qos_cpu-t4      # Uncomment for job requiring more than 20h (up to 4 nodes)
 
# Cleans out the modules loaded in interactive and inherited by default
module purge
# Load the necessary modules
 
module load vasp/5.4.4-mpi-cuda
 
srun vasp_std

Exemple d'utilisation sur la partition GPU

Il existe des limitations sur les fonctionnalités portées sur GPU. Veuillez consulter la page Informations sur le portage GPU.

Sur les tests que nous avons réalisés, la surcharge des GPU avec le MPS activé donne de meilleurs résultats. Il est important de réaliser des tests pour trouver le nombre optimal de tâches MPI par GPU .

Exemple de script sur la partition GPU

vasp_gpu.slurm
#!/bin/bash
#SBATCH --nodes=1               # 1 node reserved 
#SBATCH --ntasks-per-node=8     # 8 MPI tasks (i.e. 2 per GPU)
#SBATCH --cpus-per-task=5       # 5 OpenMP threads/task (20Go of memory per task)
#SBATCH --gres=gpu:4            # 4 GPU required
#SBATCH --constraint=mps        # Enable MPS
#SBATCH --hint=nomultithread    # Disable hyperthreading
#SBATCH --job-name=VASP         # Jobname
#SBATCH --output=%x.o%j         # Output file %x is the jobname, %j the jobid
#SBATCH --error=%x.o%j          # Error file
#SBATCH --time=10:00:00         # Expected runtime HH:MM:SS (max 100h for V100, 20h for A100)
##
## Please, refer to comments below for
## more information about these 4 last options.
##SBATCH --account=<account>@v100  # To specify gpu accounting: <account> = echo $IDRPROJ
##SBATCH --partition=<partition>   # To specify partition (see IDRIS web site for more info)
##SBATCH --qos=qos_gpu-dev         # Uncomment for job requiring less than 2 hours
##SBATCH --qos=qos_gpu-t4          # Uncomment for job requiring more than 20h (up to 16 GPU, V100 only)
 
# Cleans out the modules loaded in interactive and inherited by default
module purge
 
# Load the necessary modules
module load vasp/5.4.4-mpi-cuda
 
srun vasp_gpu

Remarques

  • Les jobs ont tous des ressources définies dans Slurm par une partition et une “Qualité de Service” QoS (Quality of Service) par défaut. Vous pouvez en modifier les limites en spécifiant une autre partition et/ou une QoS comme indiqué dans notre documentation détaillant les partitions et les Qos.
  • Pour les comptes multi-projets ainsi que ceux ayant des heures CPU et GPU, il est indispensable de spécifier l'attribution d'heures sur laquelle décompter les heures de calcul du job comme indiqué dans notre documentation détaillant la gestion des heures de calcul.