I want to run Quantum Espresso faster on Mac Pro (multi-core). I think using intel MKL(+FTW3) and Open MPI with intel compiler is the best solution. It was a process of trial and error, and I finally achieved to compile pw.x. But, when I run pw.x for example
~/q-e/bin/pw.x < graphene.scf.in > graphene.scf.out
I got an eroor.
forrtl: severe (174): SIGSEGV, segmentation fault occurred Image PC Routine Line Source pw.x 000000011021EB14 Unknown Unknown Unknown libsystem_platfor 00007FFF560EFF5A Unknown Unknown Unknown pw.x 000000010FE3D7CB Unknown Unknown Unknown ....
I assume that the compilation is wrong. I show machine environments and compile processes below.
- Mac Pro : 2.7 GHz 12-Core Intel Xeon E5 : 64 GB 1866 MHz DDR3 : High Sierra 10.13.6
- Xcode : 9.4.1
- Intel compiler(fortran) : compilers_and_libraries_2019.1.144
- Intel compiler(C++,MKL) : compilers_and_libraries_2019.2.184
- Open MPI : 3.0.3
And I did "modify install" to install "Cluster support" and "Intel MKL core libraries for Fortran" at compilers_and_libraries_2019.2.184
- path settings
source /opt/intel/compilers_and_libraries_2019.1.144/mac/bin/compilervars.sh intel64 source /opt/intel/compilers_and_libraries_2019.2.184/mac/bin/compilervars.sh intel64
source /opt/intel/compilers_and_libraries_2019/mac/mkl/bin/mklvars.sh intel64
compile FFTW3 with intel compiler
cd ${MKLROOT}/interfaces/fftw3xf sudo make libintel64 compiler=intel
cp libfftw3xf_intel.a ${MKLROOT}/lib/
- compile Open MPI with intel compiler
./configure --prefix=/opt/openmpi CC=icc CXX=icpc F77=ifort FC=ifort sudo make sudo make install
echo 'export PATH=/opt/openmpi/bin:$PATH'>> .bashrc
- make settings for using mkl on openmpi
cd ${MKLROOT}/interfaces/mklmpi sudo make libintel64 interface=ilp64 MPICC='mpicc' INSTALL_LIBNAME ='libmkl_blacs_openmpi_ilp64'
cp obj_ilp64/libmkl_blacs_openmpi_ilp64.a ${MKLROOT}/lib/
- make QE (only PW)
./configure --enable-parallel --with-scalapack=openmpi --disable-openmp F90=ifort MPIF90=mpif90 CC=mpicc CXX=icc F77=ifort LAPACK_LIBS=" ${MKLROOT}/lib/libmkl_intel_ilp64.a ${MKLROOT}/lib/libmkl _sequential.a ${MKLROOT}/lib/libmkl_core.a -lpthread -lm -ldl" BLAS_LIBS="${MKLROOT}/lib/libmkl_intel_ilp64.a ${MKLROOT}/lib/libmkl _sequential.a ${MKLROOT}/lib/libmkl_core.a -lpthread -lm -ldl" FFT_LIBS="${MKLROOT}/lib/libfftw3xf_intel.a -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -lpthread" MPI_LIBS="-L/opt/openmpi/lib" DFLAGS="-D__INTEL -D__FFTW3 -D__MPI -D__SCALAPACK -D__PARA" IFLAGS="-I/Users/username/q-e/include -I/Users/username/q-e/FoX/finclude -I/Users/username/q-e/S3DE/iotk/include/ -I${MKLROOT}/include -I${MKLROOT}/include/fftw" SCALAPACK_LIBS="${MKLROOT}/lib/libmkl_scalapack_ilp64.a ${MKLROOT}/lib/libmkl_cdft_core.a ${MKLROOT}/lib/libmkl_intel_ilp64.a ${MKLROOT}/lib/libmkl_sequential.a ${MKLROOT}/lib/libmkl_core.a ${MKLROOT}/lib/libmkl_blacs_openmpi_ilp64.a -lpthread -lm -ldl" LDFLAGS="-static-intel"
- make -j8 pw
* At the step 4.1, warnings happened.
mpicc -c -Wall -fPIC -DMKL_ILP64 -I../../include mklmpi-impl.c -o obj_ilp64/mklmpi-impl.o mklmpi-impl.c(87): warning #1786: variable "ompi_mpi_ub" (declared at line 928 of "/opt/open mpi/include/mpi.h") was declared deprecated ("MPI_UB is deprecated in MPI-2.0") RETURN_IF(xdatatype,MPI_UB); ^ mklmpi-impl.c(338): warning #1786: function "MPI_Address" (declared at line 1201 of "/opt/open mpi/include/mpi.h") was declared deprecated ("MPI_Address is superseded by MPI_Get_address in MPI-2.0") int err = MPI_Address(location, address); ^ mklmpi-impl.c(397): warning #1786: function "MPI_Attr_get" (declared at line 1241 of "/opt/open mpi/include/mpi.h") was declared deprecated ("MPI_Attr_get is superseded by MPI_Comm_get_attr in MPI-2.0") int res = MPI_Attr_get(X2COMM(comm),X2KEYVAL(keyval),attribute_val,flag); ^
Sorry for writing such a long message. How should I modify above steps to run Quantum Espresso?
FYI : I read the topic "How to correctly compile Quantum Espresso with intel MKL especially intel FFTW" , and I post my question in this forum.