CP2K Tree Monte Carlo:并行候选与接受构型
给出完整TMC及能量模型输入,使用4MPI实算核对40个逻辑构型与实际接受轨迹。
阅读本篇目录
本系列用鸢算科技集群实际完成的三个CP2K入口,说明传统Monte Carlo、Tree Monte Carlo和温度加速Monte Carlo的输入、提交与结果读取。它们解决的问题和计数方式不同,不能只改RUN_TYPE名字就互换。
下载完整输入、实际输出与绘图工具,保存为example.zip:
python3 -m zipfile -e example.zip .
cd cp2k-special-sampling-examples
bash results.sh
bash read.sh
bash plot.sh
以上只读已经完成的结果,不启动新计算。程序为cp2k/2026.2-8173m,Intel oneAPI 2024.2/ifx、Intel MPI 2021.13、MKL构建。原始方法输入改编自固定CP2K 2026.2官方示例,附GPL许可;三种例子均为小规模操作参考,不据此报告相平衡、扩散时间或收敛自由能。
要重算整套小例子,在新的解压目录提交:
sbatch run.slurm
squeue -u "$USER"
# 完成后
bash read.sh work analysis-new
bash plot.sh analysis-new figures-new work
CPU入口按集群规则申请整节点56核,实际按每个步骤分别用1、4或2个MPI进程,OpenMP为1;这不是56核性能测试。work/已经存在时脚本会保留它,避免覆盖结果。
1. TMC不是普通MD,也不是简单把MC多开几个进程#
Tree Monte Carlo组织候选构型树与并行能量计算。本例使用7个水分子、21原子FIST模型,330 K、40个逻辑构型,4个MPI进程。原生输出显示配置树与独立能量worker,实际写出10帧接受构型。
这个入口需要并行执行;不要用单MPI进程正常退出就判断已完成采样。固定输入中的RND_DETERMINISTIC=42有助于检查流程,但不同进程布局或数值环境的随机接受结果仍需按实际输出读取。
2. 两层输入一起看#
主输入组织TMC,ENERGY_FILE_NAME H2O.inp则指定能量模型:
cat inputs/water-TMC/input.inp
cat inputs/water-TMC/H2O.inp
主输入完整如下:
# single potential calculations on one temperature
# also testing the random number generator
# moving all elements
&GLOBAL
PRINT_LEVEL LOW
PROGRAM TMC
PROJECT H2O_TMC
RUN_TYPE TMC
WALLTIME 00:10:25
&END GLOBAL
&MOTION
&TMC
ENERGY_FILE_NAME H2O.inp
ESIMATE_ACC_PROB .TRUE.
GROUP_CC_SIZE 0
GROUP_ENERGY_NR 1
GROUP_ENERGY_SIZE 1
INFO_OUT_STEP_SIZE 1
NUM_MC_ELEM 40
NUM_MV_ELEM_IN_CELL 0
PRINT_ONLY_ACC .TRUE.
PRINT_TEST_OUTPUT
RESTART_OUT 0
RND_DETERMINISTIC 42
TEMPERATURE 330
&MOVE_TYPE ATOM_TRANS
INIT_ACC_PROB 0.2
PROB 1
SIZE 0.1
&END MOVE_TYPE
&MOVE_TYPE MOL_TRANS
SIZE 0.7
&END MOVE_TYPE
&MOVE_TYPE MOL_ROT
SIZE 24
&END MOVE_TYPE
&END TMC
&END MOTION
NUM_MC_ELEM=40与GROUP_ENERGY_NR/SIZE分别涉及采样规模和并行工作组,不能把40直接解释成40 fs。分子拓扑、能量输入和移动对象需要匹配。
完整H2O.inp:展开查看FIST模型、坐标和拓扑
&GLOBAL
PRINT_LEVEL LOW
PROJECT H2O_TMC
RUN_TYPE TMC
WALLTIME 10
#TRACE
&END GLOBAL
&FORCE_EVAL
METHOD FIST
&MM
&FORCEFIELD
&BEND
ATOMS H O H
K 0.05
THETA0 1.82422
&END BEND
&BOND
ATOMS O H
K 0.05
R0 0.97572
&END BOND
&CHARGE
ATOM O
CHARGE -0.8476
&END CHARGE
&CHARGE
ATOM H
CHARGE 0.4238
&END CHARGE
&NONBONDED
&LENNARD-JONES
ATOMS O O
EPSILON 78.19580
RCUT 5.0
SIGMA 3.1655
&END LENNARD-JONES
&LENNARD-JONES
ATOMS O H
EPSILON 0.0
RCUT 5.0
SIGMA 3.1655
&END LENNARD-JONES
&LENNARD-JONES
ATOMS H H
EPSILON 0.0
RCUT 5.0
SIGMA 3.1655
&END LENNARD-JONES
&END NONBONDED
&SPLINE
EMAX_SPLINE 1000000.0
&END SPLINE
&END FORCEFIELD
&POISSON
&EWALD
ALPHA .40
EWALD_ACCURACY 1.0E-2
EWALD_TYPE ewald
GMAX 11
&END EWALD
&END POISSON
&END MM
&SUBSYS
&CELL
ABC 13.5 13.5 13.5
&END CELL
&COORD
O 11.667599837210 7.964352234664 0.059453614019
H 10.873359634781 8.005423314626 0.665667823055
H 11.364979095795 7.770411108906 -0.873716837951
O 2.314161441602 5.011228167767 2.784706973673
H 1.663128370368 5.686998340596 3.130381117447
H 2.659721328394 5.306531429441 1.893985965664
O 10.262864742466 5.548805003571 11.360725453725
H 10.424041748648 4.666485986338 11.802918991113
H 9.436479204754 5.494708086386 10.800225647804
O 5.937092785694 12.752770338234 7.554822749656
H 6.459679552548 12.731874699056 8.407152758147
H 6.560379344025 12.890048310674 6.784973290144
O 1.052476316752 3.192494253568 0.284763135867
H 1.009686510209 3.892635795528 0.997483876183
H 1.385134340137 3.601676794269 -0.564888471374
O 11.621014134223 7.899470257763 6.835708666826
H 10.723243819476 8.290315257093 7.038806299646
H 12.107936378358 8.496446358905 6.198114886544
O 3.255054397643 5.532098285916 13.500752220167
H 3.169785700155 4.860242146843 12.764995074351
H 3.889107504717 6.253294143532 13.221731148935
&END COORD
&TOPOLOGY
CONNECTIVITY MOL_SET
&MOL_SET
&MOLECULE
CONN_FILE_NAME topology_fist_WAT.psf
NMOL 7
&END MOLECULE
&END MOL_SET
&END TOPOLOGY
&END SUBSYS
&END FORCE_EVAL
3. 用4个MPI进程运行#
在新的TMC作业目录及已分配的CPU资源中:
module purge
module load cp2k/2026.2-8173m
export OMP_NUM_THREADS=1 MKL_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1
mpirun -np 4 cp2k.psmp -i input.inp -o output.log
也可直接使用本系列根目录的sbatch run.slurm,它会为所有步骤安排相应MPI数。
4. 看配置树、worker和接受构型#
grep 'Configurations used' reference-results/water-TMC/output.log | tail
grep 'do_tmc_worker' reference-results/water-TMC/output.log
head reference-results/water-TMC/tmc_trajectory_T330.00.xyz
cat analysis-read/CP2K-TMC-accepted.csv

输出中40个逻辑构型与10帧写出的接受状态是不同计数;被拒绝、尚待确认的候选和实际接受轨迹不能混算。轨迹额外的元数据行由配套读取器处理,不要假定它与所有标准XYZ文件完全相同。
末端接受帧的原生能量与独立FIST单点相差约3.20×10⁻¹¹ Hartree。总脚本会从你自己生成的轨迹制作端点输入,核对自己的结果,不会套用参考坐标。
40个小构型主要演示并行组织,不证明热力学平均值已收敛。更长采样应先检查接受率、目标分布与误差。另一种引入辅助变量的算法见TAMC。