Diferencia entre revisiones de «VASP»

De NLHPC
Línea 290: Línea 290:
'''Tip''': Para sistemas grandes (>200 átomos), considerar aumentar NPAR en un 10-20%.
'''Tip''': Para sistemas grandes (>200 átomos), considerar aumentar NPAR en un 10-20%.
</div>
</div>
== Monitoreo de Rendimiento ==
'''Pasos recomendados''':
# Verificar el archivo {{mono|OUTCAR}} (buscar "Maximum memory used")
# Ajustar {{mono|NPAR}}/{{mono|KPAR}} si se observan:
** Cuellos de botella en E/S
** Problemas de comunicación entre nodos
** Bajo rendimiento
{{tip|Para sistemas grandes (>200 átomos), considerar aumentar NPAR en un 10-20%}}


== Uso de software licenciado ==
== Uso de software licenciado ==

Revisión del 18:56 8 abr 2025

¿Qué es?

VASP (Vienna Ab initio Simulation Package) es un paquete de mecánica cuántica para simulaciones de dinámica molecular a nivel ab initio, utilizando pseudopotenciales o el método Projector-Augmented Wave (PAW) y una base de ondas planas.

La metodología usada en este software se basa en la aproximación local de la densidad (LDA) y una evaluación exacta del estado fundamental en cada paso de la dinámica molecul

Modulos

VASP se encuentra disponible en varias versiones, tanto para infraestructura INTEL como para AMD.

Las últimas versiones disponibles son:

* 6.2.1
* 6.3.2
* 6.4.3

Puede buscar las versiones de VASP para intel ejecutando:

intelsoftware
ml spider VASP

Y para buscar las versiones de AMD puede ejecutar:

amdsoftware
ml spider vasp

Definir entorno

En el archivo INCAR configuramos las siguientes variables respecto a la reserva que hagamos para tener idealmente de 1 átomo por core.

NPAR = 5 #cantidad de nodos
NCORE = 20 #cantidad de cores por nodo

#evitar exceso de carga en I/O
LWAVE  = .FALSE.
LCHARG = .FALSE.
LVTOT  = .FALSE.

Ejemplo de Lanzador

Para INTEL

Ejemplo de SBATCH para enviar a particiones general y largemem:

#!/bin/bash
#SBATCH -J ejemplo
#SBATCH -p general
#SBATCH -n 88
#SBATCH --ntasks-per-node=44 
#SBATCH --mem-per-cpu=4200
#SBATCH --mail-user=usuario@correo.cl
#SBATCH --mail-type=ALL
#SBATCH -o %j_%x.out
#SBATCH -e %j_%x.err

ml purge
ml intel/2022.00
ml VASP/6.3.2

export OMP_NUM_THREADS=1
export MKL_NUM_THREADS=1
export MKL_DYNAMIC=FALSE

#vasp_std for standard NVT calculation and non-gamma k-points
#vasp_gam for standard NVT calculation and only gamma-point
#vasp_ncl for NPT ensemble and non-gamma-point calculations

EXEC=vasp_gam
BINVASP="${EXEC}"
export BINVASP
srun $BINVASP

Para AMD

El siguiente ejemplo muestra la versión de VASP 6.4.3 para ser ejecutada en un nodo de la partición main.

Es importante destacar que al momemento de cargar estos módulos se generan avisos de tipo Warning, por lo que se recomienda monitorear la tarea y su comportamiento.

#!/bin/bash
#SBATCH --job-name="TareaVASP"
#SBATCH --partition="main"
#SBATCH -n 1
#SBATCH -c 256
#SBATCH --mem-per-cpu=2839
##SBATCH --ntasks-per-node=64

#SBATCH --output=TareaVASP-%j.out #
#SBATCH --mail-type=ALL

ml aocc
ml openmpi/5.0.5-zen4-j
ml amdfftw/4.2-mpi-openmp-zen4-tjgyk3c
ml vasp/6.4.3-mpi-openmp-zen4-e

export OMPI_MCA_mtl=ofi
export OMP_NUM_THREADS=256
export OMP_PLACES=cores

srun vasp_std

Pruebas y recomendaciones de ejecución AMD

Los ejemplos descritos a continuación describen la configuración recomendada para ejecutar simulaciones con VASP (Vienna Ab initio Simulation Package) de manera eficiente (procesos) utilizando el paradigma MPI por sobre OpenMP o configuraciones híbridas (MPI + OpenMP)..

A continuación, compartimos configuraciones recomendadas para distintos números de núcleos, que podrían ser útiles para mejorar el rendimiento de tus simulaciones.

Script de Ejemplo (24 núcleos)
#!/bin/bash
#SBATCH --job-name="MPI"
#SBATCH -p main
#SBATCH -n 24                  # Total de procesos MPI
#SBATCH --ntasks-per-node=24   # Procesos por nodo (ajustar según arquitectura)
#SBATCH -c 1                   # 1 thread por proceso (MPI puro)
#SBATCH --mem=30000            # Memoria en MB (ajustar según necesidades)
#SBATCH --output=MiTareaVASP-log/%j.out
#SBATCH --error=MiTareaVASP-log/%j.err

# Cargar módulos necesarios
ml gcc/14.2.0-zen4-y 
ml vasp/6.4.3-mpi-openmp-h5-zen4-c

# Limpiar archivos previos
rm -f DOSCAR PROCAR XDATCAR OSZICAR OUTCAR vasprun.xml REPORT

# Configuración MPI (opcional)
export OMPI_MCA_mtl=ofi

# Medir tiempo de ejecución
echo "Inicio: $(date)"
/usr/bin/time -v srun vasp_std
echo "Fin: $(date)"

Parámetros Clave en el INCAR

Parámetro Valor recomendado (24 núcleos) Descripción
NPAR 6 Número de bandas calculadas en paralelo.
NCORE 1 Evita OpenMP (MPI puro es más eficiente).
KPAR 4 División de la malla k-point.
Script de Ejemplo (64 núcleos)
#!/bin/bash
#SBATCH --job-name="MPI"
#SBATCH -p main
#SBATCH -n 64                  # Total de procesos MPI
#SBATCH --ntasks-per-node=64   # Procesos por nodo (ajustar según arquitectura)
#SBATCH -c 1                   # 1 thread por proceso (MPI puro)
#SBATCH --mem=80000            # Memoria en MB (ajustar según necesidades)
#SBATCH --output=MiTareaVASP-log/%j.out
#SBATCH --error=MiTareaVASP-log/%j.err

# Cargar módulos necesarios
ml gcc/14.2.0-zen4-y 
ml vasp/6.4.3-mpi-openmp-h5-zen4-c

# Limpiar archivos previos
rm -f DOSCAR PROCAR XDATCAR OSZICAR OUTCAR vasprun.xml REPORT

# Configuración MPI (opcional)
export OMPI_MCA_mtl=ofi

# Medir tiempo de ejecución
echo "Inicio: $(date)"
/usr/bin/time -v srun vasp_std
echo "Fin: $(date)"

Parámetros Clave en el INCAR

Parámetro Valor recomendado (24 núcleos) Descripción
NPAR 16 Número de bandas calculadas en paralelo.
NCORE 1 Evita OpenMP (MPI puro es más eficiente).
KPAR 4 División de la malla k-point.
Script de Ejemplo (128 núcleos)
#!/bin/bash
#SBATCH --job-name="MPI"
#SBATCH -p main
#SBATCH -n 128                 # Total de procesos MPI
#SBATCH --ntasks-per-node=128  # Procesos por nodo (ajustar según arquitectura)
#SBATCH -c 1                   # 1 thread por proceso (MPI puro)
#SBATCH --mem=160000            # Memoria en MB (ajustar según necesidades)
#SBATCH --output=MiTareaVASP-log/%j.out
#SBATCH --error=MiTareaVASP-log/%j.err

# Cargar módulos necesarios
ml gcc/14.2.0-zen4-y 
ml vasp/6.4.3-mpi-openmp-h5-zen4-c

# Limpiar archivos previos
rm -f DOSCAR PROCAR XDATCAR OSZICAR OUTCAR vasprun.xml REPORT

# Configuración MPI (opcional)
export OMPI_MCA_mtl=ofi

# Medir tiempo de ejecución
echo "Inicio: $(date)"
/usr/bin/time -v srun vasp_std
echo "Fin: $(date)"

Parámetros Clave en el INCAR

Parámetro Valor recomendado (24 núcleos) Descripción
NPAR 32 Número de bandas calculadas en paralelo.
NCORE 1 Evita OpenMP (MPI puro es más eficiente).
KPAR 4 División de la malla k-point.

Recomendaciones Adicionales

Optimización de NPAR y KPAR
Núcleos NPAR KPAR Notas
24 6 4 Regla general:
NPAR × KPAR ≈ Núcleos totales

Ejemplo para 24 nucleos:
6 × 4 = 24 (configuración óptima)

Alternativa:
8 × 8 = 64 (Configuración alternativa)
64 16 4
128 32 4
Evitar OpenMP e Hibrido

Nota importante: Las pruebas muestran que MPI puro es significativamente más rápido que configuraciones híbridas (MPI + OpenMP) o solo OpenMP.

Monitoreo de Rendimiento

Pasos recomendados:

  1. Verificar el archivo OUTCAR (buscar "Maximum memory used")
  2. Ajustar NPAR/KPAR si se observan:
  • Cuellos de botella en E/S
  • Problemas de comunicación
  • Bajo rendimiento

Tip: Para sistemas grandes (>200 átomos), considerar aumentar NPAR en un 10-20%.

Uso de software licenciado

El uso de este software está restringido a los usuarios que dispongan de una licencia válida de VASP, la cual deben enviar al correo de soporte.

Referencias

   * The VASP site
   * How to use VASP
   * First time you run a VASP job?
   * VASP bwHPC
   * VASP Wiki-Ncore