Calorine专题

Calorine入门与CPU/GPU计算器

从Si完整Python输入到16组CPU/GPU对照,解释力、应力与Slurm设备选择。

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

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

1 先认识Calorine#

Calorine把GPUMD的NEP模型接入ASE:用Python构建结构,读取能量、原子力、应力,再接优化器、分子动力学和声子工具。它不替代DFT程序,也不会把任意NEP模型变成适用于所有元素、温度和相态的通用势。本例的Si模型取自GPUMD5.9.1自带的Si_2022_NEP4_4body,配套出处和引用在包内MODEL-SOURCES.json与MODEL-CITATIONS.md。

module load calorine/4.0
python -c "import calorine; print(calorine.__version__)"

独立入口使用Calorine4.0、ASE3.29,复用GPUMDkit1.5.8的Python3.11环境;声子层配套Phonopy4.8.3、Phonors0.6.0和Symfc1.7.3。CPU计算器通过已编译的_nepy扩展调用NEP;GPUNEP通过外部GPUMD运行,GPU程序须加载与分配卡型一致的版本。本组实算使用P100;不根据模块名称推断其他卡型的数值或性能。

2 最小Si计算#

将下列内容保存为 first.py:

from ase.build import bulk
from calorine.calculators import CPUNEP
atoms = bulk('Si', 'diamond', a=5.431, cubic=True)
atoms.rattle(stdev=0.01, seed=27)
atoms.calc = CPUNEP('si-nep.txt')
print('E / eV =', atoms.get_potential_energy())
print('F / eV/A =', atoms.get_forces())
print('stress / eV/A3 =', atoms.get_stress())
python first.py

这里是8原子的金刚石Si常规胞,周期边界继承自bulk。cubic=False时是2原子原胞,不要把两者总能量直接相减。应力为ASE的6分量顺序xx、yy、zz、yz、xz、xy,拉伸为正;GPUMD压力输出的符号和单位不同。

实际Si扰动、原子优化和晶胞平衡结构

3 CPU与GPU使用同一结构#

GPU计算器的关键参数如下:

from calorine.calculators import GPUNEP
atoms.calc = GPUNEP('si-nep.txt', command='gpumd',
                    directory='gpu-work', gpu_identifier_index=None)
print(atoms.get_potential_energy())

Slurm作业中使用 gpu_identifier_index=None,保留调度器设置的CUDA_VISIBLE_DEVICES。手工把索引固定为0可能覆盖分配,不适合作为公共作业模板。包内完整gpu.sbatch已配置单卡和16个数组任务,每个任务一个结构:

sbatch gpu.sbatch
squeue -u "$USER"
cat case-00/RESULT.json

核时P100用户使用包内gpu-8p100-hs模板;套餐用户按账号允许的P100分区修改partition,其余单卡和CPU资源配置保持对应。一次单点CPU/GPU差异不是加速比;短进程启动开销也不代表生产任务速度。

16组对照覆盖2、8、16、54、64、128、216、512原子,每种规模包含参考结构和扰动结构。实际CPU/GPU能量、力、应力及最大差值全部保存在参考JSON与npz中。

16组Si结构的实际CPU/GPU差异

4 用有限差分检查力和应力#

python cpu_workflows.py
cat CPU-RESULTS.json
python plot.py

脚本对一个坐标施加±1E-5 Å位移,用−[E(x+h)−E(x−h)]/(2h)与解析力比较;再对6个独立应变分量做中心差分,与ASE应力比较。只看能量相同不足以说明力、应力和张量顺序正确。客户替换模型时,应先核对模型元素、训练范围和小结构差分,再进行长轨迹。

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

查看配图

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

100%查看原图 ↗