多节点 MPI 并行值不值
"两台 32 核 = 一台 64 核"是本领域最贵的错觉。跨节点并行的天花板由网络和通信量决定,而大多数体系的通信量并不小。
一、单节点为什么更快
同一个节点内的 MPI 进程通过共享内存与 NUMA 互联通信,延迟在百纳秒级;跨节点走的是网卡与交换机,延迟在微秒级,差了两个数量级。VASP 每个电子步都要做全局归约与波函数分发,这些操作在跨节点时全部变成网络往返。
经验规律:
| 节点数 | 典型并行效率 | 说明 |
|---|---|---|
| 1 节点内 32→64 核 | 70%~85% | 受内存带宽限制,仍值得 |
| 2 节点 | 50%~75% | 小体系可能低于 50% |
| 4 节点 | 35%~60% | 需要大体系与好网络才成立 |
| 8 节点以上 | 25%~45% | 基本只有 AIMD、GW 这类超大任务才划算 |
换句话说:4 个节点的费用是单节点的 4 倍,墙钟可能只缩短一半。这笔账必须自己算一遍。
二、什么情况下"必须"多节点
- 单节点内存装不下。这是最正当的理由:波函数与 FFT 工作区超过最大规格实例的内存时,只能分到多台机器上。
- 体系大到单节点核数不够(一般 500 原子以上)。
- 任务本身是分布式的:多个独立算例各占一个节点,这其实不算并行,是批量。
除这三种,其余情况多节点通常是"看起来更快、实际更贵"。
三、网络要多快
| 互联 | 带宽量级 | 适合 |
|---|---|---|
| 普通云内网(万兆级) | ~10 Gbps | 2 节点、体系中等,勉强可用 |
| 高网络性能规格 / 25 Gbps 以上 | 25~100 Gbps | 4 节点以上的 MPI |
| RDMA 类(InfiniBand / RoCE / eRDMA) | 100 Gbps 起,延迟最低 | 大规模 MPI、AIMD、GW |
云上有个容易忽略的点:实例的网络带宽随规格变化。便宜的小规格实例网络能力也弱,拿四台小机器组集群,瓶颈可能先出现在网络上。选多节点时,网络规格和 CPU 规格要一起看。
四、VASP 跨节点的参数怎么设
两条硬规则:
NCORE不能超过单个节点的核数。跨节点时 NCORE 设得过大,会导致一个轨道分布在多台机器上,通信量暴涨。- 多节点时优先用
KPAR做并行,因为 k 点之间几乎不通信。前提是 k 点数能被 KPAR 整除。
# 4 节点 × 32 核,共 128 核,12 个 k 点
NCORE = 4 # 不超过单节点核数
KPAR = 4 # 12 个 k 点可分给 4 组,剩下的核在每个 k 点组内并行
NSIM = 1 # 跨节点不要开 NSIM
NSIM(同时算多个能带)在单节点内能提升效率,但跨节点会显著增加通信,一般不推荐。
五、自己测一次并行效率
不要相信任何通用表格,用同一个输入跑四次:
# 固定 10 个电子步,分别用不同节点数运行,记录墙钟
time mpirun -np 32 --host n1 vasp_std > log_1node
time mpirun -np 64 --host n1,n2 vasp_std > log_2node
time mpirun -np 128 --host n1,n2,n3,n4 vasp_std > log_4node
并行效率 = 单节点时间 ÷ 节点数 ÷ 该节点数的时间。把效率乘回到成本上:
每小时每万步成本 = 节点数 × 单节点小时价 ÷ 实际墙钟
如果 4 节点的这个值高于 1 节点,那多节点就是纯亏——哪怕它"看起来跑得快"。
六、云上组多节点集群的三个注意点
- 同可用区、同规格:跨可用区会绕远路,延迟翻倍。
- 共享存储要单独评估:NFS 挂载的 IO 在多节点同时读写时会成为新瓶颈,scratch 要落本地盘。
- 抢占式会整批回收:多节点任务一旦有一个节点被回收,整个 MPI 作业失败。用抢占式做多节点,要做检查点且能容错重启。
相关阅读:Gaussian 常见报错对照手册:19 条错误原文、原因与改法 · LAMMPS 常见报错对照手册:16 条错误原文、原因与改法 · 每月 300 / 1000 / 3000 元预算,在云上能跑多少计算 · INCAR 检查器 · 配置推荐器 · 常见问题 · 离线单文件估算器 · 内存与 WAVECAR 估算器 · core-hour 机时估算器
本站部分链接为推广链接,你购买的价格不变。并行效率区间为经验值,务必以自己的实测为准。