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
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
账号可使用队列的名称:可使用
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
注意
- 集群暂无GPU计算卡,我们安装CP2K所有模块,而没安装deepmd模块。
- target-cpu使用native,代表使用此机器最高指令集。如果在编译节点使用
lscpu |grep -c avx512
命令,显示1,代表使用avx512指令集(这里native相当于skylake-avx512);如果显示0,一般使用avx2指令集(lscpu |grep -c avx2
,显示1),native相当于haswell。 - 如果集群有较旧Intel机器或AMD EPYC 7002系列前的CPU(最高指令集avx2)和具有avx512指令集的机器,要编译在所有节点上运行的cp2k,需要在最高指令集avx2的机器上用
--target-cpu=native
或者在编译机器上用--target-cpu=generic
。 - 如果管理节点不能联网或者确实不需要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
提交作业。
参考¶
本文阅读量 次本站总访问量 次