提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
关于cp2k的编译安装问题,网上大多数都推荐的是toolchain安装方法。最近因为有需求所以使用oneapi/2022.3.1进行编译,这里做了使用oneapi来编译cp2k的尝试,供大家参考。(本人的系统是CentOS 7,查询了一下OneAPI最新支持的版本是2022.3.1,可以处理内存泄漏问题)
以下所用的库也都是用oneapi/2022.3.1进行编译,编译后的库都已经生成modulefile文件,在编译cp2k时直接去加载module
(后续科研软件的编译也会在微信公众号上更新,请多多关注)
一、cmake-3.26.3
wget https://www.cp2k.org/static/downloads/cmake-3.26.3-linux-x86_64.sh --no-check-certificate
bash cmake-3.26.3-Linux-x86_64.sh
vim .bashrc
export PATH=/tmp/hehr/cmake-3.26.3-linux-x86_64/bin:$PATH
source .bashrc
(这里我生成了module,如果本地运行可以采用这种办法)
二、libxc-6.2.2
#download source code
wget https://www.cp2k.org/static/downloads/libxc-6.2.2.tar.gz -no-check-certificate
tar -xvf libxc-6.2.2.tar.gz
#create and enter build folder
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/tmp/hehr/software/libxc \
-DBUILD_SHARED_LIBS=NO \
-DCMAKE_C_COMPILER=icc \
-DCMAKE_Fortran_COMPILER=ifort \
-DCMAKE_INSTALL_LIBDIR=lib \
-DENABLE_FORTRAN=ON -DENABLE_PYTHON=OFF -DDISABLE_LXC=ON -DBUILD_TESTING=NO …
(这里用cmake一定是cmake-3.26以上,我是按CP2K里推荐的安装的cmake,否则会编译报错,提示cmake版本过低)
#build
make -j 16
三、elpa-2022.11.001
#download source code
wget https://elpa.mpcdf.mpg.de/software/tarball-archive/Releases/2022.11.001/elpa-2022.11.001.tar.gz
tar -xvf elpa-2022.11.001.tar.gz
#create and enter build folder
cd elpa-2022.11.001
mkdir -p build
cd build
module load oneapi/2022.3.1
#config build options
#my platform is icelake-server, which supports AVX512# you may set --prefix to customize installation path
…/configure CXX=icx FC=mpiifort CC=mpiicc FCFLAGS=“-O3 -xCORE-AVX512” CFLAGS=“-O3 -xCORE-AVX512” --enable-option checking=fatal \ SCALAPACK_LDFLAGS="-L$MKLROOT/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential \
-lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm -Wl,-rpath,$MKL_ROOT/lib/intel64" \
SCALAPACK_FCFLAGS="-L$MKLROOT/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential \
-lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm -I$MKLROOT/include/intel64/lp64" \
–enable-avx2 --enable-avx512 --with-mpi=yes
#build
make -j 32
#test (Optional)
make check
这里需要指定MKLROOT的目录,否则编译过程中会显示找不到部分库文件
四、 plumed-2.8.2
#download source code
wget https://www.cp2k.org/static/downloads/plumed-src-2.8.2.tgz --no-check-certificatetar
tar -xvf plumed-src-2.8.2.tgz
cd plumed-2.8.2
#config build options
./configure FC=mpiifort CC=mpiicc CXX=mpiicpc CXXFLAGS=“-O3 -mtune=icelake-server” --enable-mpi LDFLAGS=“-L M K L R O O T / l i b / i n t e l 64 − l m k l s c a l a p a c k l p 64 − l m k l i n t e l l p 64 − l m k l s e q u e n t i a l − l m k l c o r e − l m k l b l a c s i n t e l m p i l p 64 − l p t h r e a d − l m " C P P F L A G S = " − I MKLROOT/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm" CPPFLAGS="-I MKLROOT/lib/intel64−lmklscalapacklp64−lmklintellp64−lmklsequential−lmklcore−lmklblacsintelmpilp64−lpthread−lm"CPPFLAGS="−IMKLROOT/include”
#build
make -j 16
五、cp2k-2023.2
1.cd /tmp/hehr/cp2k-2023.2/toos/toolchain
然后修改下面这个文件:
scripts/generate_arch_files.sh 第42 行有bug, $(TARGET_CPU) 要改成 ${TARGET_CPU},否则会报错
echo ‘’ > scripts/get_openblas_arch.sh
2.准备安装环境
module load dev/oneapi/2022.3.1 dev/cmake/3.26.3 lib/elpa/2022.11.001 lib/libxc/6.2.2 lib/plumed/2.8.2
./install_cp2k_toolchain.sh --target-cpu=icelake-server --mpi-mode=intelmpi --math-mode=mkl --with-intel=system --with-intelmpi=system --with-libxc=system --with-libint=install --with-mkl=system --with-elpa=system --with-plumed=system --with-cmake=system --with-sirius=no --with-openblas=no --with-cosma=no
如果一些包下载不下来,就手动下载放到 ./build 目录,如果是自带脚本下载,建议开两个端口一个执行脚本,另一个进到build目录下进行软件下载
这步成功后退回项目目录
cd …/…
3.编译
cp /tmp/hehr/cp2k-2023.2/tools/toolchain/install/arch/* arch/
source /tmp/hehr/cp2k-2023.2/tools/toolchain/install/setup
make -j48 ARCH=local VERSION=psmp
成功后把 exe/local 导出到 PATH就可以了
这里会有坑点,之前有编译过libint,库的编译是通过了,CP2K编译过不去,不要把所有库都独立编译会更合理
六、libint-v2.6.0
最后是libint编译(虽然没有用上)需要用官方方式进行编译
官网链接:https://github.com/cp2k/cp2k/issues/1810
#download
wget https://www.cp2k.org/static/downloads/libint-v2.6.0-cp2k-lmax-5.tgz --no-check-certificate
tar -xvf libint-v2.6.0-cp2k-lmax-5.tgz
cd libint-v2.6.0-cp2k-lmax-5
#config
CC=mpiicc CXX=mpiicc FC=mpiifort ./configure \
--with-cxx="mpiicc -O3 -xCORE-AVX512 -mtune=icelake-server -g1" \
--with-cxx-optflags="-O3 -xCORE-AVX512 -mtune=icelake-server -g1" \
--enable-fortran \
--with-pic
#fix
sed -i -e “s/$(CXX) $(CXXFLAGS)/$(FC) $(FCFLAGS)/g” -e “s/$(FCLIBS) -o/$(FCLIBS) -lstdc++ -o/” fortran/Makefile
make -j 48
总结
以上就是要分享的内容,后面更新也会在微信公众号‘小何工坊’进行分享,请多多关注!!!