Calorine专题

Calorine GPU批量预测

八帧金刚石与石墨烯批量预测,解释返回标签、精度和模型版本边界。

更新于 2026-10-28约 3 分钟阅读按任务与环境选择适用配置
阅读本篇目录

下载本专题结构、势文件、真实参考数据和全部Python脚本。以下命令在解压目录执行;CPU计算使用已分配的CPU资源,GPU通过Slurm分配。原始结果放在 reference/,复跑结果写入当前目录。

1 批量预测适合什么任务#

GPUNEP逐结构调用GPUMD;一批结构可用batch_predict_properties通过nep的prediction模式集中预测。本例使用官方C_2024_NEP4,对金刚石和石墨烯各4种规模共8帧预测,并逐帧与CPUNEP比较;没有把零占位目标当成DFT标签。

module load calorine/4.0 gpumd/5.9.1-p100
sbatch batch.sbatch
squeue -u "$USER"
cat BATCH-PREDICTION.json

2 完整结构与API调用#

from ase.build import bulk, graphene
from calorine.tools import batch_predict_properties
frames = []
for rep in [1,2,3,4]:
    frames.append(bulk('C','diamond',a=3.567).repeat((rep,rep,rep)))
    g = graphene(a=2.46,vacuum=8).repeat((rep,rep,1))
    g.pbc = True
    frames.append(g)
predicted = batch_predict_properties(
    frames, 'carbon-nep.txt', command='nep', directory='batch-carbon')
for a in predicted:
    print(len(a), a.get_potential_energy(), a.get_stress())

金刚石为2、16、54、128原子;石墨烯为2、8、18、32原子,真空仅是本例几何设置。对二维材料,ASE返回的三维体积归一应力依赖真空厚度;不能直接把该GPa值当作独立于真空的二维应力。

3 读取返回值和差异#

返回的新Atoms包含SinglePointCalculator,可直接get_potential_energy/get_forces/get_stress;输入列表不被改成预测标签。工作目录保留nep.in、nep.txt、train.xyz及各预测输出。重新计算建议使用新的目录,避免与旧输出混合。

8帧碳结构实际GPU批量预测与CPU对照

本例最大能量差约6.28E-6 eV/atom,最大应力差约2.01E-4 GPa;包含GPU单精度与文本输出舍入。脚本按1E-5 eV/atom、1E-4 eV/Å及0.001 GPa核对,同时保留实际误差;阈值是本例对照尺度,不是模型相对DFT的误差。

4 为什么Si单点模型不直接拿来跑此批量接口#

本包Si官方模型的角向n_max=10,可由CPUNEP及GPUMD的MD读取器计算;当前nep5.9.1训练/预测参数解析器要求角向n_max≤8。批量接口会据模型写出nep.in,因此本例选择兼容的C模型。不要直接改势权重或把10改成8来绕过尺寸约束;改用单点CPU/GPUNEP接口,或使用经重新训练且与程序兼容的模型。

客户使用自己的模型时,先对少量结构同时比较CPU和批量预测,确认元素、模型类型、版本及张量约定,再扩大到大量结构。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗