生产资源与实测耗时
python3 reproduce.py 使用论文参数完整运行 22 点 BAFQMC/参考计算,
然后生成处理后数据和图像。主图包含 8 个粒子数守恒 U 点和 7 个配对 Delta 点;
补充材料新增 7 个 U1 点。默认使用 1 个 MPI 进程、1 个数值库线程,顺序计算。
请在近期桌面端预留 12–24 小时、16 GiB 内存(至少 8 GiB 可用)以及 8 GiB 可用磁盘。
该时间范围由以下实测数据汇总得出;完整的一次性运行尚未计时。
处理器或文件系统较慢时可能需要更长时间。
使用 python3 reproduce.py --plan 显示预算而不启动任务。
正式运行前也会打印相同的估计。--threads N 可更改数值库线程数;
由于各阶段的扩展性不同,单线程的时间范围不应直接除以 N。
使用 --scope main 或 --scope supplement 选择对应的图,
再加 --model 限制求解器。完整计算预算包含上述全部三个扫描。
实测数据
校准测量使用 AMD Ryzen 5 9600X、Linux/WSL2、Intel Fortran 2025.2.1/MKL, 1 个 MPI 进程/线程。Python ED 使用 QuSpin 1.0.1、NumPy 2.4.4、 SciPy 1.17.1 和 Numba 0.65.1。
| 计算内容 | 耗时 | 峰值常驻内存 |
|---|---|---|
| 配对 BAFQMC,Delta=0.2,原始 beta=4 和 Delta tau=0.01,500 次预热,1000 个 bin | 46.38 秒 | 65 MiB |
| 配对 ED,Delta=0.2,nmax=3,ncut=4,完整 7297 维基组的热迹 | 40.40 秒 | 3.01 GiB |
| 主图粒子数守恒 BAFQMC,U=0.25(输入 U2),beta=4,原始预热,1000 个 bin | 5.47 秒 | 61 MiB |
| 粒子数守恒 BAFQMC,U1=-0.6,beta=1,原始预热,1000 个 bin | 2.29 秒 | 61 MiB |
| 原始 7 个配对 100000-bin 生产链 | 12.20 小时(各算例耗时之和) | 未记录 |
| 历史补充吸引密度 ED,6 个已完成壳层 | 243.5–289.3 秒/点 | 未记录 |
将配对 1000-bin 校准乘以 100 得到保守的单点估计约 1.29 小时 (因为也同时放大了预热开销)。7 个点合计约 9 小时。结合历史完整运行数据, 9–13 小时是在类似硬件上配对 BAFQMC 阶段的合理预算。 7 次稠密配对 ED 计算额外增加约 5–10 分钟。 两次粒子数守恒校准给出约 1.3–1.7 小时的 15 个 BAFQMC 点预算。 粒子数守恒 ED 的分块大小各异;主图 U=0.25、七壳层点主导参考阶段。 其历史成功检查点记录在开始后约 67.5 分钟写出,但历史线程数未保留。 粒子数守恒部分(含 ED 阶段)预留约 3–5 小时。 重新计算的配对 ED 点将 4 个参考值精确到 5.3e-18 绝对误差范围内。
粒子数守恒 ED 内存
存档的有相互作用参考值在 4–7 个粒子数壳层后停止。 最大所需动量块在 U=0.25(输入 U1=0,U2=0.25)处: 第 7 壳层维数为 9075。四个 complex128 矩阵占用约 4.91 GiB; 稀疏算符、Python 和数值库工作空间还需要额外内存。 这就是为什么完整计算应至少有 8 GiB 可用,即使 BAFQMC 本身使用的内存远少于此。
自由 U1=U2=0 点使用解析玻色分布重新计算(与论文一致), 不启动不必要的截断多体 ED。 有相互作用点保留原始的收敛策略和粒子数截断。 内存检查在过大的稠密求解之前停止;它们不会悄悄降低粒子数截断。
存储与续跑
BAFQMC 反复追加写入大量小文件。在 WSL 中,请在 Linux 文件系统而非 /mnt/c 上进行这些写入。
生产驱动程序自动创建 Linux 临时暂存空间,并在 progress.json 中记录其路径。
使用 --work-dir /path/on/fast/linux/storage 指定空的暂存目录。
每个已完成的算例/阶段都会复制到所选输出目录中。原始输出不进入 Git。
暂存和复制的输出可以共存,因此磁盘预算包含两者。
每个算例/阶段都有日志、耗时和文件哈希。续跑中断的计算:
python3 reproduce.py --resume --output benchmarks/paper/output/full-YYYYMMDD-HHMMSS
请与原始命令使用相同的 --scope、--model、--python-ed 和 --threads。
已完成的阶段会被检查并跳过。中断的链在暂存中移至一边并从其原始输入重新开始;
其部分样本不会追加到新链中。--mode dqmc、--mode ed 和 --mode analyze
也可以用显式的 --output 分别运行生产阶段。
所有结果复制完成并检查后,可删除 progress.json 中记录的暂存目录。
保留研究所需的最终 runs/、表格、环境记录和日志。