CP2K GPU加速路线与选型
从高斯轨道、密度网格到杂化交换,结合32水和三水HF真实输入理解CPU/GPU协作与资源选择。
阅读本篇目录
CP2K常用的GPW方法把高斯轨道与密度网格结合起来。GPU加速覆盖的是其中若干计算环节:稀疏矩阵乘法、网格处理、FFT,以及适用的精确交换积分后端。选择资源时,先看方法和实际运行路径,再看显卡。
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/为可重画图片。

本专题有两种模型:32个水、96原子的PBE单点,以及3个水、9原子的Hartree–Fock单点。后者的XC_FUNCTIONAL NONE配HF交换,用于演示libGint路径,不应误称为PBE0或含相关泛函的杂化DFT。
2. 加速路线如何演进#
理解CP2K的GPU发展,可以按计算环节分三层:先将大批矩阵运算交给加速器,再扩展密度网格与FFT等环节,最后为精确交换等专用方法配置对应GPU积分后端。各层仍有CPU工作,实际路径依赖构建、算法和输入,不能把“GPU编译版”理解为所有步骤都在GPU运行。

这是可用路径示意,不是实测时间分解。具体CUDA构建开关和GPU架构选项见CP2K 2026.2 CUDA说明;HF后端选择见HFX_LIBRARY定义。
3. 怎么选P100与V100#
本专题实际比较P100 16GB PCIe与V100 16GB SXM2。先用单卡完成自己的完整代表输入,检查SCF、GPU后端、CPU占用和显存;再考虑多卡。V100 32GB不在本次实测内,不能直接把16GB结果外推成32GB数据。
相同原子数也可能有不同矩阵规模、网格负担与精确交换代价;不能照搬其他程序的“多少原子开始用GPU”阈值。本次96原子PBE例子从4卡到8卡收益很小或变慢,详细数值见性能与卡数。
4. 先做一次代表任务#
先在新解压目录选择与账号资源相符的提交脚本,例如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任务。
head -n 30 inputs/pbe32.inp
head -n 50 inputs/hfx3.inp