Difference between revisions of "CP2K compiling with Intel"

From iRASPA
Jump to: navigation, search
(CP2K basic openmpi)
Line 133: Line 133:
  
 
<blockquote style="background-color: lightgrey; border: solid thin grey;">
 
<blockquote style="background-color: lightgrey; border: solid thin grey;">
CC      = /usr/lib64/openmpi4-intel/bin/mpicc<br>
+
CC      = /usr/lib64/openmpi4-intel/bin/mpicc<br>
FC      = /usr/lib64/openmpi4-intel/bin/mpifort<br>
+
FC      = /usr/lib64/openmpi4-intel/bin/mpifort<br>
LD      = /usr/lib64/openmpi4-intel/bin/mpifort<br>
+
LD      = /usr/lib64/openmpi4-intel/bin/mpifort<br>
AR      = xiar -r<br>
+
AR      = xiar -r<br>
 
<br>
 
<br>
DFLAGS  = -D__MPI_VERSION=4 -D__parallel -D__SCALAPACK<br>
+
DFLAGS  = -D__MPI_VERSION=4 -D__parallel -D__SCALAPACK<br>
DFLAGS  += -D__MKL -D__FFTW3 -D__SPGLIB<br>
+
DFLAGS  += -D__MKL -D__FFTW3 -D__SPGLIB<br>
DFLAG  +=-D__LIBXC -D__LIBINT -D__LIBXSMM<br>
+
DFLAG  +=-D__LIBXC -D__LIBINT -D__LIBXSMM<br>
 
<br>
 
<br>
CFLAGS  = $(DFLAGS) -O2 -xcore-avx2 -fp-model precise -I/usr/local/include<br>
+
CFLAGS  = $(DFLAGS) -O2 -xcore-avx2 -fp-model precise -I/usr/local/include<br>
 
<br>
 
<br>
FCFLAGS  = $(DFLAGS) -O2 -funroll-loops -fpp -free -xcore-avx2 -I/usr/local/include -L/usr/local/include<br>
+
FCFLAGS  = $(DFLAGS) -O2 -funroll-loops -fpp -free -xcore-avx2 -I/usr/local/include -L/usr/local/include<br>
FCFLAGS += -fp-model precise<br>
+
FCFLAGS += -fp-model precise<br>
FCFLAGS += -g -traceback<br>
+
FCFLAGS += -g -traceback<br>
FCFLAGS += -I${MKLROOT}/include -I${MKLROOT}/include/fftw<br>
+
FCFLAGS += -I${MKLROOT}/include -I${MKLROOT}/include/fftw<br>
 
<br>
 
<br>
LDFLAGS  = $(FCFLAGS) -static-intel<br>
+
LDFLAGS  = $(FCFLAGS) -static-intel<br>
LDFLAGS_C = $(FCFLAGS) -static-intel -nofor_main<br>
+
LDFLAGS_C = $(FCFLAGS) -static-intel -nofor_main<br>
 
<br>
 
<br>
INTEL_MKL_LIB  = ${MKLROOT}/lib/intel64<br>
+
INTEL_MKL_LIB  = ${MKLROOT}/lib/intel64<br>
 
<br>
 
<br>
LIBS        = /usr/local/lib/libgsl.a /usr/local/lib/libgslcblas.a<br>
+
LIBS        = /usr/local/lib/libgsl.a /usr/local/lib/libgslcblas.a<br>
LIBS      += /usr/local/lib/libxcf03.a /usr/local/lib/libxc.a<br>
+
LIBS      += /usr/local/lib/libxcf03.a /usr/local/lib/libxc.a<br>
LIBS      += /usr/local/lib/libxsmmf.a /usr/local/lib/libxsmm.a<br>
+
LIBS      += /usr/local/lib/libxsmmf.a /usr/local/lib/libxsmm.a<br>
LIBS      += /usr/local/lib/libint2.a<br>
+
LIBS      += /usr/local/lib/libint2.a<br>
LIBS      += $(MKLROOT)/interfaces/fftw3xf/libfftw3xf_intel.a \<br>
+
LIBS      += $(MKLROOT)/interfaces/fftw3xf/libfftw3xf_intel.a \<br>
              -Wl,--start-group \<br>
+
              -Wl,--start-group \<br>
              $(INTEL_MKL_LIB)/libmkl_scalapack_lp64.a \<br>
+
              $(INTEL_MKL_LIB)/libmkl_scalapack_lp64.a \<br>
              $(INTEL_MKL_LIB)/libmkl_blacs_openmpi_lp64.a \<br>
+
              $(INTEL_MKL_LIB)/libmkl_blacs_openmpi_lp64.a \<br>
              $(INTEL_MKL_LIB)/libmkl_intel_lp64.a \<br>
+
              $(INTEL_MKL_LIB)/libmkl_intel_lp64.a \<br>
              $(INTEL_MKL_LIB)/libmkl_sequential.a \<br>
+
              $(INTEL_MKL_LIB)/libmkl_sequential.a \<br>
              $(INTEL_MKL_LIB)/libmkl_core.a \<br>
+
              $(INTEL_MKL_LIB)/libmkl_core.a \<br>
              -Wl,--end-group<br>
+
              -Wl,--end-group<br>
LIBS      += -lz -lsymspg -ldl -lpthread -lm -lstdc++ -lmpi_mpifh -lmpi_cxx -lmpi<br>
+
LIBS      += -lz -lsymspg -ldl -lpthread -lm -lstdc++ -lmpi_mpifh -lmpi_cxx -lmpi<br>
 
<br>
 
<br>
# Required due to memory leak that occurs if high optimisations are used<br>
+
# Required due to memory leak that occurs if high optimisations are used<br>
mp2_optimize_ri_basis.o: mp2_optimize_ri_basis.F<br>
+
mp2_optimize_ri_basis.o: mp2_optimize_ri_basis.F<br>
 
                         $(FC) -c $(subst O2,O0,$(FCFLAGS)) $<
 
                         $(FC) -c $(subst O2,O0,$(FCFLAGS)) $<
 
</blockquote>
 
</blockquote>

Revision as of 20:12, 26 May 2020

Compiling

Compiling subpackages

Serial

preparation

source /opt/intel/compilers_and_libraries_2020/linux/bin/compilervars.sh intel64
source /opt/intel/compilers_and_libraries_2020/linux/mkl/bin/mklvars.sh intel64
export AR="xiar"
export FC="ifort"
export CC="icc"
export CXX="icpc"
export F77=${FC}
export F90=${FC}
==== Gsl ====

Reduced optimization to "-O1", but with intel-compiler still fails LinAlg-unit test

wget http://gnu.askapache.com/gsl/gsl-2.6.tar.gz
tar -zxvf gsl-2.6.tar.gz
 ./configure --prefix=/usr/local CC=icc FC=ifort CXX=icpc FCFLAGS="-O1 -xcore-avx2" CFLAGS="-O1 -xcore-avx2" CXXFLAGS="-O1 -xcore-avx2" --enable-shared=no
make -j 16
make check

Libint2

Reduced optimization to "-O2"

wget https://github.com/cp2k/libint-cp2k/releases/download/v2.6.0/libint-v2.6.0-cp2k-lmax-4.tgz
wget https://github.com/cp2k/libint-cp2k/releases/download/v2.6.0/libint-v2.6.0-cp2k-lmax-5.tgz
wget https://github.com/cp2k/libint-cp2k/releases/download/v2.6.0/libint-v2.6.0-cp2k-lmax-6.tgz
wget https://github.com/cp2k/libint-cp2k/releases/download/v2.6.0/libint-v2.6.0-cp2k-lmax-7.tgz
tar -zxvf libint-v2.6.0-cp2k-lmax-5.tgz
cd libint-v2.6.0-cp2k-lmax-5
./configure --prefix=/usr/local CC=icc FC=ifort CXX=icpc FCFLAGS="-O2 -xcore-avx2" CFLAGS="-O2 -xcore-avx2" CXXFLAGS="-O2 -xcore-avx2" --enable-shared=no --enable-fortran --with-cxx-optflags="-O2 -xcore-avx2"
make -j 24
make -j 24 check

all tests ok

edit Makefile in directory fortran line 12 should read (-lstdc++ added)

COMPUTE_LIB = -L../lib -lint2 -lstdc++

line 37 change CXX to FC

 $(LTLINK) $(FC) $(CXXFLAGS) $(LDFLAGS) $(COMPUTE_LIB) $(SYSLIBS) $(FCLIBS) -o $@ $^

sudo make install
sudo make install_fortran

/usr/local/lib/libint2.a

Libxsmm

A library for improved performance for matrix multiplication and deep learning primitives

wget https://www.cp2k.org/static/downloads/libxsmm-1.15.tar.gz
tar -zxvf libxsmm-1.15.tar.gz
sudo make PREFIX=/usr/local FC=/opt/intel/compilers_and_libraries_2020.1.217/linux/bin/intel64/ifort CC=/opt/intel/compilers_and_libraries_2020.1.217/linux/bin/intel64/icc CXX=/opt/intel/compilers_and_libraries_2020.1.217/linux/bin/intel64/icpc FCFLAGS="-O2 -xcore-avx2" CFLAGS="-O2 -xcore-avx2" CXXFLAGS="-O2 -xcore-avx2" STATIC=1 NO_SHARED=1 MALLOC=0  -j 24 install

all 16 test okay

make PREFIX=/usr/local STATIC=1 NO_SHARED=1 install

/usr/local/lib/libxsmm.a
/usr/local/lib/libxsmmext.a
/usr/local/lib/libxsmmf.a
/usr/local/lib/libxsmmgen.a
/usr/local/lib/libxsmmnoblas.a

Libxc

wget https://www.cp2k.org/static/downloads/libxc-4.3.4.tar.gz
tar -zxvf libxc-4.3.4.tar.gz
cd libxc-4.3.4
./configure --prefix=/usr/local CC=icc FC=ifort CXX=icpc FCFLAGS="-O2 -xcore-avx2" CFLAGS="-O2 -xcore-avx2" CXXFLAGS="-O2 -xcore-avx2" --enable-shared=no --enable-static=yes --enable-fortran
make -j 24
make check

PASS: xc-run_testsuite
============================================================================
Testsuite summary for libxc 4.3.4
============================================================================

  1. TOTAL: 1
  2. PASS: 1
sudo make install
sudo cp src/*.mod /usr/local/include/

/usr/local/lib/libxc.a
/usr/local/lib/libxcf03.a
/usr/local/lib/libxcf90.a

CP2K

Number of FAILED tests 0
Number of WRONG tests 4
Number of CORRECT tests 3197
Number of NEW tests 3
Total number of tests 3204
GREPME 0 4 3197 3 3204 X

Summary: correct: 3197 / 3204; new: 3; wrong: 4; 50min
Status: FAILED


Serial

preparation

source /opt/intel/compilers_and_libraries_2020/linux/bin/compilervars.sh intel64
source /opt/intel/compilers_and_libraries_2020/linux/mkl/bin/mklvars.sh intel64
export AR="xiar"
export FC="/usr/lib64/openmpi4-intel/bin/mpifort"
export CC="/usr/lib64/openmpi4-intel/bin/mpicc"
export CXX="/usr/lib64/openmpi4-intel/bin/mpicxx"
export F77=${FC}
export F90=${FC}
module load mpi/openmpi4-x86_64-intel
export OMPI_MCA_pml=^ucx
export OMPI_MCA_btl=self,tcp
export OMPI_MCA_btl_openib_allow_ib=1
export OMPI_MCA_btl_vader_single_copy_mechanism=none

CP2K basic openmpi

CC = /usr/lib64/openmpi4-intel/bin/mpicc
FC = /usr/lib64/openmpi4-intel/bin/mpifort
LD = /usr/lib64/openmpi4-intel/bin/mpifort
AR = xiar -r

DFLAGS = -D__MPI_VERSION=4 -D__parallel -D__SCALAPACK
DFLAGS += -D__MKL -D__FFTW3 -D__SPGLIB
DFLAG +=-D__LIBXC -D__LIBINT -D__LIBXSMM

CFLAGS = $(DFLAGS) -O2 -xcore-avx2 -fp-model precise -I/usr/local/include

FCFLAGS = $(DFLAGS) -O2 -funroll-loops -fpp -free -xcore-avx2 -I/usr/local/include -L/usr/local/include
FCFLAGS += -fp-model precise
FCFLAGS += -g -traceback
FCFLAGS += -I${MKLROOT}/include -I${MKLROOT}/include/fftw

LDFLAGS = $(FCFLAGS) -static-intel
LDFLAGS_C = $(FCFLAGS) -static-intel -nofor_main

INTEL_MKL_LIB = ${MKLROOT}/lib/intel64

LIBS = /usr/local/lib/libgsl.a /usr/local/lib/libgslcblas.a
LIBS += /usr/local/lib/libxcf03.a /usr/local/lib/libxc.a
LIBS += /usr/local/lib/libxsmmf.a /usr/local/lib/libxsmm.a
LIBS += /usr/local/lib/libint2.a
LIBS += $(MKLROOT)/interfaces/fftw3xf/libfftw3xf_intel.a \
-Wl,--start-group \
$(INTEL_MKL_LIB)/libmkl_scalapack_lp64.a \
$(INTEL_MKL_LIB)/libmkl_blacs_openmpi_lp64.a \
$(INTEL_MKL_LIB)/libmkl_intel_lp64.a \
$(INTEL_MKL_LIB)/libmkl_sequential.a \
$(INTEL_MKL_LIB)/libmkl_core.a \
-Wl,--end-group
LIBS += -lz -lsymspg -ldl -lpthread -lm -lstdc++ -lmpi_mpifh -lmpi_cxx -lmpi

# Required due to memory leak that occurs if high optimisations are used
mp2_optimize_ri_basis.o: mp2_optimize_ri_basis.F
$(FC) -c $(subst O2,O0,$(FCFLAGS)) $<