CP2K的安裝
1.1?直接使用二進制版本
CP2K的安裝有很多種方法。最簡單的方法是直接使用預(yù)編譯版本的二進制可執(zhí)行文件。
用戶可以選擇從發(fā)行版所帶的軟件源安裝預(yù)編譯版本的CP2K:
Debian?http://packages.debian.org/search?keywords=cp2k
Fedora?https://apps.fedoraproject.org/packages/cp2k
Ubuntu?http://packages.ubuntu.com/search?keywords=cp2k
或者直接從CP2K官方網(wǎng)站下載預(yù)編譯可執(zhí)行文件
sourceforge.net/projects/cp2k/files/precompiled/
預(yù)編譯版本的CP2K運行比較可靠,缺點是由于其采用了沒有優(yōu)化過的blas庫和lapack庫,計算速度比較慢。
?
或者從CP2K源碼(http://www.cp2k.org/download)進行編譯,獲得可執(zhí)行文件。好處是可以使用MKL等速度更快的數(shù)學(xué)庫,計算速度比預(yù)編譯版本快很多。測試表明,使用Intel編譯器以及MKL數(shù)學(xué)庫編譯的CP2K執(zhí)行速度是預(yù)編譯版本的3倍左右。
1.2?從源代碼編譯
從源碼進行編譯得到的CP2K可執(zhí)行文件有更快的運行速度。CP2K的編譯比較復(fù)雜。希望進行CP2K編譯的話,可以參考
www.cp2k.org/howto:compile
下面,介紹使用Intel編譯器以及GNU編譯器編譯CP2K的步驟。下面的編譯均在Debian testing系統(tǒng)上完成。CPU型號為Intel(R) Core(TM) i5-4210M,內(nèi)核版本為3.17-1-amd64。為了減少編譯的工作量,可以從Debian軟件源里安裝各種數(shù)學(xué)庫,如libint,elpa,fftw3,openblas, libxc等。以root權(quán)限運行:
apt-get install libxc1 libxc-dev libint-dev libint1 libelpa-dev libelpa0 libopenblas-base libopenblas-dev libfftw3-3 libfftw3-bin libfftw3-dev libfftw3-mpi3 openmpi-bin gcc gfortran g++ |
安裝-dev包可以獲得數(shù)學(xué)庫的靜態(tài)鏈接庫,方便進行靜態(tài)編譯。
系統(tǒng)安裝了4.9.1?版本的GNU編譯器,包括gcc以及gfortran,openmpi版本為1.6.5。
-
使用Intel Fortran編譯器以及MKL編譯CP2K
首先,安裝Intel Fortran編譯器以及MKL。我安裝的Intel Fortran編譯環(huán)境是composerxe-2011.3.174。其中包含了Fortran編譯器ifort以及MKL,沒有Intel MPI。ifort版本是12.0.3 20110309。Intel編譯器安裝到了/opt/intel目錄中。
要使用Intel編譯器,打開終端,運行
source /opt/intel/bin/compilervars.sh intel64 |
然后,編譯安裝MPI運行環(huán)境。如果你安裝的Intel編譯環(huán)境已經(jīng)包含了impi,可以跳過該步驟。我安裝的MPI環(huán)境是openmpi 1.6.5,目前最新版本是1.8.3?。從http://www.open-mpi.org?上下載源碼,解壓縮后運行:
./configure –prefix=/opt/openmpi-1.6.5 F77=ifort FC=ifort make make install |
注意,make install時需要root權(quán)限。
從?http://sourceforge.net/projects/cp2k/files
下載CP2K 2.5.1的源碼,解壓縮,修改arch目錄中的Linux-x86-64-intel.popt文件如下 :
CC = cc CPP = FC = /opt/openmpi-1.6.5/bin/mpif90 LD = /opt/openmpi-1.6.5/bin/mpif90 AR = ar -r INTEL_MKL = /opt/intel/mkl INTEL_INC = $(INTEL_MKL)/include INTEL_LIB = $(INTEL_MKL)/lib/intel64 MKL_LIB = $(INTEL_MKL)/lib/intel64 FFTW3_INC = /usr/include/ FFTW3_LIB = /usr/lib/x86_64-linux-gnu/ DFLAGS = -D__INTEL -D__FFTSG -D__parallel -D__BLACS -D__SCALAPACK -D__FFTW3 -D__LIBINT CPPFLAGS = -C -traditional $(DFLAGS) -I$(INTEL_INC) -I$(FFTW3_INC) FCFLAGS = $(DFLAGS) -I$(INTEL_INC) -I$(FFTW3_INC) -O2 -xHost -heap-arrays 64 -funroll-loops -fpp -free FCFLAGS2 = $(DFLAGS) -I$(INTEL_INC) -I$(FFTW3_INC) -O1 -xHost -heap-arrays 64 -fpp -free LDFLAGS = $(FCFLAGS) -I$(INTEL_LIB) -L$(FFTW3_LIB) LIBS = -L$(MKL_LIB) -lmkl_blas95_lp64 -lmkl_lapack95_lp64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core?-lmkl_blacs_openmpi_lp64?-lfftw3 -lpthread -lderiv -lint -lstdc++ OBJECTS_ARCHITECTURE = machine_intel.o graphcon.o: graphcon.F $(FC) -c $(FCFLAGS2) $< et_coupling.o: et_coupling.F $(FC) -c $(FCFLAGS2) $< qs_vxc_atom.o: qs_vxc_atom.F $(FC) -c $(FCFLAGS2) $< hfx_screening_methods.o: hfx_screening_methods.F $(FC) -c $(FCFLAGS2) $< |
注意,如果編譯使用intelmpi,blacs庫就設(shè)置為-lmkl_blacs_intelmpi_lp64;如果使用openmpi,則設(shè)置為-lmkl_blacs_openmpi_lp64。在makefiles目錄中運行
make –j 4 ARCH=Linux-x86-64-intel VERSION=popt |
-j 4參數(shù)可以使編譯并行進行,以加快編譯速度。
視CPU性能,一般15分鐘左右即可在exe/Linux-x86-64-intel目錄下獲得編譯好的cp2k.popt可執(zhí)行文件。
? ? ?2. 使用GNU Fortran編譯器,MKL以及ELPA庫編譯CP2K
使用gfortran編譯器,并使用MKL數(shù)學(xué)庫和ELPA庫編譯CP2K,流程與上述類似。編輯arch目錄中的Linux-x86-64-gfortran_mkl_elpa.popt文件如下:
INTEL_MKL = /opt/intel/mkl INTEL_INC = $(INTEL_MKL)/include INTEL_MKL_LIB = $(INTEL_MKL)/lib/intel64 FFTW3_INC = /usr/include/ FFTW3_LIB = /usr/lib/x86_64-linux-gnu/ ELPA_INC = /usr/include/elpa/modules CC = cc CPP = FC = /usr/bin/mpif90 LD = /usr/bin/mpif90 AR = ar -r CPPFLAGS = DFLAGS = -D__GFORTRAN -D__FFTSG -D__parallel -D__SCALAPACK -D__BLACS -D__LIBINT -D__LIBXC2 -D__FFTW3 -D__ELPA FCFLAGS = -O3 -ffast-math -funroll-loops -ftree-vectorize -march=native -ffree-form $(DFLAGS) -g -I$(FFTW3_INC) -I$(ELPA_INC) -I$(INTEL_INC) LDFLAGS = $(FCFLAGS) -L${FFTW3_LIB} -L${INTEL_MKL_LIB} LIBS = -lmkl_scalapack_lp64 -lmkl_blacs_openmpi_lp64 -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lderiv -lint -lfftw3 -lxc -lelpa |
在makefiles目錄中運行
make -j 4 ARCH=Linux-x86-64-gfortran_mkl_elpa VERSION=popt |
在exe/Linux-x86-64-gfortran_mkl_elpa?目錄中即可獲得編譯好的cp2k.popt可執(zhí)行文件。
經(jīng)過測試,使用gfortran和intel編譯器編譯的CP2K可執(zhí)行文件運行速度相當(dāng),后者稍微快一點點。這主要是因為它們均使用了經(jīng)過優(yōu)化的MKL數(shù)學(xué)庫。本文轉(zhuǎn)載自zevan,轉(zhuǎn)載目的在于知識分享,本文觀點不代表V-suan云平臺立場。
?
我們邀請了從頭算分子動力學(xué)領(lǐng)域世界頂尖學(xué)者Hutter教授團隊蘭晶崗博士進行“計算化學(xué)模擬,讓你的實驗更“有數(shù)”!”的培訓(xùn),本培訓(xùn)基于知名免費開源計算軟件CP2K,此軟件由Hutter團隊開發(fā)并運維,功能與VASP比肩。
?
本課程重點側(cè)重應(yīng)用,弱化過于抽象的公式和理論。通過簡單介紹理論并且結(jié)合計算輸入文件,幫助學(xué)員快速上手使用CP2K軟件來完成自己計算要求。
原創(chuàng)文章,作者:菜菜歐尼醬,如若轉(zhuǎn)載,請注明來源華算科技,注明出處:http://www.xiubac.cn/index.php/2023/12/01/4065766bfd/