Installation of VASP 6.2 with ifort

Questions regarding the compilation of VASP on various platforms: hardware, compilers and libraries, etc.

Moderators: Global Moderator, Moderator

Post Reply
Message
Author
frank_niessen
Newbie
Newbie
Posts: 21
Joined: Wed Aug 12, 2020 8:00 am

Installation of VASP 6.2 with ifort

#1 Post by frank_niessen » Thu Mar 11, 2021 4:05 pm

Hi,

in addition to the installation on the cluster I would like to have a local installation on my pc. I do have Intel parallel studio, but only the composer edition, meaning that I only have the "ifort" compiler. I cannot find any compiler makefile.include for this case in the arch folder. Is this at all possible?

merzuk.kaltak
Administrator
Administrator
Posts: 123
Joined: Mon Sep 24, 2018 9:39 am

Re: Installation of VASP 6.2 with ifort

#2 Post by merzuk.kaltak » Thu Mar 11, 2021 4:11 pm

Hello,
you can compile vasp in the serial version using only ifort (no mpi and no scalapack).
Bear in mind that the serial version can run only with one single processor task.
Here is a makefile to compile vasp with the serial version using ifort.

Code: Select all

# Precompiler options
CPP_OPTIONS= -DHOST=\"LinuxIFC\"\
             -DCACHE_SIZE=4000 \
             -Davoidalloc \
             -Duse_bse_te \
             -Dtbdyn \
             -Dfock_dblbuf

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

FC         = ifort
FCL        = ifort -mkl=sequential

FREE       = -free -names lowercase

FFLAGS     = -assume byterecl -w -xHOST
OFLAG      = -O2
OFLAG_IN   = $(OFLAG)
DEBUG      = -O0

MKL_PATH   = $(MKLROOT)/lib/intel64
BLAS       =
LAPACK     =
BLACS      =
SCALAPACK  =

OBJECTS    = fft3dfurth.o fft3dlib.o

INCS       =-I$(MKLROOT)/include/fftw

LLIBS      = $(SCALAPACK) $(LAPACK) $(BLAS)

OBJECTS_O1 += fft3dfurth.o 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     = icc
CFLAGS_LIB = -O
FFLAGS_LIB = -O1
FREE_LIB   = $(FREE)

OBJECTS_LIB= linpack_double.o

# For the parser library
CXX_PARS   = icpc
LLIBS      += -lstdc++

# Normally no need to change this
SRCDIR     = ../../src
BINDIR     = ../../bin
The same file can be found in ./arch/makefile.include.linux_intel_serial

frank_niessen
Newbie
Newbie
Posts: 21
Joined: Wed Aug 12, 2020 8:00 am

Re: Installation of VASP 6.2 with ifort

#3 Post by frank_niessen » Thu Mar 11, 2021 4:21 pm

Thank you! Is there no way of adding openmp support to this? Is there a different way of parallelization if I do not have the mpiifort compiler?

frank_niessen
Newbie
Newbie
Posts: 21
Joined: Wed Aug 12, 2020 8:00 am

Re: Installation of VASP 6.2 with ifort

#4 Post by frank_niessen » Thu Mar 11, 2021 4:23 pm

I am running Ubuntu 20.04 on my local machine.
When using your makefile.include I get the error:

if [ ! -d build/std ] ; then mkdir build/std ; fi;
cp src/makefile src/.objects src/makedeps.awk makefile.include build/std ;
make -C build/std VERSION=std cleandependencies -j1
make[1]: Entering directory '/home/frannie/VASP_6_2_0/build/std'
rm -f .depend
make[1]: Leaving directory '/home/frannie/VASP_6_2_0/build/std'
make -C build/std VERSION=std all
make[1]: Entering directory '/home/frannie/VASP_6_2_0/build/std'
rsync -ru ../../src/lib .
cp makefile.include lib
make -C lib -j1
make[2]: Entering directory '/home/frannie/VASP_6_2_0/build/std/lib'
make libdmy.a
make[3]: Entering directory '/home/frannie/VASP_6_2_0/build/std/lib'
make[3]: 'libdmy.a' is up to date.
make[3]: Leaving directory '/home/frannie/VASP_6_2_0/build/std/lib'
make[2]: Leaving directory '/home/frannie/VASP_6_2_0/build/std/lib'
rsync -ru ../../src/parser .
cp makefile.include parser
make -C parser -j1
make[2]: Entering directory '/home/frannie/VASP_6_2_0/build/std/parser'
make libparser.a
make[3]: Entering directory '/home/frannie/VASP_6_2_0/build/std/parser'
make[3]: 'libparser.a' is up to date.
make[3]: Leaving directory '/home/frannie/VASP_6_2_0/build/std/parser'
make[2]: Leaving directory '/home/frannie/VASP_6_2_0/build/std/parser'
rsync -u ../../src/*.F ../../src/*.inc .
rm -f vasp ; make vasp ; cp vasp ../../bin/vasp_std
make[2]: Entering directory '/home/frannie/VASP_6_2_0/build/std'
ifort -free -names lowercase -assume byterecl -w -xHOST -O1 -I/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/include/fftw -c fft3dfurth.f90
./fft3dsimple.F(46): error #7013: This module file was not generated by any release of this compiler. [PREC]
USE prec
----------^
./fft3dsimple.F(48): error #6683: A kind type parameter must be a compile-time constant. [Q]
IMPLICIT COMPLEX(q) (C)
-----------------------^
./fft3dsimple.F(49): error #6683: A kind type parameter must be a compile-time constant. [Q]
IMPLICIT REAL(q) (A-B,D-H,O-Z)
--------------------^
./fft3dsimple.F(50): error #6457: This derived type name has not been declared. [GRID_3D]
TYPE (grid_3d) GRID
------------^
./fft3dsimple.F(51): error #6683: A kind type parameter must be a compile-time constant. [Q]
COMPLEX(q) C(0:1)
--------------^
./fft3dsimple.F(52): error #6535: This variable or component must be of a derived or structure type. [VTUTOR]
CALL vtutor%error("FFTBAS: is not implemented")
-----------^
./fft3dsimple.F(52): error #6460: This is not a field name that is defined in the encompassing structure. [ERROR]
CALL vtutor%error("FFTBAS: is not implemented")
------------------^
./fft3dsimple.F(71): error #7013: This module file was not generated by any release of this compiler. [PREC]
USE prec
----------^
./fft3dsimple.F(73): error #6683: A kind type parameter must be a compile-time constant. [Q]
IMPLICIT COMPLEX(q) (C)
-----------------------^
./fft3dsimple.F(74): error #6683: A kind type parameter must be a compile-time constant. [Q]
IMPLICIT REAL(q) (A-B,D-H,O-Z)
--------------------^
./fft3dsimple.F(75): error #6457: This derived type name has not been declared. [GRID_3D]
TYPE (grid_3d) GRID
------------^
./fft3dsimple.F(76): error #6683: A kind type parameter must be a compile-time constant. [Q]
COMPLEX(q) C(0:1)
--------------^
./fft3dsimple.F(77): error #6535: This variable or component must be of a derived or structure type. [VTUTOR]
CALL vtutor%error("FFTBRC: is not implemented")
-----------^
./fft3dsimple.F(77): error #6460: This is not a field name that is defined in the encompassing structure. [ERROR]
CALL vtutor%error("FFTBRC: is not implemented")
------------------^
./fft3dsimple.F(97): error #7013: This module file was not generated by any release of this compiler. [PREC]
USE prec
----------^
./fft3dsimple.F(104): error #6457: This derived type name has not been declared. [GRID_3D]
TYPE (grid_3d) GRID
------------^
./fft3dsimple.F(112): error #6683: A kind type parameter must be a compile-time constant. [Q]
REAL(q) :: FACTM
-----------^
./fft3dsimple.F(114): error #6404: This name does not have a type, and must have an explicit type. [GRID]
IF (GRID%REAL2CPLX) THEN
----------^
./fft3dsimple.F(114): error #6460: This is not a field name that is defined in the encompassing structure. [REAL2CPLX]
IF (GRID%REAL2CPLX) THEN
---------------^
./fft3dsimple.F(114): error #6341: A logical data type is required in this context. [REAL2CPLX]
IF (GRID%REAL2CPLX) THEN
---------------^
./fft3dsimple.F(117): error #6404: This name does not have a type, and must have an explicit type. [VTUTOR]
CALL vtutor%error("FFT3D: real version works only for 1 k-point")
-----------------^
./fft3dsimple.F(117): error #6460: This is not a field name that is defined in the encompassing structure. [ERROR]
CALL vtutor%error("FFT3D: real version works only for 1 k-point")
------------------------^
./fft3dsimple.F(121): error #6460: This is not a field name that is defined in the encompassing structure. [NGPTAR]
NX=GRID%NGPTAR(1)
-----------------^
./fft3dsimple.F(125): error #6460: This is not a field name that is defined in the encompassing structure. [FFTSCA]
NULLIFY(GRID%FFTSCA)
----------------------^
./fft3dsimple.F(132): error #6460: This is not a field name that is defined in the encompassing structure. [RC]
N1= MOD((IND-1),GRID%RC%NROW)+1
---------------------------------^
./fft3dsimple.F(132): error #6460: This is not a field name that is defined in the encompassing structure. [NROW]
N1= MOD((IND-1),GRID%RC%NROW)+1
------------------------------------^
./fft3dsimple.F(132): error #6363: The intrinsic data types of the arguments must be the same. [MOD]
N1= MOD((IND-1),GRID%RC%NROW)+1
----------------------------^
./fft3dsimple.F(134): error #6460: This is not a field name that is defined in the encompassing structure. [I2]
N2= GRID%RC%I2(NC)
------------------------^
./fft3dsimple.F(135): error #6460: This is not a field name that is defined in the encompassing structure. [I3]
N3= GRID%RC%I3(NC)
------------------------^
./fft3dsimple.F(139): error #6460: This is not a field name that is defined in the encompassing structure. [LPCTY]
N2INV=MOD(-GRID%LPCTY(N2)+GRID%NGY,GRID%NGY)+1
-------------------------------^
fft3dfurth.f90(565): catastrophic error: Too many errors, exiting
compilation aborted for fft3dfurth.f90 (code 1)
make[2]: *** [makefile:185: fft3dfurth.o] Error 1
make[2]: Leaving directory '/home/frannie/VASP_6_2_0/build/std'
cp: cannot stat 'vasp': No such file or directory
make[1]: *** [makefile:146: all] Error 1
make[1]: Leaving directory '/home/frannie/VASP_6_2_0/build/std'
make: *** [makefile:9: std] Error 2

merzuk.kaltak
Administrator
Administrator
Posts: 123
Joined: Mon Sep 24, 2018 9:39 am

Re: Installation of VASP 6.2 with ifort

#5 Post by merzuk.kaltak » Fri Mar 12, 2021 11:20 am

It seems that you have compiled some modules with another compiler (perhaps changed the makefile.include) after issuing a failed "make std gam ncl" command.
Perhaps you need to run a "make veryclean" and then "make std gam ncl" to straighten that out.

frank_niessen
Newbie
Newbie
Posts: 21
Joined: Wed Aug 12, 2020 8:00 am

Re: Installation of VASP 6.2 with ifort

#6 Post by frank_niessen » Fri Mar 12, 2021 12:55 pm

I have tried that leaving me with this error:

if [ ! -d build/std ] ; then mkdir build/std ; fi;
cp src/makefile src/.objects src/makedeps.awk makefile.include build/std ;
make -C build/std VERSION=std cleandependencies -j1
make[1]: Entering directory '/home/frannie/VASP_6_2_0/build/std'
rm -f .depend
make[1]: Leaving directory '/home/frannie/VASP_6_2_0/build/std'
make -C build/std VERSION=std all
make[1]: Entering directory '/home/frannie/VASP_6_2_0/build/std'
rsync -ru ../../src/lib .
cp makefile.include lib
make -C lib -j1
make[2]: Entering directory '/home/frannie/VASP_6_2_0/build/std/lib'
make libdmy.a
make[3]: Entering directory '/home/frannie/VASP_6_2_0/build/std/lib'
fpp -f_com=no -free -w0 preclib.F preclib.f90
ifort -O1 -free -names lowercase -c -o preclib.o preclib.f90
icc -O -c -o timing_.o timing_.c
make[3]: icc: Command not found
make[3]: *** [makefile:31: timing_.o] Error 127
make[3]: Leaving directory '/home/frannie/VASP_6_2_0/build/std/lib'
make[2]: *** [makefile:18: all] Error 2
make[2]: Leaving directory '/home/frannie/VASP_6_2_0/build/std/lib'
make[1]: *** [makefile:160: lib] Error 2
make[1]: Leaving directory '/home/frannie/VASP_6_2_0/build/std'
make: *** [makefile:9: std] Error 2

merzuk.kaltak
Administrator
Administrator
Posts: 123
Joined: Mon Sep 24, 2018 9:39 am

Re: Installation of VASP 6.2 with ifort

#7 Post by merzuk.kaltak » Mon Mar 15, 2021 8:15 am

Dear Frank,
icc is the Intel C-Compiler. This is not an error related to VASP. Please setup your environment correctly.
Perhaps your system administrator can help you.

frank_niessen
Newbie
Newbie
Posts: 21
Joined: Wed Aug 12, 2020 8:00 am

Re: Installation of VASP 6.2 with ifort

#8 Post by frank_niessen » Mon Mar 15, 2021 3:08 pm

Hi again,

I will try to reinstall Intel Parallel studio.

Regarding my previous question:
Is there no way of adding openmp support to this? Is there a different way of parallelization if I do not have the mpiifort compiler?

merzuk.kaltak
Administrator
Administrator
Posts: 123
Joined: Mon Sep 24, 2018 9:39 am

Re: Installation of VASP 6.2 with ifort

#9 Post by merzuk.kaltak » Tue Mar 16, 2021 11:39 am

I have never tried to install the serial version with OpenMP support.
In principle this sould workd by adding the proper mp-flag to the compiler.
For Intel-compilers this flag is "-qopenmp", for gfortran the flag is "-fopenmp" and for pgi/nvidia it is "-mp".
Also, you have to add

Code: Select all

CPP_OPTIONS += -D_OPENMP
in the makefile.include. I suggest you look at "makefile.include.linux_intel_omp" in the "arch" folder for more information.
However, it is probably wiser to install OpenMPI instead of using the serial version with OpenMP support.

frank_niessen
Newbie
Newbie
Posts: 21
Joined: Wed Aug 12, 2020 8:00 am

Re: Installation of VASP 6.2 with ifort

#10 Post by frank_niessen » Thu Mar 18, 2021 5:39 am

So I was missing the icc compiler. I have now installed that and succesfully compiled VASP. However, running the test, I get quite some errors on the way and the test even gets stuck at some point. I mostly get this error:

-----------------------------------------------------------------------------
| |
| EEEEEEE RRRRRR RRRRRR OOOOOOO RRRRRR ### ### ### |
| E R R R R O O R R ### ### ### |
| E R R R R O O R R ### ### ### |
| EEEEE RRRRRR RRRRRR O O RRRRRR # # # |
| E R R R R O O R R |
| E R R R R O O R R ### ### ### |
| EEEEEEE R R R R OOOOOOO R R ### ### ### |
| |
| LAPACK: Routine ZPOTRF failed! INFO:1 KPOINT:1 SPIN:1 |
| |
| ----> I REFUSE TO CONTINUE WITH THIS SICK JOB ... BYE!!! <---- |
| |
-----------------------------------------------------------------------------

frank_niessen
Newbie
Newbie
Posts: 21
Joined: Wed Aug 12, 2020 8:00 am

Re: Installation of VASP 6.2 with ifort

#11 Post by frank_niessen » Thu Mar 18, 2021 9:22 am

I attached the log file of the test from the point where it gets stuck.
You do not have the required permissions to view the files attached to this post.

merzuk.kaltak
Administrator
Administrator
Posts: 123
Joined: Mon Sep 24, 2018 9:39 am

Re: Installation of VASP 6.2 with ifort

#12 Post by merzuk.kaltak » Thu Mar 18, 2021 11:19 am

You have compiled the serial version of vasp, but execute it on four MPI ranks as shown by the header of the testsuite.log.
I strongly recommend to recompile the code using MPI, since you have access to "mpirun" and
your testsuite.log shows multiple output. However, you can do the following if you insist running the code in serial

Code: Select all

export VASP_TESTSUITE_EXE_STD="/home/frannie/VASP_6_2_0/testsuite/../bin/vasp_std"
export VASP_TESTSUITE_EXE_GAM=/home/frannie/VASP_6_2_0/testsuite/../bin/vasp_gam"
export VASP_TESTSUITE_EXE_NCL="/home/frannie/VASP_6_2_0/testsuite/../bin/vasp_ncl"

frank_niessen
Newbie
Newbie
Posts: 21
Joined: Wed Aug 12, 2020 8:00 am

Re: Installation of VASP 6.2 with ifort

#13 Post by frank_niessen » Thu Mar 18, 2021 11:25 am

I am sorry if I misunderstand you, but I cannot compile following the "makefile.include.linux_intel" since I do not have the mpiifort compiler (I do have mpifort).
So with which "makefile.include" do you suggest I should run?

merzuk.kaltak
Administrator
Administrator
Posts: 123
Joined: Mon Sep 24, 2018 9:39 am

Re: Installation of VASP 6.2 with ifort

#14 Post by merzuk.kaltak » Thu Mar 18, 2021 11:28 am

OK, then please use "makefile.incldue.linux_intel" as makefile and change "mpiifort" to "mpifort". Then do a "make veryclean" followed by a "make std gam ncl".

frank_niessen
Newbie
Newbie
Posts: 21
Joined: Wed Aug 12, 2020 8:00 am

Re: Installation of VASP 6.2 with ifort

#15 Post by frank_niessen » Thu Mar 18, 2021 11:39 am

This leaves me with this error:

if [ ! -d build/std ] ; then mkdir build/std ; fi;
cp src/makefile src/.objects src/makedeps.awk makefile.include build/std ;
make -C build/std VERSION=std cleandependencies -j1
make[1]: Entering directory '/home/frannie/VASP_6_2_0b/build/std'
rm -f .depend
make[1]: Leaving directory '/home/frannie/VASP_6_2_0b/build/std'
make -C build/std VERSION=std all
make[1]: Entering directory '/home/frannie/VASP_6_2_0b/build/std'
rsync -ru ../../src/lib .
cp makefile.include lib
make -C lib -j1
make[2]: Entering directory '/home/frannie/VASP_6_2_0b/build/std/lib'
make libdmy.a
make[3]: Entering directory '/home/frannie/VASP_6_2_0b/build/std/lib'
fpp -f_com=no -free -w0 preclib.F preclib.f90
mpifort -O1 -free -names lowercase -c -o preclib.o preclib.f90
gfortran: error: lowercase: No such file or directory
gfortran: error: unrecognized command line option ‘-names’
make[3]: *** [makefile:28: preclib.o] Error 1
make[3]: Leaving directory '/home/frannie/VASP_6_2_0b/build/std/lib'
make[2]: *** [makefile:18: all] Error 2
make[2]: Leaving directory '/home/frannie/VASP_6_2_0b/build/std/lib'
make[1]: *** [makefile:160: lib] Error 2
make[1]: Leaving directory '/home/frannie/VASP_6_2_0b/build/std'
make: *** [makefile:9: std] Error 2

Post Reply