在采用intel的ifort編譯支持hybrid functional計算的CP2K時,盡管編譯得到了cp2k.popt的可執(zhí)行模塊,但是在運行時常遇到如下的錯誤:
HFX_MEM_INFO would be printed out:
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
cp2k.popt 0000000001321BCE Unknown Unknown Unknown
經(jīng)過多次的嘗試,找到了一種解決辦法,似乎是intel的ifort(至少11.1.072)還不支持ISO_C_BINDING。
下面將成功編譯得到支持hybrid functional計算的CP2K的步驟給列出來,以作備份。
我用的編譯器是intel的11.1.072/bin/intel64/ifort,并與openmpi/1.4.2綁定的mpif90,
用intel的編譯器編譯得到的fftw-3.2.2;
scalapck、lapack、blas庫等用的是intel/11.1.072/mkl/lib/em64t帶的。
1、下載libint-1.1.4.tar.gz,
它可從
http://libint.valeyev.net/
http://sourceforge.net/projects/libint/files/v1-releases/
下載到。
下載解壓后運行該目錄下的./configure。整個命令如下,
./configure –prefix=’被安裝到的目錄’ –with-libint-max-am=5 –with-libderiv-max-am1=4? F77=ifort
這里“被安裝的的目錄”,根據(jù)自己的程序安裝要求自行設(shè)置它的實際路徑。
比如我實際的命令:
./configure –prefix=’/home/zh/soft/libint-1.1.4′ –with-libint-max-am=5 –with-libderiv-max-am1=4? F77=ifort
然后就是
make
make install
這樣就將編譯好的libint 1.1.4版本安裝到了所指定的目錄。
2、下載CP2K。
從
http://cp2k.berlios.de/download.html
下載最新版本的CP2K。
我目前安裝的版本是CP2K version 2.2.263 (Development Version)和CP2K version 2.1.397 (Development Version)。
下載解壓后,進(jìn)入cp2k/tools/hfx_tools/libint_tools目錄下,參考該目錄里面的“README_LIBINT”,運行如下的命令:
g++ -O3 -c libint_cpp_wrapper.cpp -I/’path_to_libint_include’
由于我將libint庫安裝到了/home/zh/soft/libint-1.1.4目錄中,我實際運行的命令為:
g++ -O3 -c libint_cpp_wrapper.cpp -I/home/zh/soft/libint-1.1.4/include
然后進(jìn)入CP2K的arch目錄,即cp2k/arch,編輯里面的Linux-x86-64-intel.popt,它的里面的設(shè)置為:
# 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
# – 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 -D__HAS_NO_ISO_C_BINDING
CPPFLAGS =
INTEL_INC = /usr/apps/isv/intel/11.1.072/include
LIBINT_INC = $(HOME)/soft/libint-1.1.4/include
FFTW_INC = /usr/apps/free/fftw/3.2.2_i/include
FCFLAGS? = $(DFLAGS) -I$(LIBINT_INC) -I$(INTEL_INC) -I$(FFTW_INC) -O2 -xW -heap-arrays 64 -funroll-loops -fpp -free
FCFLAGS2 = $(DFLAGS) -I$(LIBINT_INC) -I$(INTEL_INC) -O1 -xW? -heap-arrays 64 -fpp -free
LDFLAGS? = $(FCFLAGS) -I$(INTEL_INC)
FFTW_LIB = /usr/apps/free/fftw/3.2.2_i
INTEL_LIB = /usr/apps/isv/intel/11.1.072/mkl/lib/em64t
LIBINT = $(HOME)/soft/libint-1.1.4
LIBS???? =-L$(INTEL_LIB)/ -lmkl_scalapack_lp64 -lmkl_blacs_openmpi_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core
$(HOME)/soft/cp2k-2.1/tools/hfx_tools/libint_tools/libint_cpp_wrapper.o
$(LIBINT)/lib/libderiv.a
$(LIBINT)/lib/libint.a
-lstdc++
$(FFTW_LIB)/lib/libfftw3.a
OBJECTS_ARCHITECTURE = machine_intel.o
graphcon.o: graphcon.F
$(FC) -c $(FCFLAGS2) $<
qs_vxc_atom.o: qs_vxc_atom.F
$(FC) -c $(FCFLAGS2) $<
編輯好了之后進(jìn)入makefiles目錄,然后運行如下命令:
make ARCH=Linux-x86-64-intel VERSION=popt
運行cp2k編譯器來較慢,等10來分鐘后,就可以得到可執(zhí)行模塊。
然后就是測試cp2k/tests/QS/regtest-hybrid目錄里面的例子,比如CH3-hybrid-HSE06-lsd.inp,看能否正常運行。對于hybrid functional的計算,通常需要很大的內(nèi)存。
本文轉(zhuǎn)載自網(wǎng)絡(luò),轉(zhuǎn)載目的在于知識分享,本文觀點不代表V-suan云平臺立場。
我們邀請了從頭算分子動力學(xué)領(lǐng)域世界頂尖學(xué)者Hutter教授團(tuán)隊蘭晶崗博士進(jìn)行“計算化學(xué)模擬,讓你的實驗更“有數(shù)”!”的培訓(xùn),本培訓(xùn)基于知名免費開源計算軟件CP2K,此軟件由Hutter團(tuán)隊開發(fā)并運維,功能與VASP比肩。
?
本課程重點側(cè)重應(yīng)用,弱化過于抽象的公式和理論。通過簡單介紹理論并且結(jié)合計算輸入文件,幫助學(xué)員快速上手使用CP2K軟件來完成自己計算要求。
原創(chuàng)文章,作者:菜菜歐尼醬,如若轉(zhuǎn)載,請注明來源華算科技,注明出處:http://www.xiubac.cn/index.php/2023/12/01/7885f2f0a2/