跳转至

CP2K编译安装

环境:228集群,Rocky Linux 8.10

下载源码包和相关依赖软件安装包

GitHub下载CP2K最新版本,这里我们下载2024.3版本,并上传至个人家目录的downloads文件夹下。
不能访问GitHub的用户,也可在百度云盘下载cp2k-2024.3源码包及依赖库

[userA@quantum ~]$ mkdir soft && cd soft
[userA@quantum soft]$ tar -jxvf ~/downloads/cp2k-2024.3.tar.bz2
[userA@quantum soft]$ cd cp2k-2024.3/tools/toolchain
[userA@quantum toolchain]$ mkdir build && cd build
[userA@quantum build]$ 
集群管理节点如果能联网,分别一条条执行下面命令行:
wget --no-check-certificate https://www.cp2k.org/static/downloads/gcc-14.1.0.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/OpenBLAS-0.3.27.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/cmake-3.30.0-linux-x86_64.sh
wget --no-check-certificate https://www.cp2k.org/static/downloads/ninja-v1.12.1.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/mpich-4.0.3.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/fftw-3.3.10.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/libint-v2.6.0-cp2k-lmax-5.tgz
wget --no-check-certificate https://www.cp2k.org/static/downloads/libxc-6.2.2.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/libgrpp-main-20231225.zip
wget --no-check-certificate https://www.cp2k.org/static/downloads/libxsmm-1.17.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/scalapack-2.2.1.tgz
wget --no-check-certificate https://www.cp2k.org/static/downloads/COSMA-v2.6.6.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/COSTA-v2.2.2.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/Tiled-MM-v2.3.1.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/elpa-2024.03.001.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/scotch_6.0.0.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/superlu_dist_6.1.0.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/pexsi_v1.2.0.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/QUIP-0.9.10.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/fox-b5b69ef9a46837bd944ba5c9bc1cf9d00a6198a7.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/gsl-2.7.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/plumed-src-2.9.0.tgz
wget --no-check-certificate https://www.cp2k.org/static/downloads/hdf5-1.14.2.tar.bz2
wget --no-check-certificate https://www.cp2k.org/static/downloads/libvdwxc-0.4.0.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/spglib-2.3.1.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/libvori-220621.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/libtorch-cxx11-abi-shared-with-deps-1.12.1+cpu.zip
wget --no-check-certificate https://www.cp2k.org/static/downloads/SpFFT-1.1.0.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/SpLA-1.6.1.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/SIRIUS-7.5.2.tar.gz
wget --no-check-certificate https://www.cp2k.org/static/downloads/dftd4-3.6.0.tar.gz
如果管理节点不能联网,可下载上面百度云盘链接里的build文件夹,但如果没百度云盘会员,还是用上面的https链接在浏览器一个个下载比较快。下载完后,并上传到build文件夹中。

salloc申请编译计算节点

集群管理节点一般做了限制,不允许在上面直接运行作业或编译,我们也没专门设置编译节点,因此需要在计算节点上编译。为避免正常作业与编译抢占CPU>,我们把编译也按正常作业提交即可。

[userA@quantum build]$ salloc -N1 -n64 -p gao-grp
salloc: Granted job allocation 5612
salloc: Waiting for resource configuration
salloc: Nodes cu01 are ready for job
-N 申请的计算节点数目;-n 申请的任务核数;-p 申请的作业队列;-w 申请的计算节点名称。
账号可使用队列的名称:可使用sacctmgr show ass user=$(whoami) format=part查看。队列所对应的节点可用sinfo或者pestat命令查看。
这里我们申请一个计算节点,64核,使用gao-grp队列,申请计算节点为cu01.

toolchain安装各种库文件

ssh进入申请的节点,进入toolchain目录进行安装各种库文件

[userA@quantum build]$ ssh cu01
[userA@cu01 ~]$ cd soft/cp2k-2024.3/tools/toolchain
[userA@cu01 toolchain]$ ./install_cp2k_toolchain.sh -j 64 --install-all --target-cpu=native --with-deepmd=no --with-gcc=install --with-mpich=install --with-mpich-device=ch4

注意

  1. 集群暂无GPU计算卡,我们安装CP2K所有模块,而没安装deepmd模块。
  2. target-cpu使用native,代表使用此机器最高指令集。如果在编译节点使用lscpu |grep -c avx512命令,显示1,代表使用avx512指令集(这里native相当于skylake-avx512);如果显示0,一般使用avx2指令集(lscpu |grep -c avx2,显示1),native相当于haswell。
  3. 如果集群有较旧Intel机器或AMD EPYC 7002系列前的CPU(最高指令集avx2)和具有avx512指令集的机器,要编译在所有节点上运行的cp2k,需要在最高指令集avx2的机器上用--target-cpu=native或者在编译机器上用--target-cpu=generic
  4. 如果管理节点不能联网或者确实不需要dftd4模块,在install_cp2k_toolchain.sh后加上--with-dftd4=no

编译cp2k

上一步在管理节点安装好了dftd4后,编译需要再次ssh进入到申请的节点。

[userA@cu01 ~]$ cd soft/cp2k-2024.3/tools/toolchain
[userA@cu01 toolchain]$ cp install/arch/* ~/soft/cp2k-2024.3/arch/
[userA@cu01 toolchain]$ source install/setup
[userA@cu01 toolchain]$ cd ../../
[userA@cu01 cp2k-2024.3]$ make -j 64 ARCH=local VERSION="ssmp psmp" |tee make.log

编译测试

使用Slurm作业系统,还安装了slurm-torque包(含有/usr/bin/mpiexec),需要先修改do_regtest.py。

[userA@cu01 cp2k-2024.3]$ sed -i 's/mpiexec -n/mpiexec.hydra -n/g' tests/do_regtest.py
[userA@cu01 cp2k-2024.3]$ make -j 64 ARCH=local VERSION=psmp test |tee make.psmp.test
[userA@cu01 cp2k-2024.3]$ tail make.psmp.test 
------------------------------- Summary --------------------------------
Number of FAILED  tests 0
Number of WRONG   tests 0
Number of CORRECT tests 4212
Total number of   tests 4212

Summary: correct: 4212 / 4212; 10min
Status: OK

*************************** Testing ended ******************************
[userA@cu01 cp2k-2024.3]$ make -j 64 ARCH=local VERSION=ssmp test |tee make.ssmp.test
[userA@cu01 cp2k-2024.3]$ tail make.ssmp.test 
------------------------------- Summary --------------------------------
Number of FAILED  tests 0
Number of WRONG   tests 0
Number of CORRECT tests 4130
Total number of   tests 4130

Summary: correct: 4130 / 4130; 5min
Status: OK

*************************** Testing ended ******************************

cp2k的提交脚本

test.slurm
#!/bin/bash
# Job submission script for SLURM:
# Usage: sbatch <this_script>
##############脚本第一部分,声明SLURM作业管理系统的请求资源参数#####################
#SBATCH -J test
#SBATCH -o test.o%J
#SBATCH -N 1
#SBATCH --ntasks-per-node=64
#SBATCH -t 2024:03:00
#SBATCH -p gao-grp
########################请求资源参数的解释###################################
#    -J: 作业名称
#    -o: 标准输出stdout
#    -e: 标准错误stderr,不写-e,标准输出stdout和标准错误stderr合并到.ojobid文件中
#    -N: 请求的节点数目
#    -n: 请求的总核数,如果-N后为1,等同于--ntasks-per-node
#    -t: 时间限制
#    -p: 申请的分区
#    -w: 后面跟请求的指定节点名称
#############################################################################

#################脚本第二部分,定义要运行作业软件的环境变量#######################
# go to work dir
cd $SLURM_SUBMIT_DIR

source $HOME/soft/cp2k-2024.3/tools/toolchain/install/setup
export CP2K_DATA_DIR=$HOME/soft/cp2k-2024.3/data

########################脚本第三部分,运行作业的命令############################

echo "Starting CP2K run at" `date`

# The program we want to execute,根据自己的作业,主要修改的也是下面这一行
time mpirun -np $SLURM_NTASKS cp2k.popt test.inp > $SLURM_SUBMIT_DIR/test.log

echo "Finished CP2K run at" `date`
使用sbatch test.slurm提交作业。

参考

  1. 给老爷机离线安装CP2K-2022.2的笔记
  2. 超详细CP2K编译过程,GNU9.3+intel MKL+openmpi【含视频】
本文阅读量  次
本站总访问量  次