CP2K GPU版本、工具链与功能入口
列清现有CPU/P100/V100模块、实际编译环境、常用加速后端和libGint势类型条件。
阅读本篇目录
CP2K的CPU与GPU构建使用不同编译器、MPI和数学库。先选择正确模块,能避免把程序启动或MPI冲突误判成输入问题。
1. 资料与实际输入#
下载CP2K GPU输入、实际输出、CSV与绘图资料包,保存为example.zip:
python3 -m zipfile -e example.zip .
cd cp2k-gpu-practical-data
bash results.sh
bash read.sh
bash plot.sh
资料来自2026年10月22日实际Slurm计算;本次复用结果,不重新跑性能任务。data/是逐次数据,reference-results/保存原生输出,figures/为可重画图片。
本专题固定2026.2实测,2025.2环境另行保留。历史版本不因为模块名称相似就自动具有相同后端和输入默认值。
2. 当前2026.2构建#
| 平台 | 模块 | 本次对应工具链 |
|---|---|---|
| CPU | cp2k/2026.2-8173m |
Intel oneAPI 2024.2、icx/ifx、Intel MPI 2021.13、MKL 2024.2 |
| P100 | cp2k/2026.2-p100 |
GNU 13.3、MPICH 5.0.1、CUDA 12.9、OpenBLAS 0.3.33、ScaLAPACK 2.2.3,sm60 |
| V100 | cp2k/2026.2-v100 |
GNU 13.3、MPICH 5.0.1、CUDA 12.9、OpenBLAS 0.3.33、ScaLAPACK 2.2.3,sm70 |
三套程序都是双精度MPI+OpenMP的cp2k.psmp。2025.2相应模块为cp2k/2025.2-8173m、cp2k/2025.2-p100、cp2k/2025.2-v100,版本差异可查实际输入树对照。
source /etc/profile.d/lmod.sh
module purge
module show cp2k/2026.2-p100
module load cp2k/2026.2-p100
which cp2k.psmp
cp2k.psmp --version
不要先加载其他软件的HPC-X、OpenMPI或Intel MPI,再与本GPU版的私有MPICH混用。
3. 加速入口和边界#
| 路径 | 本构建入口 | 使用时要核对 |
|---|---|---|
| GPW/PBE | DBCSR、GRID/PW/DBM等GPU实现 | 具体输入与日志是否实际调用 |
| 对角化 | 配套ELPA GPU构建 | 采用OT的任务不等于执行ELPA对角化 |
| 精确交换 | 显式HFX_LIBRARY LIBGINT |
本固定版本接口的势类型条件 |
| ADMM | 辅助基组与相应HF设置 | ADMM是算法近似,不能与别的物理输入混比 |
| PLUMED | 2.10.1配套库 | 选择实际可用的Action和耦合方式 |
本安装还包含Libint 2.13.1、Libxc 7.0.0、DBCSR 2.10.0、ELPA 2026.02.002、DFT-D4 4.2.0等依赖。SIRIUS、COSMA、PEXSI、DLAF、MiMiC、LibTorch、GauXC、cuSOLVERMp等可选组件并未在这一安装中启用;不要仅凭上游手册有该名称就当作可用。
4. libGint怎么写#
&HF
HFX_LIBRARY LIBGINT
&INTERACTION_POTENTIAL
POTENTIAL_TYPE TRUNCATED
CUTOFF_RADIUS 4.5
T_C_G_DATA t_c_g.dat
&END INTERACTION_POTENTIAL
&END HF
这是本例HF段的节选,完整文件在inputs/hfx3.inp。本固定2026.2接口仅接受该TRUNCATED路径;COULOMB输入直接改为LIBGINT会被拒绝。若研究要求保留COULOMB模型,应选择适用的LIBINT路径并检查精度,而不是仅为启动成功改掉相互作用势。
HF积分默认是LIBINT,显式LIBGINT才选择CUDA积分后端;BOTH是两种实现的诊断比较选项,不用它的计时代表单一GPU后端。参见版本化HF手册。
5. 提交实际输入#
先在新解压目录选择与账号资源相符的提交脚本,例如P100单卡或V100 16GB单卡:
sbatch p100-pbe32-1g.slurm
或:
sbatch v100-pbe32-1g.slurm
这是核时GPU分区的示例脚本。套餐账号应使用yskit中对应账号、平台的CP2K模板,并保持本例MPI/OMP与GPU申请匹配。每个作业只跑一个配置,先预热一次,再正式运行三次;不会自动提交全部配置。新结果可以这样读取:
python3 read-one.py work/p100-pbe32-1g/r1
完整历史比较仍用bash read.sh。不要把Slurm脚本直接改成在登录节点执行,也不要把P100模块用于V100任务。
要运行三水HF例子,使用p100-hfx3-1g.slurm或v100-hfx3-1g.slurm,同样先确认账号分区与资源申请。