VASP#

vasp-logo

VASP (Vienna Ab initio Simulation Package) es un programa de simulación de materiales basado en primeros principios (ab initio), ampliamente utilizado en física del estado sólido, ciencia de materiales y química computacional.

Importante

Para utilizar VASP, por favor dirígase a https://tickets.clementinaxxi.org.ar -> Abrir un Nuevo Ticket -> Temas de ayuda -> Solicitar acceso a VASP. Cualquier intento de uso de VASP sin poseer una licencia habilitante para la versión específica resultará en sanciones.

Versiones instaladas#

Actualmente las versiones de VASP instaladas en Clementina XXI son la 6.5.1 con soporte para CPU, y la 6.6.1 con soporte para GPUs.

Características:

  • Compilada con Intel OneAPI

  • Biblioteca Intel MKL

  • Paralelización con Intel MPI y OpenMP

  • Wannier90

  • HDF5

  • LibXC

En el caso de la versión GPU, no está incluido LibXC.

Como utilizar VASP#

Carga de módulo#

Una vez que su usuario se encuentre habilitado, usted podrá cargar VASP mediante el módulo vasp/6.5.1

module purge
module load vasp/6.5.1
module purge
module load vasp/6.6.1-gpu

Una vez hecho esto, podrá usar los binarios vasp_std, vasp_gam, vasp_ncl.

Scripts de ejemplo#

Script MPI puro#

#!/bin/bash
#SBATCH --job-name=vaspjob          
#SBATCH --output=%x_%J.out
#SBATCH --error=%x_%J.err
#SBATCH --account=<account_number>
#SBATCH --nodes=1
#SBATCH --ntasks=64
#SBATCH --ntasks-per-node=64
#SBATCH --partition=gpunode
#SBATCH --exclusive

# Module loading
module purge
module load vasp/6.5.1

export OMP_NUM_THREADS=1
export MKL_NUM_THREADS=1
export MKL_DYNAMIC=false

mpirun vasp_std
#!/bin/bash
#SBATCH --job-name=vaspjob          
#SBATCH --output=%x_%J.out
#SBATCH --error=%x_%J.err
#SBATCH --account=<account_number>
#SBATCH --nodes=2
#SBATCH --ntasks=128
#SBATCH --ntasks-per-node=64
#SBATCH --partition=gpunode
#SBATCH --exclusive

# Module loading
module purge
module load vasp/6.5.1

export OMP_NUM_THREADS=1
export MKL_NUM_THREADS=1
export MKL_DYNAMIC=false

mpirun vasp_std 
#!/bin/bash
#SBATCH --job-name=vaspjob          
#SBATCH --output=%x_%J.out
#SBATCH --error=%x_%J.err
#SBATCH --account=<account_number>
#SBATCH --nodes=4
#SBATCH --ntasks=256
#SBATCH --ntasks-per-node=64
#SBATCH --partition=gpunode
#SBATCH --exclusive

# Module loading
module purge
module load vasp/6.5.1

export OMP_NUM_THREADS=1
export MKL_NUM_THREADS=1
export MKL_DYNAMIC=false

mpirun vasp_std
#!/bin/bash
#SBATCH --job-name=vasp-gpu
#SBATCH --output=%x%J.out
#SBATCH --error=%x%J.err
#SBATCH --ntasks=1
#SBATCH --nodes=1
#SBATCH --gpus=1
#SBATCH --partition=gpunode

Module loading
module purge
module load vasp/6.6.1-gpu

export OMP_NUM_THREADS=1
export MKL_THREADING_LAYER=INTEL
export MKL_NUM_THREADS=1
export MKL_DYNAMIC=false

export I_MPI_OFFLOAD=1

export ZE_FLAT_DEVICE_HIERARCHY=FLAT
mpirun -np 1 vasp_std

GPUs#

En el caso del uso de GPUs, ZE_FLAT_DEVICE_HIERARCHY=FLAT usa la «mitad» (una tile) de una GPU, y solo usa un core y thread. Para usar una GPU entera, puede usarse FLAT en conjunto con mpirun -np 2 o ZE_FLAT_DEVICE_HIERARCHY=COMPOSITE manteniendo mpirun -np 1, aunque la escalabilidad no está garantizada. Para más detalles sobre el uso de las GPUs de Clementina XXI, revise la documentación correspondiente. Para usar apropiadamente más de un core, se debe especificar --cpus-per-task=<cantidad de threads> y ajustar los valores de OMP_NUM_THREADS y MKL_NUM_THREADS de manera acorde.

Para más información sobre optimizaciones en GPU, ver la documentación correspondiente de VASP.