VASP¶
VASP (Vienna Ab initio Simulation Package) performs ab initio quantum-mechanical molecular dynamics using pseudopotentials and a plane-wave basis set.
Licensing¶
VASP requires a valid license. Send your license details to support-hpc@dipc.org so we can verify it and grant you access to the binaries.
Loading the module¶
module load VASP/6.4.3-intel-2024a
Each module provides three binaries. Choose the one that matches your calculation:
vasp_std-- General purpose. Default choice for most calculations.vasp_gam-- Gamma-point only. Uses real arithmetic instead of complex, roughly 2x faster and half the memory. Use it when your KPOINTS file has only the Gamma point.vasp_ncl-- Non-collinear magnetism and spin-orbit coupling. Required for SOC calculations; slower thanvasp_std.
To see all installed versions across clusters, check the software catalog or run module spider VASP.
Expand to see all available modules on each cluster
VASP/5.4.4-intel-2022a |
VASP/5.4.4-intel-2022a-VASPsol |
VASP/6.2.1-intel-2022a-VASPsol |
VASP/6.2.1-intel-2022a-VASPsolpp |
VASP/6.4.1-intel-2022a |
VASP/6.4.1-intel-2022a-LIBXC |
VASP/6.4.1-intel-2022a-noHDF5 |
VASP/6.4.1-intel-2022a-VASPsol-VTST |
VASP/6.4.1-intel-2022a-VTST |
VASP/6.4.1-NVHPC-23.1-CUDA-12.1.1 |
VASP/6.4.3-intel-2022a |
VASP/6.4.3-intel-2022a-NOMEGA-3000 |
VASP/6.5.1-intel-2023a |
VASP/5.4.4-intel-2019b |
VASP/5.4.4-intel-2019b-VTST |
VASP/5.4.4-intel-2019b-Wannier90-1.2-Mihovil |
VASP/5.4.4-intel-2021a-Misha |
VASP/5.4.4-Wannier90-1.2-intel-2019b |
VASP/6.2.1-intel-2021a |
VASP/6.2.1-intel-2021a-VTST-182-VASPsol-1.0-Wannier-2.1.0 |
VASP/6.2.1-intel-2021a-Wannier90-2.1.0 |
VASP/6.2.1-vtst-182-intel-2021a |
VASP/6.4.1-intel-2021a |
VASP/5.3.5-hannes-intel-2017b |
VASP/5.4.1-05Feb16-OMC-intel-2018b |
VASP/5.4.1-05Feb16-unpatched-Misha |
VASP/5.4.1-NBO |
VASP/5.4.1-Wannier90-1.2-05Feb16-unpatched-Misha |
VASP/5.4.4-intel-2017b |
VASP/5.4.4-intel-2018a |
VASP/5.4.4-intel-2018b-debug |
VASP/5.4.4-intel-2019b |
VASP/5.4.4-intel-VTST-179-intel-2018b |
VASP/5.4.4-Wannier90-1.2-intel-2017b |
VASP/5.4.4-Wannier90-1.2-intel-2018a |
VASP/5.4.4-Wannier90-1.2-modified-Z2Pack-intel-2017b |
VASP/6.4.1-intel-2022a |
Pseudopotentials¶
VASP pseudopotential files (POTCARs) are distributed as part of the VASP package and access is controlled by your license. If your license covers VASP 6, you can access the VASP 6 pseudopotentials; if it covers VASP 5, you can access the VASP 5 set.
| License | Path |
|---|---|
| VASP 6 | /scicomp/builds/Rocky/8.7/IceLake/software/VASP/potentials_6/ |
| VASP 5 | /scicomp/builds/Rocky/8.7/IceLake/software/VASP/potentials_5/ |
| License | Path |
|---|---|
| VASP 5 | /scicomp/CentOS/7.4.1708/Skylake/software/VASP/potentials |
Pseudopotentials are not directly available on Atlas FDR. You can copy them from the Hyperion or Atlas EDR paths above to your working directory.
Batch job examples¶
#!/bin/bash
#SBATCH --qos=regular
#SBATCH --job-name=vasp
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=48
#SBATCH --cpus-per-task=1
#SBATCH --mem=200G
#SBATCH --time=24:00:00
#SBATCH --output=%x.%j.out
#SBATCH --error=%x.%j.err
module load VASP/6.4.3-intel-2024a
srun vasp_std
#!/bin/bash
#SBATCH --qos=regular
#SBATCH --job-name=vasp_gpu
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=1
#SBATCH --mem=40G
#SBATCH --gpus=1
#SBATCH --time=24:00:00
#SBATCH --output=%x.%j.out
#SBATCH --error=%x.%j.err
module load VASP/6.4.1-NVHPC-23.1-CUDA-12.1.1
export OMP_NUM_THREADS=1
srun vasp_std
Tip
VASP 6.4+ uses OpenACC for GPU offloading. Use one MPI rank per GPU and set NCORE = 1 in your INCAR.
#!/bin/bash
#SBATCH --qos=regular
#SBATCH --job-name=vasp
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=48
#SBATCH --cpus-per-task=1
#SBATCH --mem=200G
#SBATCH --time=24:00:00
#SBATCH --output=%x.%j.out
#SBATCH --error=%x.%j.err
module load VASP/6.4.1-intel-2022a
srun vasp_std
GPU builds¶
VASP 6.4+ supports GPU acceleration via OpenACC. On Hyperion, for example, a GPU-enabled build is available:
module load VASP/6.4.1-NVHPC-23.1-CUDA-12.1.1
This build is compiled with NVHPC 23.1 and CUDA 12.1, linked against MKL for CPU math and cuFFT/cuSOLVER for GPU-accelerated FFTs and linear algebra. All three binaries (vasp_std, vasp_gam, vasp_ncl) are GPU-enabled. Check module spider VASP on your cluster for other GPU-enabled modules (look for NVHPC or CUDA in the name).
Key differences when running on GPU:
- Use one MPI rank per GPU (e.g.,
--ntasks-per-node=4with--gres=gpu:4) - Set
NCORE = 1in your INCAR (mandatory for GPU; see VASP wiki: OpenACC GPU port) - Set
OMP_NUM_THREADS=1
When are GPUs worth it?
GPU acceleration benefits medium to large systems (> 100 atoms) with dense k-point grids. For very small systems, the overhead of GPU data transfer can make CPUs faster. Test both and compare the LOOP+ timing in the OUTCAR.
Performance tuning (INCAR)¶
The following INCAR parameters have the biggest impact on performance. Incorrect settings are the most common reason for slow VASP runs.
| Parameter | What it does | Recommendation | Reference |
|---|---|---|---|
NCORE |
Number of cores working on each orbital | Start with √(cores per node). On our 48-core nodes: try NCORE = 6 or NCORE = 8 |
Parallelization guide |
KPAR |
Parallelization over k-points | Set to a divisor of your total k-points, at most equal to the number of nodes | Parallelization guide |
LREAL |
Projection operators in real space | LREAL = Auto for cells with > 20 atoms (faster). Keep LREAL = .FALSE. for small cells and high-precision work |
LREAL wiki |
NSIM |
Bands optimized simultaneously in RMM-DIIS | Default (4) is usually fine. Increase to 8-16 for large systems | NSIM wiki |
NCORE and KPAR must match your SLURM allocation
The total number of MPI ranks must be divisible by both NCORE and KPAR. For example, with 2 nodes x 48 tasks = 96 ranks, valid combinations include KPAR=2, NCORE=8 (96 / 2 / 8 = 6 bands in parallel) or KPAR=4, NCORE=6. If the values are incompatible, VASP will either crash or silently fall back to suboptimal settings.
GPU runs
On GPU, always set NCORE = 1. The GPU port handles parallelization differently. See OpenACC GPU port.
Example INCAR block for a 2-node CPU job on Hyperion (96 MPI ranks):
NCORE = 8
KPAR = 2
LREAL = Auto
NSIM = 4
Scaling guidelines¶
How many cores your calculation needs depends primarily on the system size and the number of k-points. These are starting points; always verify by comparing the LOOP+ timing in the OUTCAR between different configurations.
| System size | Suggested resources | Notes |
|---|---|---|
| Small (< 50 atoms) | 1 node, 24-48 cores | More cores rarely helps; try vasp_gam if Gamma-only |
| Medium (50-200 atoms) | 1-2 nodes | Set KPAR = number of nodes, adjust NCORE |
| Large (200-500 atoms) | 2-4 nodes | LREAL = Auto becomes important here |
| Very large (> 500 atoms) | 4+ nodes | Run a scaling test first; efficiency drops beyond a point |
How to run a scaling test¶
Run the same calculation on 1, 2, and 4 nodes with a small number of electronic steps (NELM = 5) and compare the elapsed time per step (LOOP+ in OUTCAR):
grep "LOOP+" OUTCAR
If doubling the nodes does not reduce the time by at least 30-40%, you are past the efficient scaling range. Use fewer nodes and spend the saved core-hours on more calculations instead.
For a detailed discussion of VASP parallelization strategy, see the official optimization guide.
See also¶
-
Software catalog
Versions available on each cluster.
-
GPU accelerators
Requesting GPUs in SLURM.
-
VASP manual
Official VASP wiki and documentation.