适用场景:显式动力学 · 单机双路 64×2(共128物理核)· MPP 纯分布式 · 5000万单元规模
一、硬件约束与并行上限
本机为双路对称 NUMA 拓扑(2 Socket × 64 Core),128 个物理核即硬上限。LS-DYNA MPP 软件层面无 128 核封锁,提交 256 进程在调度上可行,但会落入超线程逻辑核争抢:两个 rank 共享同一组执行单元,上下文切换叠加 MPI 全局同步,性能呈断崖式下跌而非线性衰减。行业超算环境跑 Dyna MPP 均建议 BIOS 层关闭超线程。
落地结论:-np 128 跑满物理核即为当前节点最优配置,不跨节点、不堆逻辑核。
二、Rank 与 CPU 的映射关系
| 概念 | 对应关系 |
|---|---|
| 1 个 MPI rank | 1 个独立 ls-dyna_mpp 进程,持有独立地址空间 |
| 理想绑定 | 1 rank : 1 物理核(一对一) |
| 双路实施 | I_MPI_PIN_DOMAIN=numa,rank 0–63 → Socket 0,rank 64–127 → Socket 1 |
| 必须规避 | 跨 NUMA 远端访存、OS 自由漂移调度 |
5000万 ÷ 128 rank = 390,625 单元/rank。
📌 行业口径修正:ANSYS 官方显式 MPP 下限为 ≥10,000~20,000 单元/rank,这是“通信不压垮计算”的保底线;工程重载区落在 20万~50万/rank。39万属于当代 EPYC/至强硬件下的大模型正常重载甜点,边界通信被海量局部计算充分摊薄。
三、显式求解的专属判定
显式中心差分不组全局刚度矩阵,每步只更新局部状态,并行扩展性天然优于隐式;其通信量只随边界节点数(表面积)增长、计算量随单元数(体积)增长,因此“怕少不怕多”——低于下限才致命,39万/rank 是健康状态。
- ENDTIM 毫秒级、碰撞/跌落/冲压/冲击 → 显式(本案例归属此类)
- 回弹/模态/屈曲/准静态长时 → 隐式(隐式对舍入更敏感,见下文)
四、单精度 _s vs 双精度 _d 选型
| 维度 | _s 单精度(32bit) | _d 双精度(64bit) |
|---|---|---|
| 运行时间 | 基线 | +≈30% |
| 内存占用 | 基线 | 约翻倍 |
| 有效数字 | ~7 位 | ~15 位 |
| 显式短时(<20万步) | ✅ 首选 | 可对比校验 |
| 显式长时(>20~50万步)/后期微小增量位移 | ⚠️ 累积截断 | ✅ 必选 |
| 隐式 / 特征值 / 线性单元 / XFEM·ICFD·EM | ❌ | ✅ 强制 |
| 双精度后处理 | — | 建议 *DATABASE_FORMAT, IBINARY=1 或 LSTC_BINARY=32ieee 控输出体积 |
本案例推荐路径:先 _s 跑通 → 核对 glstat 能量曲线与步数 → 若超 20 万步或需交付残余应力,复跑 _d 做一致性比对。
五、推荐提交骨架(可直接复用)
export OMP_NUM_THREADS=1
export I_MPI_PIN_DOMAIN=numa
export I_MPI_PIN_CELL=unit
mpirun -np 128 \
-genv I_MPI_PIN_DOMAIN=numa \
ls-dyna_mpp_s i=model.k p=pfile \
memory=2000m memory2=200m jobid=50M_expl_128
# 隐式/长时步场景替换为 ls-dyna_mpp_d
配套动作:NVMe 本地盘挂 pfile 的 local {} 目录、提交前 numactl --hardware 校验两 NUMA 域、d3hsp 重点盯 NZC / time per zone cycle 与 load_profile.xy 查负载均衡。
六、扩展边界
若模型演进至上亿单元,正确路线是多节点 + InfiniBand/RoCE + 做 undersubscription / Hybrid 缩放测试;单机 128 物理核已是该硬件的帕累托顶点,继续加进程不产生正收益。
💡