Table of Contents

Receta de compilación de VASP

Disclaimer: Es necesario tener una licencia de VASP para poder acceder a los archivos fuentes.

Dependencias

Intel OneAPI

Viene incluído en el cluster. Se accede mediante el módulo intel. La versión default es la 2023.2.1.

Intel MPI

Viene inluído en el cluster. Luego de cargar el módulo intel, se debe cargar el módulo mpi.

Intel MKL

Viene incluído en el cluster. Se accede mediante el módulo intel. La versión default es la 2023.2.1.

Wannier90

Se encuentra en el directorio /data/shared/apps/wannier90.

LIBXC

Web oficial de libxc.

Descargar de aquí la versión de libxc deseada.

Dentro de un nodo de cómputo:

srun --pty -N 1 -n 1 -c 64 --cpu-bind=none bash
module purge
module load intel autotools
autoreconf -i
./configure --prefix=/data/shared/apps/libxc/7.0.0/ CC=icc CF=ifort --disable-fhc
make -j 64
make install

Al utilizar –disable-fhc los tests de make check fallan. Supuestamente se pueden parchear los tests. Ver issue en gitlab de libxc.

Luego de compilar, libxc se encuentra en el directorio /data/shared/apps/libxc/7.0.0/.

HDF5

Viene incluído en el cluster. Se accede mediante el módulo hdf5.

Compilando VASP

makefile.include

# Default precompiler options
CPP_OPTIONS = -DHOST=\"LinuxIFC\" \
              -DMPI -DMPI_BLOCK=8000 -Duse_collective \
              -DCACHE_SIZE=4000 \
              -Davoidalloc \
              -Dvasp6 \
              -Dtbdyn \
              -Dfock_dblbuf \
              -D_OPENMP

CPP         = fpp -f_com=no -free -w0  $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS)

FC          = mpiifort -qopenmp
FCL         = mpiifort

FREE        = -free -names lowercase

FFLAGS      = -assume byterecl -w

OFLAG       = -O2
OFLAG_IN    = $(OFLAG)
DEBUG       = -O0

# For what used to be vasp.5.lib
CPP_LIB     = $(CPP)
FC_LIB      = $(FC)
CC_LIB      = icc
CFLAGS_LIB  = -O
FFLAGS_LIB  = -O1
FREE_LIB    = $(FREE)

OBJECTS_LIB = linpack_double.o

# For the parser library
CXX_PARS    = icpc
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 ?= -xHOST
FFLAGS     += $(VASP_TARGET_CPU)

# Intel MKL (FFTW, BLAS, LAPACK, and scaLAPACK)
# (Note: for Intel Parallel Studio's MKL use -mkl instead of -qmkl)
FCL        += -qmkl
MKLROOT    ?= /opt/intel/oneapi/mkl/2023.2.0
LLIBS      += -L$(MKLROOT)/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64
INCS       += -I$(MKLROOT)/include/fftw

# HDF5-support (optional but strongly recommended, and mandatory for some features)
CPP_OPTIONS += -DVASP_HDF5
HDF5_ROOT   ?= /opt/ohpc/pub/libs/intel/hdf5/1.10.8
LLIBS       += -L$(HDF5_ROOT)/lib -lhdf5_fortran
INCS        += -I$(HDF5_ROOT)/include

# For the VASP-2-Wannier90 interface (optional)
CPP_OPTIONS    += -DVASP2WANNIER90
WANNIER90_ROOT ?= /data/shared/apps/wannier90/3.1.0
LLIBS          += -L$(WANNIER90_ROOT)/lib -lwannier

# For the fftlib library (hardly any benefit in combination with MKL's FFTs)
#FCL         = mpiifort fftlib.o -qmkl
#CXX_FFTLIB  = icpc -qopenmp -std=c++11 -DFFTLIB_USE_MKL -DFFTLIB_THREADSAFE
#INCS_FFTLIB = -I./include -I$(MKLROOT)/include/fftw
#LIBS       += fftlib
# For libxc

CPP_OPTIONS += -DUSELIBXC
LIBXC_ROOT  ?= /data/shared/apps/libxc/6.2.2
LLIBS       += -L$(LIBXC_ROOT)/lib -lxcf03 -lxc
INCS        += -I$(LIBXC_ROOT)/include

# For machine learning library vaspml (experimental)
#CPP_OPTIONS += -Dlibvaspml
#CPP_OPTIONS += -DVASPML_USE_CBLAS
#CPP_OPTIONS += -DVASPML_USE_MKL
#CPP_OPTIONS += -DVASPML_DEBUG_LEVEL=3
#CXX_ML      = mpiicpc -cxx=icpx -qopenmp
#CXXFLAGS_ML = -O3 -std=c++17 -Wall
#INCLUDE_ML  =

En un nodo de cómputo:

srun --pty -N 1 -n 1 -c 64 --cpu-bind=none bash

cargar módulos y compilar:

module purge
module load intel mpi hdf5
make DEPS=1 -j 64 all