This thread is locked.Only browsing is available.
Top Page > Browsing
Compiling MPI version of OpenMX with Intel compiler and MKL
Date: 2008/01/14 11:41
Name: Heungsik Kim   <heungsikim@cnmp.snu.ac.kr>

Dear Dr. Ozaki.

Thanks to your labor for the OpenMX development. :-)
I have two question about compilation of OpenMX, using OpenMPI and Intel C compiler.

My OS is Ubuntu 7.10, with Intel Q6600 processor.
During the compilation, I encountered an error message, saying,

ld: cannot find -lmpi
make: *** [openmx] Error 1

That was just after all object files was generated.
I touched /etc/ld.so.conf file to let to know ld the location of libmpi library,
and since that didn't work, I made symbolic links from openmpi library directory to /usr/lib64,
but they didn't solve the problem at all.

My makefile option is,

mpicc =/usr/local/openmpi/bin/mpicc
CC = $(mpicc) -O3 -I/usr/include -I/opt/intel/mkl/10.0.1.014/include -Wl,--allow-multiple-definition
LIB = -L/usr/lib64 -lfftw3 -L/opt/intel/mkl/10.0.1.014/lib/em64t -lmkl_lapack -lguide -L/lib64 -lpthread -L/opt/intel/cce/10.1.008/lib -static

Has anybody ever experienced such situation? Any comments shall be helpful.


Another question is that, during the compilation, I met many outputs such that

RecursionS_H.c(3144): (col. 3) remark: LOOP WAS VECTORIZED.

Is this some kind of error message, or something else?


Thanks for your comments, in advance.

Sincerely,
Heungsik
メンテ
Page: [1]

Re: Compiling MPI version of OpenMX ( No.1 )
Date: 2008/01/12 04:15
Name: H. Jeong

1. In OpenMPI environments, static compiling of OpenMX has been under difficulty. (I think it is related to compling of OpenMPI itself). Please remove -static option on LIB line.

2. "LOOP WAS VECTORIZED" messages are good for user.
メンテ
Re: Compiling MPI version of OpenMX ( No.2 )
Date: 2008/01/12 13:22
Name: Heungsik Kim  <heungsikim@cnmp.snu.ac.kr>

Thank for your answer. Removing '-static' made the work go one step further,
but still there's some problem unsolved.

After generating object files, error message like this occurs,

Band_DFT_Col.o: In function `Band_collinear2':
Band_DFT_Col.c:(.text+0x271c): undefined reference to `zgemm_'
Band_DFT_Col.c:(.text+0x27ca): undefined reference to `zgemm_'
Band_DFT_Col.c:(.text+0x4f3c): undefined reference to `zgemm_'
Band_DFT_Col.c:(.text+0x4fe2): undefined reference to `zgemm_'
Band_DFT_Col.c:(.text+0x55f8): undefined reference to `zgemm_'
......
TRAN_Calc_CentGreenLesser.o: In function `TRAN_Calc_CentGreenLesser':
/home/heungsikim/openmx3.3/source/TRAN_Calc_CentGreenLesser.c:104: undefined reference to `zgemm_'
/home/heungsikim/openmx3.3/source/TRAN_Calc_CentGreenLesser.c:118: undefined reference to `zgemm_'
......

These variables seems to be defined in 'openmx_common.h' and 'lapack_prototypes.h', and the source codes contains that header file, but still the compiler doesn;t recognize them.

Another problem is,

/opt/intel/mkl/10.0.1.014/lib/em64t/libmkl_lapack.so: undefined reference to `mkl_lapack_cpptrs'
/opt/intel/mkl/10.0.1.014/lib/em64t/libmkl_lapack.so: undefined reference to `mkl_lapack_claeh2'
/opt/intel/mkl/10.0.1.014/lib/em64t/libmkl_lapack.so: undefined reference to `mkl_blas_dsyrk'
/opt/intel/mkl/10.0.1.014/lib/em64t/libmkl_lapack.so: undefined reference to `mkl_lapack_zunmql'
/opt/intel/mkl/10.0.1.014/lib/em64t/libmkl_lapack.so: undefined reference to `mkl_lapack_spptrf'
/opt/intel/mkl/10.0.1.014/lib/em64t/libmkl_lapack.so: undefined reference to `mkl_lapack_sgeqrf'
/opt/intel/mkl/10.0.1.014/lib/em64t/libmkl_lapack.so: undefined reference to `mkl_blas_ztrmm'
/opt/intel/mkl/10.0.1.014/lib/em64t/libmkl_lapack.so: undefined reference to `mkl_blas_cherk'
/opt/intel/mkl/10.0.1.014/lib/em64t/libmkl_lapack.so: undefined reference to `mkl_blas_ssyrk'
/opt/intel/mkl/10.0.1.014/lib/em64t/libmkl_lapack.so: undefined reference to `mkl_lapack_zhetrd'
/opt/intel/mkl/10.0.1.014/lib/em64t/libmkl_lapack.so: undefined reference to `mkl_lapack_dgbtrf'
/opt/intel/mkl/10.0.1.014/lib/em64t/libmkl_lapack.so: undefined reference to `mkl_lapack_cpotrf'
/opt/intel/mkl/10.0.1.014/lib/em64t/libmkl_lapack.so: undefined reference to `mkl_lapack_zunmqr'
/opt/intel/mkl/10.0.1.014/lib/em64t/libmkl_lapack.so: undefined reference to `mkl_lapack_chptrd'
blah, blah, ......

Is there some problem in my LIB line in makefile, so that the compiler cannot find the libraries?

メンテ
Re: Compiling MPI version of OpenMX ( No.3 )
Date: 2008/01/13 08:11
Name: Vasilii Artyukhov

Consult your MKL documentation about how to link the LAPACK and BLAS libs properly. From my experience, this is highly nontrivial :) You probably need to put something like -lmkl_em64t or -lmkl_core before -lguide...
メンテ
Re: Compiling MPI version of OpenMX ( No.4 )
Date: 2008/01/14 11:53
Name: Heungsik Kim  <heungsikim@cnmp.snu.ac.kr>

The problem nearly seemed to be solved. T.T

After the compilation was finished, I had to make some symbolic links of the libraries
libmkl_lapack.so
libmkl_core.so
libmkl_def.so (both in the Intel MKL library directory)
to the system default library directory, so that openmx can read them.(For my Ubuntu, it was /usr/lib .)

It seemed to work properly, but as soon as it goes into SCF step,

MKL FATAL ERROR: SO not convinient for this processor.

and the process died.
If there's some progress, I'll report them in this thread.

Anyway, thank you for your help. :-)
メンテ

Page: [1]