Compiling VASP 5.2.12 on HECToR Phase 3 (XE6)

This page provides compilation instructions for VASP 5.2.12 on HECToR Phase 3 (Cray XE6, Interlagos).

Module Setup

Swap to the GNU compiler suite; load the FFTW library module and the hugepages module:

module swap PrgEnv-cray PrgEnv-gnu
module add fftw
module add craype-hugepages2M

Swap to GCC 4.6.3 as the 4.7.* series have introduced a check on syntax that VASP fails (cannot use a module in a source file with the same name as the module, fails for 'dfast.F'). This also means you need to swap to an older version of LibSci (for BLAS, LAPACK and SCALAPACK).

module swap gcc gcc/4.6.3
module swap xt-libsci cray-libsci/11.1.01

Full list of loaded modules at compile time for the centrally installed version:

Currently Loaded Modulefiles:
  1) modules/3.2.6.7
  2) nodestat/2.2-1.0400.31264.2.5.gem
  3) sdb/1.0-1.0400.32124.7.19.gem
  4) MySQL/5.0.64-1.0000.5053.22.1
  5) lustre-cray_gem_s/1.8.6_2.6.32.45_0.3.2_1.0400.6453.7.1-1.0400.39662.3.1
  6) udreg/2.3.1-1.0400.4264.3.1.gem
  7) ugni/2.3-1.0400.4374.4.88.gem
  8) gni-headers/2.1-1.0400.4351.3.1.gem
  9) dmapp/3.2.1-1.0400.4255.2.159.gem
 10) xpmem/0.1-2.0400.31280.3.1.gem
 11) hss-llm/6.0.0
 12) Base-opts/1.0.2-1.0400.31284.2.2.gem
 13) xtpe-network-gemini
 14) PrgEnv-gnu/4.0.46
 15) atp/1.6.2
 16) xt-asyncpe/5.20
 17) pmi/4.0.0-1.0000.9282.69.4.gem
 18) cray-libsci/11.1.01
 19) xt-totalview/8.11.0
 20) totalview-support/1.1.4
 21) gcc/4.6.3
 22) pbs/10.2.2.113537
 23) packages-phase3
 24) bolt/0.5
 25) budgets/1.0
 26) craype-interlagos
 27) cray-mpich2/5.6.5
 28) fftw/3.3.0.2
 29) craype-hugepages2M

Modify the makefile

Full preprocessor flag list:

CPP    = $(CPP_) -DMPI -DHOST=\"CrayXE-GNU\" \
          -DNGZhalf \
          -Dkind8 \
          -DCACHE_SIZE=2000 \
          -Davoidalloc \
          -DRPROMU_DGEMV  \
          -DMPI_BLOCK=100000 \
          -Duse_collective \
          -Drandom_array \
          -DscaLAPACK

Above is for multiple k-point version of VASP. For the GAMMA-point only code you would add -DwNGZhalf ; for the noncollinear versions you would remove -DNGZhalf.; and for the Anderesen thermostat version you would add -Dtbdyn.

Additional changes:

FFLAGS = -ffree-form -ffree-line-length-none
OFLAG  = -O3 -fexternal-blas -ffast-math -funroll-loops

Use the FFTW library for Fourier transforms:

# FFT: FFTW3
FFT3D   = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o

Build the code

Get the makefiles from /usr/local/packages/vasp5/5.2.12-phase3/makefiles:

  • makefile.cray_xe_gnu.lib - Makefile for vasp5.lib source code
  • makefile.cray_xe_gnu - Makefile for multiple k-point VASP
  • makefile.cray_xe.gnu.gamma - Makefile for GAMMA-point only VASP
  • makefile.cray_xe_gnu.noncollinear - Makefile for multiple k-point, noncollinear VASP
  • makefile.cray_xe_gnu.tbdyn - Makefile for multiple k-point with Andersen thermostat

Build the library code

cd vasp.5.lib
make -f makefile.cray_xe_gnu.lib clean
make -f makefile.cray_xe_gnu.lib

Build the main code:

cd vasp.5.2
make -f makefile.cray_xe_gnu clean
make -f makefile.cray_xe_gnu

This will build the multiple k-point version of the code. Use the different makefiles for different versions of VASP (note: they all produce an executable called vasp).

Including the VTST routines

The University of Texas provide a number of modifications to the VASP code for transition state calculations. To add these to VASP you shoul first download the code and scripts from:

You then need to make a couple of modifications to source code files. Firstly, in main.F replace the lines:

      CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
           LATT_CUR%A,LATT_CUR%B,IO%IU6)

with:

      CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
           TSIF,LATT_CUR%A,LATT_CUR%B,IO%IU6)

Secondly, in the chain.F file, replace the line:

      PARAMETER EVTOJ=1.60217733E-19_q

with:

      REAL(q), PARAMETER :: EVTOJ=1.60217733E-19_q

Next, you need to add the following lines to the list of object files in the VASP makefiles:

         dimer.o dynmat.o neb.o lanczos.o instanton.o \
         sd.o cg.o qm.o lbfgs.o bfgs.o fire.o opt.o \

after the line:

         dos.o      elf.o      tet.o      tetweight.o hamil_rot.o \

Back to the VASP page