||
Plumed是CP2K的一个扩展包(其不只支持CP2K,还支持其他众多分子动力学软件),可以实现各种增强采样模拟及数据分析;包含的增强采样方法如Metadynamics、Umbrella sampling以及Basin hopping等。
为了在较老的超算系统上安装带Plumed扩展包的CP2K,笔者摸索了两三天。最终发现了一种可以在较老的系统上安装CP2K7.1+Plumed的方法,系统的GNU可以是4.8.5, 4,9.2, 或7.2.0,其他GNU高于4.8.1的系统应该也可以成功安装,因为好像GCC 4.8.1才完全支持C++11[1],安装的软件包需要C++11的支持。此外,由于受到GNU版本的限制,笔者编译的CP2K是“minimal” 版本,支持常见泛函(PBE, BLYP)的第一性原理分子动力学计算,但不支持需要libxc 扩展包的泛函,如optB88,optPBE等。读者可以根据自己的需求安装这些功能。
1. 准备工作
1.1 下载CP2K v7.1 (cp2k-7.1.tar.bz2)
链接:https://github.com/cp2k/cp2k/releases/tag/v7.1.0
1.2 下载GSL 2.6
链接:https://www.cp2k.org/static/downloads/gsl-2.6.tar.gz
编译CP2K+Plumed需要GSL,否则在编译过程中会报错无法识别包含*gsl语句。
1.3 下载Plumed 2.5.2
链接:https://www.cp2k.org/static/downloads/plumed-2.5.2.tgz
笔者使用的intel编译器是2018,和2019 版的Intel-parallel_studio XE,都可以编译成功。开始下面的安装过程之前应确保MKL编译器的环境变量生效,可以which mpiifort 检查该环境变量。
把上述下载好的文件放到执行安装的目录,然后进行下述安装过程。
2. 安装GSL 2.6
解压:tar zxvf gsl-2.6.tar.gz
编译:
cd gsl-2.6
./configure --prefix=/path_to_install/gsl-2.6/exe CC=icc FC=ifort CXX=icpc
make -j 20
make install
安装完成之后应该会在/path_to_install/gsl-2.6/exe/lib 目录下面生成libgslcblas.a和libgsl.a。
3. 安装Plumed 2.5.2
解压:tar -xvf plumed-2.5.2.tgz
编译:
cd plumed-2.5.2
./configure --prefix=/path_to_install/plumed-2.5.2/exe CXX=mpiicpc CC=mpiicc FC=mpiifort --enable-gsl
make -j 20
make install
4. 安装CP2K
解压:tar zxvf cp2k-7.1.tar.bz2
编译:
cd cp2k-7.1
cd arch
cp ./Linux-x86-64-intel-minimal.psmp ./Linux-x86-64-intel-minimal-plumed.psmp
修改Linux-x86-64-intel-minimal-plumed 如下,红色加粗字体为新增的内容:
# Author: Matthias Krack (matthias.krack@psi.ch, PSI, December 2019)
CC = mpiicc FC = mpiifort LD = mpiifort AR = ar -r include /path_to_install/plumed-2.5.2/exe/lib/plumed/src/lib/Plumed.inc.static GSL_LIBRARY_DIR = /path_to_install/gsl-2.6/exe/lib CFLAGS = -O2 -g -traceback -xHost
DFLAGS = -D__FFTW3 -D__MKL -D__MPI_VERSION=3 DFLAGS += -D__parallel -D__SCALAPACK -D__PLUMED2
FCFLAGS = $(CFLAGS) $(DFLAGS) FCFLAGS += -fopenmp -fpp -fp-model precise -free -funroll-loops FCFLAGS += -I${MKLROOT}/include -I${MKLROOT}/include/fftw
LDFLAGS = $(FCFLAGS) -static-intel -static_mpi LDFLAGS_C = -nofor_main
MKL_LIB = ${MKLROOT}/lib/intel64
LIBS = $(PLUMED_DEPENDENCIES) $(GSL_LIBRARY_DIR)/libgsl.a $(GSL_LIBRARY_DIR)/libgslcblas.a $(MKL_LIB)/libmkl_scalapack_lp64.a LIBS += -Wl,--start-group LIBS += $(MKL_LIB)/libmkl_intel_lp64.a LIBS += ${MKL_LIB}/libmkl_sequential.a LIBS += $(MKL_LIB)/libmkl_core.a LIBS += ${MKL_LIB}/libmkl_blacs_intelmpi_lp64.a LIBS += -Wl,--end-group LIBS += -lz -ldl -lpthread -lstdc++ # Required due to memory leak that occurs if high optimisations are used mp2_optimize_ri_basis.o: mp2_optimize_ri_basis.F $(FC) -c $(subst O2,O0,$(FCFLAGS)) $< |
注:一般可以不需要修改蓝色字体的内容,如果服务器的登陆节点支持但计算节点不支持AVX2指令集,则需要把-xHost改成-xAVX,笔者遇到过这种情况,所以特此说明。
返回上一级目录: cd ..
编译:
make -j 20 ARCH=Linux-x86-64-intel-minimal-plumed VERSION=psmp
编译成功之后会在./bin 目录下生成Linux-x86-64-intel-minimal-plumed文件夹,里面包含cp2k.psmp 可执行文件。
popt 版本的编译和上述方法一样。
执行计算之前可以把cp2k.psmp添加到~/.bashrc 中,或者放入计算脚本当中。
可以添加CP2K的环境变量:
export PATH=/path/bin/Linux-x86-64-intel-minimal-plumed:$PATH
export LD_LIBRARY_PATH=/path/lib/Linux-x86-64-intel-minimal-plumed:$LD_LIBRARY_PATH
计算命令:mpirun -np 20 cp2k.psmp my.inp > out.log
参考网址:
[1] c++11, 百度百科. https://baike.baidu.com/item/c%2B%2B11/2522975?fr=aladdin
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-4-19 07:40
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社