8.1 比较 MPI、线程与求解器
8.1.1 必须测量相同科学工作
加快 ABACUS 只有在完成同样合格的计算时才有意义。增加处理器同时改变轨道、精度、SCF 阈值或 k 网格,不是强扩展测试。短小硅教学任务也不能预测大型金属表面的最佳布局。本课只设计实验,不虚构加速比,不提交真实集群任务。
模板尚未执行,依据 ABACUS 3.9.0 CPU 接口。从已收敛的首次 LCAO 硅计算或首次 PW 硅计算出发。该性能实验保持哈密顿量不变,原始 LDA 教学文件可保留。选择足够反映目标瓶颈的工作量,再冻结 INPUT、STRU、KPT 和物种文件哈希。
记录程序、编译器、MPI、BLAS/ScaLAPACK/ELPA、CPU、内存、节点数及绑定方式。GPU 和混合精度是另设的版本/构建相关实验。手册支持求解器名称,并不证明二进制包含其依赖。
8.1.2 分解与扩展定义
相同工作量、参考布局 \(p_0\) 下,
必须说明参考:16 相对 4 进程的加速比,与相对单进程不同。节点时或核时可衡量成本;更短墙钟时间可能消耗更多总计算资源,应按排队和吞吐目标选择。
PW 包含波函数、FFT、k 点任务;LCAO 包含数值网格组装和广义对角化,后者有重叠矩阵,求解器必须匹配表示。小矩阵可能由通信主导,有效 k 点过少会使池负载失衡。
分块图表示任务分解;曲线不是硬件实测,也不是宣传加速比。
8.1.3 布局增量与启动示例
复制相同父任务,仅改变布局参数:
第二目录将 kpar 1 替换为 kpar 2 前,检查程序接受的 k 点数和 MPI 进程数;文档上限为二者较小值。选择程序与 MPI 能合理均匀分配的进程布局。Gamma 单点不会因请求两个池就产生两组有用 k 任务。
以下 Linux shell 仅为未执行的启动语法,不是集群提交脚本:
# Run separately inside a fresh, identically prepared benchmark folder.
export OMP_NUM_THREADS=1
mpirun -np 4 abacus > stdout.log 2>&1
实际启动遵循本机构资源和调度规则。四进程不是材料生产推荐。线程实验保持分配核数固定,仅在构建及线性代数库支持的配置间比较进程/线程拆分,同时记录 BLAS 和 ELPA 线程。设置 OMP 却不控制嵌套库线程,会超额订阅;不要用未验证的程序环境变量掩盖问题。
8.1.4 求解器与布局分开测试
PW 文档列出 cg、dav、dav_subspace、bpcg,内存和设备限制不同;LCAO 的 genelpa、scalapack_gvx 等广义求解器依赖构建,串行默认路径又不同。不能因为 genelpa 加速 LCAO 就用于 PW。
先固定求解器测试布局,再保持物理问题与精度目标,独立测试求解器。检查残差和本征值精度,不只看迭代次数。Davidson 子空间改变会影响内存和每步时间;初始化也可能改变 SCF 次数。冷启动和暖启动应分组记录。
不能把 bndpar 当通用 LCAO 能带并行开关;该版说明仅针对随机轨道。各 k 池、GPU、杂化交换路径未必有相同扩展性,需验证所测组合。
8.1.5 输出、空白计时表与验收
保存 stdout.log、完整 OUT.<suffix>/running_scf.log、求解器/布局信息与计时概要。使用平台适合工具记录墙钟时间,并说明初始化和 I/O 是否包含。相近负载下重复多次,报告离散程度,不能仅挑最小值。复用旧输出与新目录首次运行不是相同条件。
| 问题哈希 | 进程×线程 | kpar | 求解器/库 | SCF 次数 | 能量/力检查 | 重复耗时(s) | 峰值内存 | 核时 |
|---|---|---|---|---|---|---|---|---|
| 4 × 1 | 1 | 已记录 | ||||||
| 4 × 1 | 合法时为 2 | 相同 | ||||||
| 固定核数,另一拆分 | 合法 | 相同 |
快速却不收敛或改变电子/磁分支的布局应拒绝。归约次序造成的小差异可以出现,但须小于科学容差。迭代次数不同,应报告总耗时及可比每步耗时;后者不单独代表端到端吞吐。
8.1.6 易错点、练习与答案
易错点。 只数进程忽略线程成本;不控绑定使求解器比较变成位置比较;池多于 k 点浪费资源;强扩展同时改精度改变工作量;用两原子绝缘体布局直接推广到大型金属;计时未收敛任务得到没有意义的快结果。
练习 1。 相对四进程,八进程耗时加速 1.5 倍,效率多少?答案: \(1.5/(8/4)=0.75\)。这是算术练习,不是性能实测。
练习 2。 线程布局更快但分配核数加倍,是否更高效?答案: 不一定;应在相同科学精度下比较核时、内存和吞吐目标,说明真实资源分配。
8.1.7 参考
下一例:安全重启与溯源。