Atlassian uses cookies to improve your browsing experience, perform analytics and research, and conduct advertising. Accept all cookies to indicate that you agree to our use of cookies on your device.
Atlassian uses cookies to improve your browsing experience, perform analytics and research, and conduct advertising. Accept all cookies to indicate that you agree to our use of cookies on your device. Atlassian cookies and tracking notice, (opens new window)
The Vienna Ab initio Simulation Package (VASP), is a package for performing ab initio quantum mechanical calculations using either Vanderbilt pseudopotentials, or the projector augmented wave method and a plane wave basis set.
VASP Homepage: Access to VASP News, Wiki, Support Forum and Portal
Please consult the VASP FAQ for more details regards licensing.
For Example: To whom are VASP licenses given?
VASP licenses are given to well-defined research groups only. They are not department-or institution-wide, also they are not personal licenses. All members of a VASP-group have to work in the same organizational unit (Department, Institute) at the same location.
VASP-licenses are not transferable from one research institution to another one. Any transfer of a license to another group at the same research institution has to be approved by the VASP Software GmbH explicitly.
Using
NOTE: VASP is NOT publicly available to users across the clusters. Instead, there are local installations per project with each project having its own license agreement. If ARCC comes across users abusing the licensing agreement we will have to act on it.
Multicore
Note: Although ARCC can assist in the functional setup and running of VASP on the cluster, we do leave the science up to the researchers.
With this in mind, there are a number of pages on the VASP Wiki that make suggestions on how best to configure simulation inputs with respect to nodes/cores, as well as memory considerations.
VASP Wiki:
NCORE: determines the number of compute cores that work on an individual orbital. Default: NCORE = 1
NPAR determines the number of bands that are treated in parallel. Default: NPAR = number of cores
These are just a few, please look through the VASP Wiki for others. If you find further details, please pass them onto us and we can add them to this page.
ISTART: Related to starting a job and determines whether or not to read the WAVECAR file.
The basic process is to unpack the provided source tar file. Copy and update an appropriate arch/makefile.include.<version> file, and then build.
Below is an example using a <version> that ARCC believes is suitable. By all means select and try a different <version> but you will need to select appropriate compilers and related libraries, as well as updating the makefile.include.
With the example below, you will need to update <project-name> appropriately.
MedicineBow: Version 6.3.2
# We suggest building this software underneath your related project, so it can be shared across that project,
# specifically under /project/<project-name>/software/.
[]$ tar -xf vasp.6.3.2.tar
[]$ cd vasp.6.3.2/
[]$ cp arch/makefile.include.gnu_omp .
[]$ mv makefile.include.gnu_omp makefile.include
# Update the makefile.include file.
[]$ module load gcc/14.2.0 openmpi/5.0.5 fftw/3.3.10-ompi openblas/0.3.24 netlib-scalapack/2.2.0-ompi wannier90/3.1.0 hdf5/1.14.3__hl_True__fortran_True-ompi
[]$ make all
[]$ ls bin/
vasp_gam vasp_ncl vasp_std
You need to update the makefile.include file. The following modifications have been made:
Commented out native compiling.
Have explicitly added the paths to openblas, scalapack and fftw.
Building with, and thus adding paths to, hdf5 and wannier90.
The wannier90 library typically installs the actual library file in its parent folder, and not a sub lib/ folder. This modifies the makefile.include to: LLIBS += -L$(WANNIER90_ROOT)/ -lwannier i.e the lib folder is not included.
Compiling fftlib.
# Default precompiler options
CPP_OPTIONS = -DHOST=\"LinuxGNU\" \
-DMPI -DMPI_BLOCK=8000 -Duse_collective \
-DscaLAPACK \
-DCACHE_SIZE=4000 \
-Davoidalloc \
-Dvasp6 \
-Duse_bse_te \
-Dtbdyn \
-Dfock_dblbuf \
-D_OPENMP
CPP = gcc -E -C -w $*$(FUFFIX) >$*$(SUFFIX) $(CPP_OPTIONS)
FC = mpif90 -fopenmp
FCL = mpif90 -fopenmp
FREE = -ffree-form -ffree-line-length-none
FFLAGS = -w -ffpe-summary=none
OFLAG = -O2
OFLAG_IN = $(OFLAG)
DEBUG = -O0
OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o
OBJECTS_O1 += fftw3d.o fftmpi.o fftmpiw.o
OBJECTS_O2 += fft3dlib.o
# For what used to be vasp.5.lib
CPP_LIB = $(CPP)
FC_LIB = $(FC)
CC_LIB = gcc
CFLAGS_LIB = -O
FFLAGS_LIB = -O1
FREE_LIB = $(FREE)
OBJECTS_LIB = linpack_double.o
# For the parser library
CXX_PARS = g++
LLIBS = -lstdc++
##
## Customize as of this point! Of course you may change the preceding
## part of this file as well if you like, but it should rarely be
## necessary ...
##
# When compiling on the target machine itself, change this to the
# relevant target when cross-compiling for another architecture
# VASP_TARGET_CPU ?= -march=native
# FFLAGS += $(VASP_TARGET_CPU)
# For gcc-10 and higher (comment out for older versions)
FFLAGS += -fallow-argument-mismatch
# BLAS and LAPACK (mandatory)
OPENBLAS_ROOT ?= /apps/u/spack/gcc/14.2.0/openblas/0.3.24-52ip5la/
BLASPACK = -L$(OPENBLAS_ROOT)/lib -lopenblas
# scaLAPACK (mandatory)
SCALAPACK_ROOT ?= /apps/u/spack/gcc/14.2.0/netlib-scalapack/2.2.0-dbchdg6/
SCALAPACK = -L$(SCALAPACK_ROOT)/lib -lscalapack
LLIBS += $(SCALAPACK) $(BLASPACK)
# FFTW (mandatory)
FFTW_ROOT ?= /apps/u/spack/gcc/14.2.0/fftw/3.3.10-mk3sml6/
LLIBS += -L$(FFTW_ROOT)/lib -lfftw3 -lfftw3_omp
INCS += -I$(FFTW_ROOT)/include
# HDF5-support (optional but strongly recommended)
CPP_OPTIONS+= -DVASP_HDF5
HDF5_ROOT ?= /apps/u/spack/gcc/14.2.0/hdf5/1.14.3-2frri7c/
LLIBS += -L$(HDF5_ROOT)/lib -lhdf5_fortran
INCS += -I$(HDF5_ROOT)/include
# For the VASP-2-Wannier90 interface (optional)
CPP_OPTIONS += -DVASP2WANNIER90
WANNIER90_ROOT ?= /apps/u/opt/gcc/14.2.0/wannier90/3.1.0/
LLIBS += -L$(WANNIER90_ROOT)/ -lwannier
# For the fftlib library (recommended)
CPP_OPTIONS+= -Dsysv
FCL += fftlib.o
CXX_FFTLIB = g++ -fopenmp -std=c++11 -DFFTLIB_THREADSAFE
INCS_FFTLIB = -I./include -I$(FFTW_ROOT)/include
LIBS += fftlib
LLIBS += -ldl
Note: If you wish to use a different make.include.your_choice or try another process, then you’ll need to module load potentially a different compiler, and build core libraries if not built for that chosen compiler.
Suggested Module File Creation
If you have installed under say: /project/<project-name>/software/vasp.6.3.2/ you could create the following:
[]$ cd /project/<project-name>/software/
[]$ mkdir modules
[]$ cd modules
[]$ mkdir vasp
[]$ cd vasp
[]$ vim 6.3.2.lua
whatis([[Name : vasp]])
whatis([[Version : 6.3.2]])
whatis([[Short description : The Vienna Ab initio Simulation Package (VASP) is a computer program for atomic scale materials modelling, e.g. electronic structure calculations and quantum-mechanical molecular dynamics, from first principles. ]])
help([[
vasp : 6.3.2
The Vienna Ab initio Simulation Package (VASP) is a computer program for atomic scale materials modelling, e.g. electronic structure calculations and quantum-mechanical molecular dynamics, from first principles.
https://vasp.at/
]])
if not isloaded("gcc/14.2.0") then
load("gcc/14.2.0")
end
if not isloaded("openmpi/5.0.5") then
load("openmpi/5.0.5")
end
if not isloaded("fftw/3.3.10-ompi") then
load("fftw/3.3.10-ompi")
end
if not isloaded("openblas/0.3.24") then
load("openblas/0.3.24")
end
if not isloaded("netlib-scalapack/2.2.0-ompi") then
load("netlib-scalapack/2.2.0-ompi")
end
if not isloaded("wannier90/3.1.0") then
load("wannier90/3.1.0")
end
if not isloaded("hdf5/1.14.3__hl_True__fortran_True-ompi") then
load("hdf5/1.14.3__hl_True__fortran_True-ompi")
end
prepend_path("PATH", "/project/<project-name>/software/vasp.6.3.2/bin")