jasonmumu的个人博客分享 http://blog.sciencenet.cn/u/jasonmumu

博文

MKL离线编译CP2K 7.1+Plumed的详细过程

已有 4698 次阅读 2021-9-14 15:09 |个人分类:软件的安装|系统分类:科研笔记

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

 



https://wap.sciencenet.cn/blog-3311084-1304158.html

上一篇:Ubuntu18.04编译VASP.5.4.1两种方法的详细过程(修改版)
下一篇:Pymol 进阶:Python脚本的使用方法
收藏 IP: 116.228.78.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (2 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-19 07:40

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部