24小时热门版块排行榜    

查看: 2205  |  回复: 3

xk6891

至尊木虫 (著名写手)

[求助] cp2k并行编译出错

平台:
CPU:Intel(R) Xeon(R) CPU  E5620
内存:16G
系统:CentOS release 5.6 (Final)
内核:GNU/Linux x86-64
编译器采用Intel Fortran 11.1及Open MPI 1.4.3
数学库FFTW3,Libint1.1.4,Intel MKL10.2.5.035
这里可以肯定的是编译器的安装是不会出错的,因为用相同的编译器编译过cpmd,而且正在正常使用。
数学库是自己安装的,而且是三个数学库都是采用非root用户安装,安装正常,没有错误和警告产生(不知道安装之后,是否还需要设置环境变量?)。
进入/CP2K/ARCH中修改了,Linux-x86-64-intel.popt
______________________________________________________________________________________
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# by default some intel compilers put temporaries on the stack
# this might lead to segmentation faults is the stack limit is set to low
# stack limits can be increased by sysadmins or e.g with ulimit -s 256000
# furthermore new ifort (10.0?) compilers support the option
# -heap-arrays 64
# add this to the compilation flags is the other options do not work
# The following settings worked for:
# - AMD64 Opteron
# - SUSE Linux Enterprise Server 10.0 (x86_64)
# - Intel(R) Fortran Compiler for Intel(R) EM64T-based applications, Version 10.0.025
# - AMD acml library version 3.6.0??(Intel可以使用这个么?)
# - MPICH2-1.0.5p4
# - SCALAPACK library          1.8.0
#
#
CC         = cc
CPP        =
FC         = mpif90
LD         = mpif90
AR         = ar -r
DFLAGS     = -D__INTEL -D__FFTSG -D__PARALLEL -D__BLACS -D__SCALAPACK -D__FFTW3 -D_LIBINT
CPPFLAGS   =

INTEL_INC  = /export/home/**/intel/mkl/10.2.5.035/include/em64t/lp64
FFTW_INC   = /export/home/**/CP2K/fftw/include
LIBINT_INC = /export/home/**/CP2K/libint/include/libint

FCFLAGS    = $(DFLAGS)  -I$(INTEL_INC) -I$(FFTW_INC) -I$(LIBINT_INC) -O3 -xW -heap-arrays 64 -funroll-loops -fpp -free
FCFLAGS2   = $(DFLAGS)  -I$(INTEL_INC) -I$(FFTW_INC) -I$(LIBINT_INC) -O1 -xW -heap-arrays 64 -fpp -free
LDFLAGS    = $(FCFLAGS) -I$(INTEL_INC) -I$(FFTW_INC) -I$(LIBINT_INC)

FFTW_LIB   = /export/home/**/CP2K/fftw/lib
INTEL_LIB  = /export/home/**/intel/mkl/10.2.5.035/lib/em64t
LIBINT_LIB = /export/home/**/CP2K/libint/lib

LIBS       = -L/export/home/kaixu/CP2K/tools/hfx_tools/libint_tools/libint_cpp_wrapper.o \
             -L$(FFTW_LIB)/ -lfftw3 \
             -L$(LIBINT_LIB)/ -lderiv -lint -lr12 \
             -L$(INTEL_LIB)/ -lguide -liomp5 -lmkl_blacs_openmpi_lp64 -lmkl_blas95_lp64 -lmkl_cdft_core -lmkl_core \
                             -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_intel_lp64 -lmkl_intel_sp2dp -lmkl_intel_thread \
                             -lmkl_lapack95_lp64 -lmkl_scalapack_lp64 -lmkl_sequential -lmkl_solver_lp64 \
                             -lmkl_solver_lp64_sequential \

OBJECTS_ARCHITECTURE = machine_intel.o


graphcon.o: graphcon.F
        $(FC) -c $(FCFLAGS2) $<
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
—————————————————————————————————————————————————————
我不知道上面的写法对不对,最后Intel我写了很多,因为我也不确定什么需要,什么不要
出现的错误是
/export/tools/compiler/intel/Compiler/11.1/072/lib/intel64/libimf.so: warning: warning: feupdateenv is not implemented and will always fail
google了一下,发现这个只是一个警告,而且HPCC上面解释这个警告不是很重要
上面的处理方法我不知道在这个里面如何运用,去掉警告
后面的错误都是这样
/export/home/**/intel/mkl/10.2.5.035/lib/em64t//libmkl_scalapack_lp64.so: undefined reference to `Ccgerv2d'
/export/home/**/intel/mkl/10.2.5.035/lib/em64t//libmkl_scalapack_lp64.so: undefined reference to `Czgebr2d'
/export/home/**/intel/mkl/10.2.5.035/lib/em64t//libmkl_scalapack_lp64.so: undefined reference to `ztrsd2d_'
………………
全部是说libmkl_scalapack_lp64.so的错误的
我尝试在LD =后面加上 -i-dynamic或者-i-static ,都处理不掉关于libmkl_scalapack_lp64.so的错误,或者他就是由前者的警告引起的。
想请教各位前辈帮忙看看是哪里出错,小生感激不尽。
Ref:
1
2
3
4

[ Last edited by xk6891 on 2011-9-30 at 17:16 ]
回复此楼
人生自古多险阻,勤者自得天酬助。试问否泰何所依,枯藤老枝待新抽。临渊踌躇终迈步,振翅鹏起云霄冲。似是前程甚堪忧,他日振臂揽苍穹。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ChemiAndy

木虫 (正式写手)


★ ★ ★ ★
zh1987hs(金币+4): 谢谢 2011-10-05 13:01:18
可以肯定是库的问题,

             -L$(INTEL_LIB)/ -lguide -liomp5 -lmkl_blacs_openmpi_lp64 -lmkl_blas95_lp64 -lmkl_cdft_core -lmkl_core \
                             -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_intel_lp64 -lmkl_intel_sp2dp -lmkl_intel_thread \
                             -lmkl_lapack95_lp64 -lmkl_scalapack_lp64 -lmkl_sequential -lmkl_solver_lp64 \
                             -lmkl_solver_lp64_sequential \

上面这些库可能是冲突的,或者与顺序有关。话说当年我编译CPMD的时候遇到错误,就是挨个测试里面的库,加入-去除。。。最后终于成功。这玩意儿跟机器配置相关,如果不懂库的含义的话,只能用最笨的方法。
2楼2011-10-05 07:00:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xk6891

至尊木虫 (著名写手)

引用回帖:
2楼: Originally posted by ChemiAndy at 2011-10-05 07:00:35:
可以肯定是库的问题,

             -L$(INTEL_LIB)/ -lguide -liomp5 -lmkl_blacs_openmpi_lp64 -lmkl_blas95_lp64 -lmkl_cdft_core -lmkl_core \
                             -lmkl_gf_lp64 -lmkl_gnu_t ...

这个里面东西太多了,具体原来看到过各个库函数的含义,但是不明白。我看到你原来编译CP2K的Blog了,一直是按照上面做的,上次运用上面的方法在自己的机子上编译成功了,这好久不弄,不知道哪里出错了。头大!!!!
人生自古多险阻,勤者自得天酬助。试问否泰何所依,枯藤老枝待新抽。临渊踌躇终迈步,振翅鹏起云霄冲。似是前程甚堪忧,他日振臂揽苍穹。
3楼2011-10-05 13:47:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xk6891

至尊木虫 (著名写手)

ben_ladeng: 虫友已经正确回答您的问题,请全额发放悬赏金币 2011-11-03 00:28:32
额,成功了,果真是数学库的事情。
人生自古多险阻,勤者自得天酬助。试问否泰何所依,枯藤老枝待新抽。临渊踌躇终迈步,振翅鹏起云霄冲。似是前程甚堪忧,他日振臂揽苍穹。
4楼2011-11-02 22:55:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xk6891 的主题更新
信息提示
请填处理意见