Atlas 300I Duo 推理卡 HCCL 通信算子支持清单全解:HOST 与 AI CPU 展开能力对照与实操指南
【免费下载链接】hccl集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl
本文基于 CANN HCCL 开源仓库中的官方支持度清单,系统梳理 Atlas 推理系列产品(Atlas 300I Duo 推理卡)的 HCCL 通信算子支持情况,涵盖单算子零拷贝、确定性计算、通信算子重执行三大特性的支持边界,以及 HOST、AI CPU 两种展开模式下各算子在不同网络运行模式(单算子模式、图模式 Ascend IR、图捕获模式 aclgraph)中的能力差异,并结合仓库源码与相关环境变量文档给出可落地的配置与排查建议。读完本文,你将能够准确判断在 Atlas 300I Duo 上哪些集合通信算子可用、受哪些约束限制,以及如何通过展开模式与相关环境变量完成通信任务的最优部署。
一、支持度清单的阅读方法
通信算子支持情况在仓库中按产品系列分别维护,Atlas 推理系列产品对应文档为 comm_ops_support_300i_duo.md,完整清单索引见 通信算子支持度清单 README。阅读该清单前,需要先掌握以下约定:
- 按展开模式呈现:清单按照通信算子的展开模式(HOST / AI CPU 等)分组列出,未列出的展开模式代表该产品不支持。
- 表格符号语义:“√”代表支持,“×”代表不支持,“NA”代表不涉及(该特性与该算子无关,例如确定性计算只与归约类算子相关,对 AllGather、AlltoAll、Send/Recv 等算子标为 NA)。
- 未列出的算子与网络运行模式代表不支持:例如 Atlas 推理系列产品未列出 Broadcast、Reduce、Scatter、AlltoAllVC 等算子,说明这些算子在 Atlas 推理系列产品上不受支持。
对于 Atlas 推理系列产品,有一个全局性的结论需要首先记住:该产品不支持单算子零拷贝与通信算子重执行,因此下文两张表格中这两列均为“×”。
展开模式与网络运行模式是什么
展开模式(Expansion Mode)指通信算子在计算链路上的展开与执行位置,Atlas 推理系列产品支持 HOST 与 AI CPU 两种展开模式(详见后文“展开模式的配置与约束”一节)。网络运行模式则指算子的调用与调度方式:
- 单算子模式:业务直接调用 HCCL C 接口(如
HcclAllReduce)执行单个通信算子; - 图模式 Ascend IR:算子在 Ascend IR 图中以图节点方式运行,由图引擎统一调度;
- 图捕获模式 aclgraph:通过 aclgraph 图捕获机制将算子捕获进图中执行。
同一算子在不同网络运行模式下,其特性支持可能存在差异——最典型的例子是 AllReduce 的确定性计算:在单算子模式与图模式 Ascend IR 下支持(√),而在图捕获模式 aclgraph 下不支持(×)。
二、三大核心特性解读
支持度清单的每一列背后都对应一个具体的 HCCL 能力,理解这些能力的含义是读懂表格的前提。
1. 单算子零拷贝
单算子零拷贝:为了降低内存拷贝开销,使得 HCCL 可以直接对业务传入的内存进行操作,从而提升通信性能。
从仓库源码看,HCCL 在设备侧执行路径上会判断是否走“OutPlace”(输出内存与输入内存分离)流程。以 AllReduce 为例,src/ops/all_reduce/all_reduce.cc 中通过IsOutPlaceDevice判断设备能力,仅当设备支持 OutPlace 时才会走新流程,否则回退到HcclAllReduceInner老流程。Atlas 推理系列产品不支持单算子零拷贝,意味着通信算子执行时可能需要经过中间缓冲,无法直接对业务输入内存进行就地操作。
2. 确定性计算
确定性计算:归约类通信算子在相同的硬件和输入下,多次执行将产生相同的输出。归约类通信算子包括 AllReduce、ReduceScatter、ReduceScatterV、Reduce。
在源码层面,HCCL 通过环境变量配置读取确定性计算开关:GetExternalInputHcclDeterministic()定义于 src/common/alg_env_config.cc,并在算子选择器 src/ops/op_common/selector/selector_engine.cc 的决策日志中打印deterministic[%u],供定位算子选择结果时参考。归约保序(严格确定性计算)的实现可见于 src/ops/reduce_scatter/algorithm/template/aicpu/ins_temp_reduce_scatter_order_preserved_group.cc,其中通过DETERMINISTIC_STRICT判定是否启用保序逻辑。
需要特别区分的是:“表格中的确定性计算列”与“HCCL_DETERMINISTIC 环境变量支持情况”是两回事。在 HCCL_DETERMINISTIC 环境变量文档 的“产品支持情况”一节中,Atlas 推理系列产品(310p)标注为“不支持”,即该产品无法通过HCCL_DETERMINISTIC环境变量(或HcclCommConfig.hcclDeterministic参数)控制确定性计算的开关。而支持度清单中的“确定性计算 √”描述的是算子本身在特定展开模式与网络运行模式下所具备的确定性行为能力。读者在使用时应以支持度清单的算子维度为准,同时注意该产品系列不提供环境变量级别的开关能力。
3. 通信算子重执行
通信算子重执行:网络故障导致通信闪断时,HCCL 会尝试重新执行此通信算子,提升通信稳定性。
重执行是软件层面的尽力而为故障恢复手段,其流程包括:故障发现(AI CPU 检测到故障信号并通知 Host)→ 集群管理(Host 通过 Host Socket 协商并判断重执行条件)→ 重新下发(AI CPU Kernel 重新下发 SQE/WQE)。完整机制说明见 HCCL_OP_RETRY_ENABLE 环境变量文档。该文档的“产品支持情况”明确标注:Atlas 推理系列产品不支持重执行。因此支持度清单中重执行列全部为“×”,在 Atlas 300I Duo 上部署业务时,不能依赖该特性兜底网络闪断故障,应通过其他可靠性手段(如业务层超时重试)保障稳定性。
三、HOST 展开模式下的算子支持情况
HOST 展开模式下,通信算子在 Host 侧 CPU 展开,Device 侧根据硬件型号自动选择相应的调度器。下表完整列出 HOST 展开模式下各算子的支持情况。
| 算子 | 网络运行模式 | 单算子零拷贝 | 确定性计算 | 重执行 | 节点内通信 | 节点间通信 |
|---|---|---|---|---|---|---|
| AllGather | 单算子模式 | × | NA | × | √ | × |
| AllGather | 图模式Ascend IR | × | NA | × | √ | × |
| AllGather | 图捕获模式aclgraph | × | NA | × | √ | × |
| AllGatherV | 单算子模式 | × | NA | × | √ | × |
| AllGatherV | 图模式Ascend IR | × | NA | × | √ | × |
| AllGatherV | 图捕获模式aclgraph | × | NA | × | √ | × |
| AllReduce | 单算子模式 | × | √ | × | √ | × |
| AllReduce | 图模式Ascend IR | × | √ | × | √ | × |
| AllReduce | 图捕获模式aclgraph | × | × | × | √ | × |
| ReduceScatter | 单算子模式 | × | √ | × | √ | × |
| ReduceScatter | 图模式Ascend IR | × | √ | × | √ | × |
| ReduceScatter | 图捕获模式aclgraph | × | × | × | √ | × |
| ReduceScatterV | 单算子模式 | × | √ | × | √ | × |
| ReduceScatterV | 图模式Ascend IR | × | √ | × | √ | × |
| ReduceScatterV | 图捕获模式aclgraph | × | × | × | √ | × |
| AlltoAll | 单算子模式 | × | NA | × | √ | × |
| AlltoAll | 图模式Ascend IR | × | NA | × | √ | × |
| AlltoAll | 图捕获模式aclgraph | × | NA | × | √ | × |
| AlltoAllV | 单算子模式 | × | NA | × | √ | × |
| AlltoAllV | 图模式Ascend IR | × | NA | × | √ | × |
| AlltoAllV | 图捕获模式aclgraph | × | NA | × | √ | × |
| Send | 单算子模式 | × | NA | × | √ | × |
| Send | 图模式Ascend IR | × | NA | × | √ | × |
| Send | 图捕获模式aclgraph | × | NA | × | √ | × |
| Recv | 单算子模式 | × | NA | × | √ | × |
| Recv | 图模式Ascend IR | × | NA | × | √ | × |
| Recv | 图捕获模式aclgraph | × | NA | × | √ | × |
| BatchSendRecv | 单算子模式 | × | NA | × | √ | × |
| BatchSendRecv | 图模式Ascend IR | × | NA | × | √ | × |
| BatchSendRecv | 图捕获模式aclgraph | × | NA | × | √ | × |
从上表可以提炼出 HOST 展开模式下的关键规律:
- 全部算子仅支持节点内通信:节点间通信列均为“×”,即 Atlas 推理系列产品的通信能力限定在单节点内部(如单机多卡场景),不支持跨节点组网通信。这一点与 Atlas 训练系列产品(comm_ops_support_910.md)和 Atlas A2 系列产品(comm_ops_support_a2.md)中节点内/节点间均为“√”的情况形成鲜明对比。
- 归约类算子的确定性计算受网络运行模式影响:AllReduce、ReduceScatter、ReduceScatterV 在单算子模式与图模式 Ascend IR 下确定性计算为“√”,但在图捕获模式 aclgraph 下为“×”。因此,如果在 Atlas 300I Duo 上使用 aclgraph 图捕获模式执行归约类算子,且业务依赖可复现的归约结果,需要自行评估数值波动风险。
- 非归约类算子不涉及确定性计算:AllGather、AllGatherV、AlltoAll、AlltoAllV、Send、Recv、BatchSendRecv 的确定性计算列为 NA,因为这些算子不执行归约操作,天然不存在归约顺序不确定的问题。
- 集合通信与点到点通信算子齐全:除归约类算子外,还支持 AllGather/AllGatherV(聚合)、AlltoAll/AlltoAllV(全交换)、Send/Recv 与 BatchSendRecv(点到点),可覆盖单节点内的主流集合通信与通信原语需求。
四、AI CPU 展开模式下的算子支持情况
AI CPU 展开模式下,通信算子在 AI CPU 展开,Device 侧根据硬件型号自动选择相应的调度器。Atlas 推理系列产品在该展开模式下仅支持 AllReduce 一个算子,支持情况如下表所示。
| 算子 | 网络运行模式 | 单算子零拷贝 | 确定性计算 | 重执行 | 节点内通信 | 节点间通信 |
|---|---|---|---|---|---|---|
| AllReduce | 单算子模式 | × | √ | × | √ | × |
| AllReduce | 图模式Ascend IR | × | √ | × | √ | × |
对比 HOST 展开模式可以发现两处差异:
- 算子覆盖面大幅收窄:AI CPU 展开下仅 AllReduce 可用,HOST 展开下支持的 AllGather、AllGatherV、ReduceScatter、ReduceScatterV、AlltoAll、AlltoAllV、Send、Recv、BatchSendRecv 在 AI CPU 展开模式下均不支持。
- 网络运行模式也收窄:AI CPU 展开下 AllReduce 仅支持单算子模式与图模式 Ascend IR,不支持图捕获模式 aclgraph;同时,确定性计算在两种受支持的运行模式下均为“√”(不受图捕获模式的“×”影响)。
五、展开模式的配置与约束
对于 Atlas 300I Duo,展开模式通过环境变量 HCCL_OP_EXPANSION_MODE 配置。该文档的“针对 Atlas 300I Duo 推理卡”一节明确列出了两种取值:
| 取值 | 含义 | 关键约束 |
|---|---|---|
| HOST(默认值) | 通信算子在 Host 侧 CPU 展开,Device 侧根据硬件型号自动选择相应的调度器 | 无额外约束 |
| AI_CPU | 通信算子在 AI CPU 展开,Device 侧根据硬件型号自动选择相应的调度器 | 仅支持单机单通信域场景;仅支持 AllReduce 算子(数据类型参见 HcclAllReduce 接口);配置后通信算子不再支持 profiling 性能数据采集与分析;静态 shape 图不支持此配置项 |
配置示例:
export HCCL_OP_EXPANSION_MODE="AI_CPU"使用约束方面,若通过 HCCL C 接口以HcclCommConfig的hcclOpExpansionMode参数配置了通信算子的展开模式,则以通信域粒度的配置优先于环境变量。同时需要注意,若设置了该产品不支持的环境变量取值,系统会使用默认值(HOST)。
实操建议:
- 默认场景(HOST)覆盖的算子最全,应作为 Atlas 300I Duo 上的首选展开模式;
- 仅当业务对 AllReduce 的 Device 侧执行有明确诉求(例如希望通信逻辑在 AI CPU 上运行)时,才考虑配置
AI_CPU,且必须满足“单机单通信域”“非静态 shape 图”等前提,并接受无法使用 profiling 的代价; - 由于该产品不支持重执行,若通过
HCCL_OP_EXPANSION_MODE尝试配置其他展开模式(如 AIV 等 Vector Core 展开),不会生效,系统回退到默认 HOST 展开。
六、源码层面的佐证与延伸
为了印证支持度清单的准确性,可以从仓库源码中找到与 Atlas 推理系列产品(310P 芯片)直接相关的实现证据。
1. 310P 芯片类型的设备枚举
src/common/dev_type.h 中定义了 310P 系列芯片的枚举与名称映射:
DEV_TYPE_310P3 = 1, // PG DEV_TYPE_310P1 = 3, // AG ... {"Ascend310P1", HcclDevType::DEV_TYPE_310P3}, {"Ascend310P3", HcclDevType::DEV_TYPE_310P3}, {"Ascend310P5", HcclDevType::DEV_TYPE_310P3}, {"Ascend310P7", HcclDevType::DEV_TYPE_310P3}, {"Ascend310B1", HcclDevType::DEV_TYPE_310P3}, // 临时映射,临时当前Ascend310B1可以看出,Atlas 推理系列产品对应的 Ascend310P1/P3/P5/P7 均映射到DEV_TYPE_310P3设备类型,HCCL 在运行时会依据该设备类型选择对应的算法与展开路径,这从源码层面印证了该产品系列拥有独立的支持度策略。
2. 归约类算子的确定性计算判定
确定性计算开关的读取集中在alg_env_config模块:
- src/common/alg_env_config.cc:
GetExternalInputHcclDeterministic()返回当前配置的确定性计算等级; - src/ops/op_common/selector/selector_engine.cc:算子选择器在决策日志中打印
deterministic[%u],便于确认算子选择时是否考虑了确定性计算; - src/ops/reduce_scatter/algorithm/template/aicpu/ins_temp_reduce_scatter_order_preserved_group.cc:ReduceScatter 保序模板通过
DETERMINISTIC_STRICT判定是否启用严格保序逻辑。
3. AllReduce 的入口执行路径
src/ops/all_reduce/all_reduce.cc 展示了HcclAllReduce的入口实现:先进行兼容性判断,再通过IsOutPlaceDevice判断是否走 OutPlace 新流程,随后调用AllReduceInitAndCheck完成参数校验与初始化,最后执行AllReduceOutPlace。同时仓库还提供了单算子模式的完整可运行示例,见 examples/02_collectives/01_allreduce/main.cc,可用于在支持的硬件上验证 AllReduce 的基本行为。
4. 与其他产品系列的对比定位
为了帮助读者理解 Atlas 推理系列产品的能力边界,下表对比了仓库中各产品系列支持度清单的关键差异:
| 产品系列 | 文档 | 展开模式 | 节点间通信 | 单算子零拷贝/重执行 |
|---|---|---|---|---|
| Atlas 训练系列产品 | comm_ops_support_910.md | 仅 HOST | √ | 不支持 |
| Atlas A2 训练/推理系列产品 | comm_ops_support_a2.md | HOST/HOST_TS、AIV | √(HOST 模式) | 不支持 |
| Atlas A3 训练/推理系列产品 | comm_ops_support_a3.md | AI CPU、AIV 等 | √(支持超节点内/超节点间通信) | 部分支持(重执行 √) |
| Atlas 推理系列产品 | comm_ops_support_300i_duo.md | HOST、AI CPU | ×(仅节点内) | 不支持 |
可见 Atlas 推理系列产品的定位是单节点内的通信加速,算子覆盖面与多机能力均弱于训练系列产品,规划推理业务通信方案时应以“节点内通信”为前提设计。
七、典型误区与 FAQ
Q1:Atlas 300I Duo 上能跑跨节点 AllReduce 吗?
不能。支持度清单中所有算子的节点间通信均为“×”,仅支持节点内通信。跨节点训练/推理需要选用支持节点间通信的产品系列。
Q2:表格中“确定性计算 NA”是什么意思?
NA 表示不涉及。确定性计算只针对归约类算子(AllReduce、ReduceScatter、ReduceScatterV、Reduce),AllGather、AlltoAll、Send/Recv 等非归约算子不涉及归约顺序问题,故标为 NA。
Q3:为什么 HOST 展开下 AllReduce 在图捕获模式 aclgraph 中确定性计算是“×”?
这是官方支持度清单明确给出的能力边界:图捕获模式 aclgraph 下归约类算子的确定性计算不受支持。若业务依赖多次执行的确定性输出,请使用单算子模式或图模式 Ascend IR。
Q4:配置HCCL_DETERMINISTIC=true在 Atlas 300I Duo 上有效吗?
HCCL_DETERMINISTIC 环境变量文档 的产品支持情况中,Atlas 推理系列产品标注为“不支持”。该产品系列不提供环境变量级的确定性计算开关,表格中“确定性计算 √”描述的是算子本身具备的能力,不可通过该环境变量额外配置。
Q5:重执行特性在 Atlas 300I Duo 上能开启吗?
不能。Atlas 推理系列产品不支持通信算子重执行(HCCL_OP_RETRY_ENABLE 环境变量文档 中 310p 标注为“不支持”),请勿依赖该特性,应在业务层自行设计闪断兜底方案。
Q6:如何确认当前算子实际走了哪种展开模式?
默认展开模式为 HOST。若需切换为 AI_CPU,须同时满足单机单通信域、仅 AllReduce、非静态 shape 图等约束;不支持的配置会被忽略并回退到默认值。可通过 HCCL_DEBUG_CONFIG 等调试手段查看算子执行日志,并结合 selector_engine.cc 中打印的算子选择信息确认实际路径。
八、总结
Atlas 推理系列产品(Atlas 300I Duo)的 HCCL 通信算子支持情况可以概括为“单节点、双展开、三不支持”:通信能力限定在节点内(节点间通信全部为 ×);展开模式支持 HOST(默认)与 AI CPU(仅 AllReduce);不支持单算子零拷贝、不支持通信算子重执行、不支持通过 HCCL_DETERMINISTIC 环境变量控制确定性计算。在具体算子维度,HOST 展开覆盖 AllGather、AllGatherV、AllReduce、ReduceScatter、ReduceScatterV、AlltoAll、AlltoAllV、Send、Recv、BatchSendRecv 共 10 类算子,其中归约类算子的确定性计算在单算子模式与图模式 Ascend IR 下可用、在图捕获模式 aclgraph 下不可用;AI CPU 展开仅 AllReduce 可用且确定性计算为 √。业务规划时,建议默认采用 HOST 展开,结合本文的表格与约束清单进行算子选型,并针对“不支持”的能力提前设计替代方案。
【免费下载链接】hccl集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考