首页优化地图方法索引基础概念
返回技术汇总表 ↗

F007 · 基础讲解

执行基础:数据依赖、异步与计算通信重叠

只有不互相等待结果的工作,才有机会同时推进。

本页目录

01 · 先画依赖,再谈并行

如果 B 需要 A 的输出,必须等 A 的对应数据就绪。异步调用只是让主机有机会继续安排其他工作,不会让 B 提前拿到不存在的数据。分块可以把“等全部完成”改成“等当前块完成”,前提是该块确实可以独立使用。

02 · stream 与 event 做什么

以 CUDA 为例,stream 是按顺序提交工作的队列;多个 stream 给运行时提供并行机会。event 可以标记某个工作已经完成,另一个 stream 等待这个标记后再使用结果。能否真的同时执行,取决于硬件资源和操作实现。

一个缓冲区不能在通信仍读取时被计算覆盖。完成通知、缓冲生命周期和正确结果与性能同样重要。

03 · 为什么总耗时可能缩短

设三个计算块各 2 ms,通信块各 1 ms。全部计算后再通信为 9 ms;每块一算完就传,传第1块时算第2块,可在理想双执行引擎模型中缩短到 7 ms。首块计算和最后一块通信仍在边缘暴露。

重叠没有让通信数据量消失。若通信太慢,通信队列仍是瓶颈;若二者争用同一带宽,单独测到的时间也可能上升。

依据:NeMo · Communication Overlap ↗ · 昇腾 · MC² 通算融合最佳实践 ↗

04 · 怎样读时间线

  • 确认每块输入的就绪时刻。
  • 查看计算和通信是否真的同时占据时间区间。
  • 沿最后完成的关键路径检查等待和长尾。
  • 对比完整步骤时间,避免把两个重叠区间的时长简单相加。

带着这些概念,继续读优化方法

参考资料

继续:采样与约束解码实现优化 →返回优化总览
AI Infra 知识库 · 总览 → 独立讲解网站更新 2026-10-08
搜索知识库

搜索方法与基础概念 · Esc 关闭