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

本页目录

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

📅 创建时间:2026-07-20 🏷️ 标签:#并行求解 #CPU #GPU #MPI #稀疏线性代数 📚 前置知识:[[12-serial-and-algorithmic-acceleration]] 📚 相关知识:[[/02-systems-and-performance/03-parallel-computing/09-distributed-parallelism]] [[/02-systems-and-performance/03-parallel-computing/10-performance-engineering]]


1. 工业计算的并行层次 ​

text
工况级并行      多个航速、载荷、频率互相独立
时间/阶段并行   流水线、部分并行时间算法
域级并行        网格和矩阵划分到多个进程
线程级并行      单元、控制体、矩阵行分给 CPU 线程
向量级并行      SIMD 一次处理多个数值
设备级并行      GPU 大规模线程
1
2
3
4
5
6

越靠上通常越容易实现、通信越少。优先利用工况级并行,再考虑复杂的单个算例内部并行。


2. 参数扫描和多工况 ​

场景 ​

  • 多个船速
  • 多个螺旋桨转速
  • 多个攻角或来流方向
  • 多个静力载荷组合
  • 多个材料参数
  • 多个频率点

特点 ​

任务基本独立,属于 Embarrassingly Parallel。

适合方法 ​

  • 多进程任务队列
  • 集群作业数组
  • 多 GPU 分配不同工况
  • 云端批处理

这是扩展效率最高的一类并行。


3. 网格生成 ​

可并行部分 ​

  • 表面几何检查
  • 局部尺寸场计算
  • 八叉树细分
  • 网格质量评估
  • 各区域独立网格

难点 ​

  • 保证区域接口一致
  • 全局拓扑修改
  • 网格点合并
  • 负载随几何复杂度不均

方法 ​

  • CPU 任务并行/TBB/OpenMP
  • 空间分区
  • 分区网格后接口协调

GPU 对规则体素和距离场处理有优势,但复杂 CAD 拓扑操作通常更适合 CPU。


4. FEA 单元积分 ​

每个单元的刚度、质量和内力计算大多独立:

text
for each element:
    读取节点坐标和状态
    高斯积分
    计算 Ke / Me / fint
1
2
3
4

适合方法 ​

  • CPU 多线程
  • SIMD 批量处理相同单元类型
  • GPU 每个线程块处理一个或多个单元

难点 ​

  • 不同单元类型工作量不同
  • 塑性材料存在分支
  • 数据布局不连续
  • 组装到全局矩阵时写冲突

5. 全局矩阵组装 ​

多个单元可能同时写入同一个全局矩阵位置。

方法一:原子加 ​

简单,但高竞争区域性能可能下降。

方法二:图着色 ​

把不共享自由度的单元放在同一颜色中并行计算,不需要原子写。

方法三:线程局部缓冲 ​

各线程先写本地贡献,最后合并。

方法四:先生成 COO 条目再排序归并 ​

适合 GPU 批量生成,但需要额外排序和内存。

方法五:Matrix-Free ​

不显式组装 K,直接计算 y=Kx,减少内存和写冲突,适合高阶有限元和 GPU。


6. 稀疏矩阵向量乘 SpMV ​

text
y = Ax
1

它是 CG、GMRES、CFD 迭代和多重网格中的核心操作。

特点 ​

  • 每行大多独立
  • 计算量小
  • 需要读取大量矩阵值、索引和向量
  • 通常受内存带宽限制

CPU ​

  • 多线程按行划分
  • NUMA 本地化
  • BSR 提高结构块复用
  • SIMD 对规则块有效

GPU ​

  • 大量线程并行处理行或非零项
  • CSR、SELL、BSR 等格式
  • 需要处理行长度不均和不规则 x 访问

增加 GPU 浮点峰值并不一定提高 SpMV,因为瓶颈通常是显存带宽。


7. 向量操作和归约 ​

Krylov 方法包含:

  • y=ax+y
  • 点积
  • 范数
  • 多向量正交化

局部向量操作容易并行,但点积需要全局归约。

在 MPI 集群中:

text
每个进程计算局部点积
→ MPI_AllReduce
→ 所有进程获得全局结果
1
2
3

强扩展到很多节点后,AllReduce 延迟可能成为瓶颈。

可考虑:

  • Pipelined CG/GMRES
  • Communication-Avoiding Krylov
  • 合并多个归约

8. CG ​

适合 SPD,例如约束充分的线性弹性和部分泊松问题。

并行性 ​

  • SpMV:高
  • 向量更新:高
  • 点积:需要归约
  • 预条件器:决定整体并行效率

GPU ​

适合大规模系统,但小矩阵启动成本可能超过收益。

MPI ​

每次 SpMV 需要交换子域边界向量,每轮还需要全局点积。


9. GMRES/BiCGSTAB ​

适用于非对称 CFD 输运系统。

GMRES 难点 ​

  • Krylov 基向量不断增加
  • 正交化包含多次点积
  • 内存和全局归约成本高

重启 GMRES 限制内存,但可能降低收敛速度。

BiCGSTAB ​

内存较少,点积和 SpMV 数量固定,但收敛可能不规则。


10. Jacobi 预条件 ​

只读取对角线:

text
z_i = r_i / a_ii
1

几乎完全并行,适合 GPU,但对复杂网格和高条件数系统加速有限。

块 Jacobi 让每个节点或子域求解小块,效果更好且仍有较好并行性。


11. ILU/IC ​

不完全分解具有数据依赖:

text
前向三角求解 → 后向三角求解
1

并行方法 ​

  • Level Scheduling
  • 多色 ILU
  • Block ILU
  • 子域内 ILU + 域间迭代

GPU 上三角求解并行性通常低于 SpMV。ILU 收敛好并不代表端到端速度一定最好。


12. 多重网格 AMG ​

AMG 包含:

  • 平滑
  • 限制
  • 粗网格算子
  • 粗网格求解
  • 插值

优势 ​

对压力泊松、扩散、弹性问题常具有接近线性复杂度。

并行难点 ​

  • 粗网格未知量少,并行度下降
  • 构造层次成本高
  • 跨进程粗化和插值通信复杂

适用 ​

  • MarineFlow 压力方程
  • SAM 大型线性弹性
  • 隐式动力有效刚度

13. 稀疏直接法 ​

直接分解可并行化:

  • 消去树不同分支并行
  • Front 内使用稠密 BLAS
  • 多线程矩阵分解
  • 多节点分布式 Front

适合 ​

  • 中等规模、高鲁棒性要求
  • 多右端项
  • 复杂接触或病态问题

限制 ​

  • Fill-in 导致内存快速增长
  • 通信和任务依赖复杂
  • GPU 通常加速内部稠密块,而不是整个不规则过程

14. 特征值求解 ​

Lanczos/Arnoldi ​

主要并行核:

  • SpMV
  • 线性求解
  • 向量正交化

低阶少量模态时,直接分解加速很有效;求大量模态时,正交化和内存会增大。

LOBPCG ​

以块向量处理多个特征对,适合并行 BLAS、GPU 和预条件器。


15. 显式动力 ​

每个时间步主要执行:

  • 单元内力
  • 接触搜索和接触力
  • 节点力归并
  • 对角质量更新

高度适合 GPU 和多核。

瓶颈 ​

  • 最小单元控制时间步
  • 接触负载不均
  • 极多时间步
  • 结果输出

16. CFD 方程循环 ​

每个时间步/外迭代:

text
更新通量和系数
→ 求速度
→ 求压力
→ 修正速度
→ 求湍流
→ 求相分数
1
2
3
4
5
6

域分解 MPI 是最常见并行方式。每个进程保存自己的网格和矩阵行,在分区边界交换 Ghost Cell 数据。

压力方程的全局耦合最强,往往决定 CFD 扩展效率。


17. 后处理并行 ​

适合并行:

  • 每单元应力恢复
  • 云图变量计算
  • 时间平均
  • 表面积分
  • 不同时间步转换
  • 粒子/流线批量积分

但超大结果读取可能受磁盘带宽限制。应优先采用并行 I/O、分块读取和在线统计。


18. 场景总表 ​

场景数学核心首选方法主要瓶颈
多航速/多工况独立任务多进程/集群任务调度、许可证、I/O
FEA 单元积分小型稠密运算CPU SIMD/GPU数据布局、分支
FEA 组装Scatter 累加着色/原子/Matrix-Free写冲突
结构静力 SPDKu=fCG+AMG 或 Cholesky内存、预条件
CFD 压力泊松型系统AMG+CG/其他 Krylov粗网格、通信
CFD 输运非对称系统GMRES/BiCGSTAB+预条件SpMV、归约
模态广义特征值Lanczos/LOBPCG线性求解、正交化
非线性隐式多次切线系统多线程组装+并行求解重组装、收敛
显式碰撞局部更新GPU/多核时间步、接触
多节点 CFD/FEA域分解MPIHalo、AllReduce
后处理数组与几何操作多线程/GPUI/O

下一篇:[[14-cpu-gpu-mpi-architecture]]

最后更新于:

Pager
上一篇13. 非并行优化:在增加核心之前先减少计算量 / Reducing Computation Before Adding Parallel Hardware
下一篇15. CPU、GPU 与 MPI:工业求解器怎样组合多层并行 / Combining CPU, GPU, and MPI Parallelism in Industrial Solvers

持续记录,持续成长

Copyright © Tidenflow