并行计算实战:AI、CAE、图像与科学计算 / Parallel Computing for AI, CAE, Imaging, and Scientific Computing
📅 创建时间:2026-07-20 🏷️ 标签:#AI训练 #CAE #图像处理 #科学计算 📚 前置知识:[[10-performance-engineering]] 📚 相关知识:[[/04-ai/01-llm-engineering/13-training-infrastructure]] [[/05-industrial-software/01-foundations-and-architecture/03-cae-basics]]
1. AI 训练
核心计算
Transformer 训练的大部分计算来自矩阵乘法和 Attention,适合 GPU/Tensor Core。
系统并行
CPU 数据处理
↓
GPU 前向与反向传播
↓
多 GPU 梯度同步
↓
优化器更新与 Checkpoint主要瓶颈可能是:
- GPU 算力
- HBM 带宽
- 激活和优化器显存
- GPU 间集合通信
- 数据加载和存储
优化手段包括混合精度、算子融合、Activation Checkpoint、数据/张量/流水线并行和通信重叠。
2. AI 推理
推理同时关心吞吐与响应延迟:
- Batching 提高吞吐,但会增加排队延迟
- KV Cache 减少重复计算,但消耗显存
- 量化减少容量和带宽,可能影响精度
- Continuous Batching 提高动态请求利用率
- Speculative Decoding 用额外计算换取更少串行解码步骤
自回归解码存在 Token 间依赖,不能简单把整个序列一次并行生成。
3. CAE 与有限元
典型流程:
网格读取 → 单元计算 → 矩阵组装 → 线性求解 → 后处理单元计算
不同单元可以并行,但向全局矩阵 Scatter 时可能产生写冲突。
稀疏线性求解
稀疏矩阵向量乘法通常算术强度低,容易受内存带宽限制。预条件器和收敛次数会显著影响总时间。
多节点划分
网格分区需要兼顾单元数量和边界规模,边界越大,Halo Exchange 越多。
4. CFD 与规则网格
有限差分和有限体积常使用 Stencil:
- CPU:多线程 + SIMD + Cache 分块
- GPU:Block + Shared Memory Tile
- 集群:空间分区 + Halo Exchange
时间步之间存在依赖,但同一时间步的大量网格点可以并行。
5. 图像与视频处理
像素级滤波天然适合 GPU,但完整流水线还包含:
磁盘/相机输入 → 解码 → 色彩转换 → 滤波 → 编码 → 输出只加速滤波 Kernel 可能无法改善被解码或 I/O 限制的系统。使用硬件编解码、流水线和设备内数据复用通常更重要。
6. 图计算
图算法具有不规则访问和动态工作量:
- 顶点度数差异巨大
- 邻接表访问不连续
- Frontier 大小动态变化
- 原子更新较多
CPU 擅长复杂控制,GPU 仍可通过 Frontier 压缩、负载分配和批处理获得高吞吐,但优化难度高于规则矩阵计算。
7. 数据库与数据分析
并行技术应用于:
- 分区扫描
- Hash Join
- 聚合与排序
- SIMD 向量化执行
- 多核查询调度
- GPU 数据库算子
列式存储提高连续访问和压缩效率,也更适合向量化。查询执行计划决定并行是否真正减少总工作量。
8. 领域选型表
| 场景 | 主要并行方式 | 常见瓶颈 |
|---|---|---|
| LLM 训练 | GPU + 多卡集合通信 | 算力、显存、网络 |
| LLM 推理 | Batching + GPU Kernel | HBM、KV Cache、延迟 |
| 有限元 | CPU/GPU + MPI | 稀疏访存、通信 |
| CFD | Stencil + 空间分区 | 带宽、Halo Exchange |
| 图像视频 | GPU + Pipeline | 传输、编解码 |
| 图计算 | 动态任务并行 | 随机访存、负载不均 |
| 数据分析 | SIMD + 多核分区 | 内存带宽、数据倾斜 |
历史案例阅读框架
本页保留课程合并前的应用案例。 当前权威文章增加了更完整的端到端数据流和验证方法。
阅读历史案例时按以下顺序:
- 领域问题;
- 算法依赖;
- 数据结构;
- 并行模式;
- 硬件映射;
- 数据移动;
- 同步;
- 正确性;
- 性能证据;
- 适用边界。
AI 训练历史补充
训练系统同时包含:
- 数据读取;
- Tokenize/Preprocess;
- H2D;
- Forward;
- Backward;
- Gradient Communication;
- Optimizer;
- Checkpoint。
GPU 空闲可能来自数据或通信,而不是 Kernel 本身。
AI 推理历史补充
推理区分 Prefill 与 Decode。
Prefill 更偏计算吞吐。 Decode 更容易受 KV Cache、带宽和批量限制。
指标包括 TTFT、Token 间延迟、吞吐、P99、显存和成本。
FEA 历史补充
有限元阶段:
DOF
-> pattern
-> element integration
-> assembly
-> constraints
-> solve
-> results局部单元计算容易并行。 全局写入、稀疏求解和通信更难扩展。
CFD 历史补充
CFD 重点是通量、残差、时间推进和 Halo。
结构网格规则,适合 Stencil。 非结构网格需要邻接和间接访存。
图像视频历史补充
完整 Pipeline 包含读取、解码、处理、编码和输出。
GPU Filter 很快,如果解码主导,用户仍看不到改善。
有界队列防止流水线内存无限增长。
图计算历史补充
图计算难点:
- 随机访问;
- Frontier;
- 原子;
- 数据倾斜;
- 动态任务;
- 分区边界。
必须使用代表真实度数分布的数据。
数据分析历史补充
列式布局、SIMD 和分区适合 Scan/Filter/Aggregate。
Join、Group By 和 Sort 受内存、哈希与 Spill 影响。
数据流图
每个案例都应画:
input location
-> transformation
-> compute stages
-> communication
-> output and validation数据位置和变化比硬件名称更能解释性能。
并行模式映射
| 领域 | 常见模式 |
|---|---|
| AI | Dense Linear Algebra、Collective |
| FEA | Map、Scatter、Sparse Solve |
| CFD | Stencil、Halo、Reduction |
| 图像 | Pipeline、Map、Stencil |
| 图 | Frontier、Task Graph |
| 数据分析 | Scan、Hash、Sort、Reduce |
模式只是起点,真实实现还要考虑规模和数据分布。
分区
分区同时影响工作、内存和通信。
均分对象数量不一定均分时间。 需要按实际成本加权。
通信
记录:
- 消息数量;
- 字节;
- 延迟;
- 集合通信;
- 重叠;
- 最慢 Rank;
- 网络拓扑。
正确性
每个领域都有不同 Oracle。
不能因为并行版本更快就跳过领域验证。
浮点顺序变化使用明确容差和守恒检查。
性能测量
报告:
- 串行基线;
- 输入;
- 资源;
- 总时间;
- 分阶段;
- 加速比;
- 效率;
- 通信;
- 内存;
- 正确性。
历史数字边界
旧硬件性能数字只适用于当时环境。
引用时保留设备、编译器、输入和命令。 无法复原时标为历史参考。
当前课程映射
当前文章加入:
- AI 端到端训练与推理;
- FEA/CFD 阶段图;
- 存储与 I/O;
- 分区质量;
- 正确性矩阵;
- 扩展实验;
- 案例报告模板。
案例复现清单
- 源码提交;
- 数据版本;
- 构建;
- 硬件;
- 并行配置;
- 原始结果;
- Profile;
- 正确性;
- 当前差异。
核心总结
历史案例用于保留原始解释,当前工程决策必须回到最新课程和目标平台重新测量。 选择并行模型时先看依赖与数据,再看设备。 选择优化方向时先看端到端 Profile,再看局部 Kernel。 选择是否扩展到多节点时,同时估算通信、容量和故障恢复。 任何案例结果都应带正确性证据、环境和适用规模。 跨版本复现时还应记录工具链和依赖变化。
- 领域算法决定并行模式,不能从硬件型号反推算法。
- 规则密集计算更容易利用 GPU,不规则任务更依赖调度和数据结构。
- 端到端系统常包含 CPU、GPU、网络和存储的组合瓶颈。
- AI 与 CAE 都会同时遇到计算、容量和通信问题。
下一篇:[[12-learning-projects]]