Makefile.include: Difference between revisions

From VASP Wiki
Line 57: Line 57:
----
----
When you plan to [[Hybrid_MPI/OpenMP_parallelization|run VASP on multiple OpenMP threads]] and you are not using the FFTs from the Intel-MKL library, you should link against <tt>fftlib</tt> (included in the VASP distribution).
When you plan to [[Hybrid_MPI/OpenMP_parallelization|run VASP on multiple OpenMP threads]] and you are not using the FFTs from the Intel-MKL library, you should link against <tt>fftlib</tt> (included in the VASP distribution).
To do so, uncomment the corresponding sections in the [[#Archetypical files|makefile.include.*_omp files]], ''e.g.'' in makefile.include.gnu_omp:
To do so, uncomment the corresponding sections in the [[#Archetypical files|makefile.include.*_omp files]], ''e.g.'' in [[makefile.include.gnu_omp]] that would be:


  # For the fftlib library (recommended)
  # For the fftlib library (recommended)

Revision as of 12:31, 9 April 2022


Writing a makefile.include file from scratch is not easy, so we suggest taking one of archetypical files that closely resembles your system as a starting point. It is necessary to customize it anyways to set appropriate paths etc. Optionally, you can enable additional features by setting precompiler flags or linking VASP to other libraries. For instance, we strongly recommend enabling HDF5 support.

Archetypical files

The templates contain information such as precompiler options, compiler options, and how to link libraries. Choose the template based on the compiler, parallelization etc. from the list below and mind the description:

Intel Composer suite and oneAPI Base + HPC toolkits for CPUs

GNU compilers for CPUs

NVIDIA HPC-SDK for CPU and GPU

Others

An advanced system administrator might benefit from a more detailed discussion about the precompiler options, compiler options, and how to link libraries.

Customize

Open the selected template of the archetypical files and add the required information as explained in the comments towards the end of the file. Then, add any optional feature as listed below. For more details see the list of precompiler options.

HDF5 support (strongly recommended)


This is essential for reading and writing HDF5 files, such as vaspout.h5. The HDF5 library is available for download on the HDF5 official website. To activate this feature set the following:

CPP_OPTIONS+= -DVASP_HDF5
HDF5_ROOT  ?= /path/to/your/hdf5/installation
LLIBS      += -L$(HDF5_ROOT)/lib -lhdf5_fortran
INCS       += -I$(HDF5_ROOT)/include

Available for VASP >= 6.2.0.

fftlib (recommended when using OpenMP)


When you plan to run VASP on multiple OpenMP threads and you are not using the FFTs from the Intel-MKL library, you should link against fftlib (included in the VASP distribution). To do so, uncomment the corresponding sections in the makefile.include.*_omp files, e.g. in makefile.include.gnu_omp that would be:

# 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

Wannier90 (optional)


Download Wannier90 and compile libwannier.a.

Important: In case of Wannier90 3.x, you should compile a serial version by removing COMMS=mpi in the make.inc of Wannier90.

Then, execute make lib to build the Wannier90 library. To activate this feature set the following:

CPP_OPTIONS    += -DVASP2WANNIER90
WANNIER90_ROOT ?= /path/to/your/wannier90/installation
LLIBS          += -L$(WANNIER90_ROOT)/lib -lwannier
Mind: VASP version <= 6.1.x are compatible with Wannier90 <= 1.2. To interface VASP 6.1.x with Wannier90 2.x, set -DVASP2WANNIER90v2 instead. As of VASP 6.2.x only Wannier90 2.x and 3.x are supported.

Libbeef (optional)


The library of BEEF Van-der-Waals functionals is available for download on github. Then, set the following:

CPP_OPTIONS  += -Dlibbeef
LIBBEEF_ROOT ?= /path/to/your/libbeef/installation
LLIBS        += -L$(LIBBEEF_ROOT)/lib -lbeef

Libxc (optional)


You need to download Libxc from the source and install it. Note that to get correct results with meta-GGA functionals (see discussion at LTBOUNDLIBXC), it is necessary to use Libxc from version 5.2.0 onwards (or the master version from gitlab for the latest implemented functionals) and to compile it with the option --disable-fhc. For instance, with GNU Autotools the steps to compile Libxc are

autoreconf -i (necessary only if Libxc was downloaded from gitlab)
./configure --prefix=PATH/TO/LIBXC --disable-fhc
make
make install

Then, add the following in the VASP makefile.include

CPP_OPTIONS += -DUSELIBXC
LIBXC_ROOT  ?= /path/to/your/libxc/installation
LLIBS       += -L$(LIBXC_ROOT)/lib -lxcf03 -lxc
INCS        += -I$(LIBXC_ROOT)/include

DFTD4 (optional)


To include the DFTD4 van-der-Waals functional, install the DFTD4 library from the source on github. Then, add the following

CPP_OPTIONS += -DDFTD4 
DFTD4_ROOT  ?= /path/to/your/dft4/installation
LLIBS       += -L$(DFTD4_ROOT)/build -ldftd4
INCS        += -I$(DFTD4_ROOT)/libdftd4.a.p

Related articles

Installing VASP.6.X.X, Compiler options, Precompiler options, Linking to libraries, OpenACC GPU port of VASP, Toolchains, Validation tests, Known issues


Contents