Skip to content
Gains Summary
Main Navigation 首页 / Home
C++ 编程 / C++ Programming
系统与高性能 / Systems & Performance
Web 开发 / Web Development
人工智能 / Artificial Intelligence
工业软件 / Industrial Software
其他内容 / Other Topics
C++ 编程 / C++系统与性能 / SystemsWeb 开发 / Web人工智能 / AI工业软件 / Industrial

外观

Sidebar Navigation

← 工业软件 / Industrial Software

船舶 CAE / Marine CAE

1. 船舶 CAE 全景:从 MarineFlow 与 SAM 认识流体、结构和数值求解 / Marine CAE with MarineFlow, SAM, Fluid Mechanics, and Structural Analysis

2. MarineFlow 与 SAM 的应用场景:工程问题如何选择软件 / Choosing MarineFlow or SAM for Engineering Scenarios

3. CAE 通用工作流:从工程问题到可信结论 / A General CAE Workflow from Engineering Questions to Credible Conclusions

4. 船舶流体物理:黏性、湍流、兴波、旋涡与空化 / Marine Fluid Physics with Viscosity, Turbulence, Waves, Vortices, and Cavitation

5. CFD 控制方程:质量、动量、压力耦合与离散系统 / CFD Governing Equations, Pressure-Velocity Coupling, and Discretization

6. MarineFlow 使用路线:从船体模型到流场和水动力结果 / A MarineFlow Workflow from Hull Geometry to Hydrodynamic Results

7. 船舶结构物理:载荷、应力、变形、振动与失稳 / Marine Structural Physics with Loads, Stress, Vibration, and Buckling

8. 有限元方法:结构怎样从连续物体变成 Ku=f / The Finite Element Method from Continuous Structures to Ku Equals f

9. SAM 使用路线:从结构建模到 Job、求解和后处理 / A SAM Workflow from Structural Modeling to Jobs and Post-Processing

10. 结构分析类型:静力、模态、动力、屈曲与非线性分别求什么 / Structural Analysis Types from Statics and Modes to Buckling and Nonlinearity

11. 流固耦合:MarineFlow 的压力怎样成为 SAM 的结构载荷 / Fluid-Structure Interaction from MarineFlow Pressure to SAM Loads

12. 工业求解中的方程与矩阵:看懂 CFD 和 FEA 的计算核心 / Equations and Matrices at the Core of CFD and FEA Solvers

13. 非并行优化:在增加核心之前先减少计算量 / Reducing Computation Before Adding Parallel Hardware

14. 并行加速场景详解:什么方程、矩阵和步骤适合什么方法 / Mapping Equations, Matrices, and Solver Stages to Parallel Methods

15. CPU、GPU 与 MPI:工业求解器怎样组合多层并行 / Combining CPU, GPU, and MPI Parallelism in Industrial Solvers

16. 仿真可信度:怎样避免得到“彩色但错误”的结果 / Simulation Verification and Validation for Credible Results

17. 综合案例:用 MarineFlow 与 SAM 串起船舶流体、结构和并行计算 / Integrated MarineFlow and SAM Cases Across Fluids, Structures, and Parallel Computing

本页目录

CPU、GPU 与 MPI:工业求解器怎样组合多层并行 / Combining CPU, GPU, and MPI Parallelism in Industrial Solvers ​

📅 创建时间:2026-07-20 🏷️ 标签:#异构求解 #MPI #GPU #CPU多核 #工业求解器 📚 前置知识:[[13-parallel-acceleration-map]]


1. 典型计算节点 ​

text
一台节点
├─ 多核 CPU
├─ 多级 Cache
├─ NUMA 内存
├─ 1~多张 GPU
├─ 本地 SSD
└─ 高速网络
1
2
3
4
5
6
7

工业求解器通常同时使用多个层次,而不是只使用一种并行技术。


2. 单机 CPU 模式 ​

text
一个进程
└─ 多个线程
   ├─ 单元/网格循环
   ├─ 稀疏矩阵操作
   ├─ 后处理
   └─ 文件解析
1
2
3
4
5
6

优点:共享内存编程简单、无需网络通信。

注意:

  • 线程数不应盲目超过有效核心数
  • 内存带宽可能先饱和
  • NUMA 远程访问会降低性能
  • 数学库内部可能已经启动线程

3. 单机多进程模式 ​

OpenFOAM 常使用 MPI,即使所有进程位于同一台机器。

优点:

  • 与多节点模型一致
  • 各进程地址空间隔离
  • 域分解逻辑清晰

代价:

  • 子域边界通信
  • 多份元数据
  • 多个结果目录
  • 进程管理复杂

4. GPU Offload 模式 ​

text
CPU
├─ 网格、控制和任务调度
├─ 复杂逻辑
└─ 准备数据
       ↓
GPU
├─ SpMV
├─ 向量操作
├─ 单元积分
├─ 显式更新
└─ 部分预条件器
1
2
3
4
5
6
7
8
9
10
11

为了获得收益,应尽量让矩阵和向量长期停留在显存中,避免每轮迭代都往返传输。


5. MPI + GPU ​

多节点多 GPU 模式:

text
节点 0:MPI Rank 0 → GPU 0
节点 0:MPI Rank 1 → GPU 1
节点 1:MPI Rank 2 → GPU 0
节点 1:MPI Rank 3 → GPU 1
1
2
3
4

每个 Rank 负责一个子域,GPU 执行局部计算,MPI 交换边界数据。

需要处理:

  • Rank 与 GPU 绑定
  • GPU Direct 通信
  • Host Staging
  • 子域负载均衡
  • GPU 显存容量

6. MarineFlow 类 CFD 架构 ​

text
GUI/项目管理
→ 生成网格与求解配置
→ decomposePar 域分解
→ mpiexec 启动求解器
→ 各 Rank 求本地控制体
→ Halo Exchange
→ reconstructPar 或并行后处理
1
2
3
4
5
6
7

适合优化的层次:

  • 多工况并行
  • MPI 域分解
  • 节点内线程
  • GPU 稀疏求解器
  • 并行结果处理

7. SAM 类结构求解架构 ​

text
前处理
→ 单元数据
→ 并行单元积分/组装
→ 稀疏矩阵
→ 直接法或迭代法
→ 应力恢复
→ HDF5/结果文件
1
2
3
4
5
6
7

不同分析的硬件选择:

  • 中小型静力:多核直接法
  • 超大线性静力:迭代法 + AMG + MPI/GPU
  • 多工况:分解复用 + 工况并行
  • 显式动力:GPU 优势明显
  • 非线性隐式:CPU 复杂逻辑 + 并行线性求解
  • 模态:并行特征值和线性求解

8. 任务流水线 ​

计算系统不应让昂贵设备等待:

text
CPU 读取下一批数据
GPU 计算当前批次
磁盘写出上一批结果
1
2
3

需要:

  • 异步 I/O
  • 双缓冲
  • 有界队列
  • 背压
  • 避免全局同步

9. 负载均衡 ​

按单元数量均分不一定均衡:

  • 空化区域计算更复杂
  • 非线性材料单元迭代更多
  • 接触区域工作量更大
  • 不同单元类型成本不同
  • 分区边界大小不同

应使用加权分区或运行时测量调整。


10. 通信与计算重叠 ​

域分解计算可以:

text
发出边界数据的非阻塞通信
→ 计算不依赖远程数据的内部区域
→ 等待通信完成
→ 计算边界区域
1
2
3
4

如果内部计算量太少,通信无法被隐藏。


11. 并行 I/O ​

大型 CFD 瞬态结果或结构动力结果可能产生 TB 级数据。

方法:

  • 每 Rank 独立文件:写入快,后处理和文件管理复杂
  • 集合文件/HDF5:管理方便,需要并行 I/O 设计
  • 在线派生量:求解时直接计算平均值、力和频谱
  • 检查点与可视化结果分离

12. 选择建议 ​

模型规模/特征建议
小模型单机串行或少量线程
中型线性结构多核直接法
大型 SPD 结构CG + AMG,多核/GPU
大型 CFDMPI 域分解 + AMG/Krylov
多航速/工况优先任务级并行
显式动力多核/GPU
内存装不下分布式内存 MPI
输出远大于计算优先优化 I/O

13. 并行规模停止增长的信号 ​

  • 每核单元数过少
  • Halo 通信占比快速升高
  • AllReduce 等待明显
  • 内存带宽已饱和
  • GPU Kernel 太小
  • 粗网格阶段并行度不足
  • 最慢 Rank 明显落后
  • I/O 时间超过求解时间

下一篇:[[15-verification-and-validation]]

最后更新于:

Pager
上一篇14. 并行加速场景详解:什么方程、矩阵和步骤适合什么方法 / Mapping Equations, Matrices, and Solver Stages to Parallel Methods
下一篇16. 仿真可信度:怎样避免得到“彩色但错误”的结果 / Simulation Verification and Validation for Credible Results

持续记录,持续成长

Copyright © Tidenflow