新闻详情

新闻详情

首页 / 资讯中心 / 详情

HCCL 算子重执行参数详解:HCCL_OP_RETRY_PARAMS 配置指南

发布时间:2026/9/18 12:32:07来源:尧图网络
HCCL 算子重执行参数详解:HCCL_OP_RETRY_PARAMS 配置指南
HCCL 算子重执行参数详解HCCL_OP_RETRY_PARAMS 配置指南【免费下载链接】hccl集合通信库Huawei Collective Communication Library简称HCCL是基于昇腾AI处理器的高性能集合通信库为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl导读HCCL_OP_RETRY_PARAMS是 CANN / hccl 集合通信库中用于配置通信算子重执行Op Retry细节参数的环境变量。当开发者通过 HCCL_OP_RETRY_ENABLE 开启 HCCL 算子重执行特性后本环境变量用于控制第一次重执行的等待时间、最大重执行次数、两次重执行的间隔时间。读完本文你将掌握该环境变量的完整配置方法、各参数取值范围与默认值、与通信域级HcclCommConfig.hcclRetryParams配置的优先级关系以及重执行特性的底层解析实现与产品支持情况。功能概述重执行特性与参数的关系在集群环境中硬件可能发生闪断如光模块闪断、路由抖动导致通信算子执行报 SDMA 或 RDMA CQE 类型的错误进而造成通信中断。HCCL 的重执行特性即是在软件层面提供的一种尽力而为的故障恢复手段检测到通信算子执行失败后HCCL 会尝试以通信算子为粒度重新下发执行该算子从而提升通信稳定性。整个重执行流程分为三步故障发现AI CPU 检测到故障信号通知 Host 开始准备进入重执行流程。集群管理Host 通过 Host Socket 进行信息交互判断当前故障算子是否满足一系列重执行条件。重新下发通知 AI CPU Kernel 重新下发 SQE、WQE执行 HCCL 算子重执行。其中重执行的具体节奏何时开始第一次重试、最多重试几次、每次重试间隔多久即由HCCL_OP_RETRY_PARAMS控制。它是重执行特性的调参入口与开关级环境变量 HCCL_OP_RETRY_ENABLE 配合使用。说明HCCL_OP_RETRY_ENABLE负责在Server 间L1、超节点间L2两个物理层级上配置是否开启重执行而HCCL_OP_RETRY_PARAMS负责在特性开启后配置重执行的时序参数。二者缺一不可。参数说明与配置方法HCCL_OP_RETRY_PARAMS采用键:值组合、多个参数以逗号分隔的格式进行配置全部参数为uint32类型。配置方法如下export HCCL_OP_RETRY_PARAMSMaxCnt:3,HoldTime:5000,IntervalTime:1000各参数含义、取值范围与默认值如下表所示参数含义类型取值范围默认值单位MaxCnt最大重传重执行次数uint32[1, 10]1次HoldTime从检测到通信算子执行失败到开始第一次重新执行的等待时间uint32[0, 60000]5000msIntervalTime同一个通信算子两次重执行的间隔时间uint32[0, 60000]1000ms参数含义补充说明MaxCnt指一个通信算子最多可被重新执行的次数。当故障链路无法恢复时再次执行通信任务仍会失败重执行次数一旦超过MaxCnt重执行失败。取值范围上限为 10避免无限重试拖垮业务。HoldTime故障检测到重试启动之间的冷静期用于等待故障链路恢复如路由收敛、光模块闪断恢复避免故障未恢复时立即重试徒劳消耗资源。IntervalTime两次重执行之间的间隔用于给链路留出恢复窗口同时控制重试节奏。配置示例export HCCL_OP_RETRY_PARAMSMaxCnt:5,HoldTime:5000,IntervalTime:5000以上配置表示最多重执行 5 次检测到失败后等待 5000ms 开始第一次重执行每次重执行之间间隔 5000ms。使用约束使用HCCL_OP_RETRY_PARAMS时需遵守以下约束前置开关仅当通过环境变量 HCCL_OP_RETRY_ENABLE 开启了 HCCL 的重执行特性时开启任一层级的重执行特性即可本环境变量才生效。若未开启重执行特性本环境变量不产生任何作用。通信域级配置优先若开发者调用 HCCL C 接口初始化具有特定配置的通信域时通过HcclCommConfig的hcclRetryParams参数配置了第一次重执行的等待时间等参数则以通信域粒度的配置优先环境变量的配置在该通信域内不生效。产品支持情况产品支持情况Ascend 950PR / Ascend 950DT不支持Atlas A3 训练系列产品 / Atlas A3 推理系列产品支持Atlas A2 训练系列产品 / Atlas A2 推理系列产品不支持Atlas 训练系列产品不支持Atlas 推理系列产品不支持即当前仓库对应的产品支持矩阵中仅Atlas A3 训练系列/推理系列产品支持HCCL_OP_RETRY_PARAMS及配套的重执行特性。源码级原理重执行开关的解析链路HCCL_OP_RETRY_PARAMS本身是重执行特性的参数配置其生效前提是 HCCL_OP_RETRY_ENABLE 开启。从源码结构看重执行开关的解析实现在 src/common/alg_env_config.cc核心函数调用链如下ParseRetryEnable()alg_env_config.cc入口函数。读取HCCL_OP_RETRY_ENABLE环境变量默认将所有层级都置为false读取后先去除字符串中的空格再调用SplitHcclRetryEnable与CollectRetryEnableFromConfig进行解析。SplitHcclRetryEnable()alg_env_config.cc按逗号将配置串拆分为多个层级:开关项并通过HCCL_RETRY_ENABLE_LEVEL_NUM限制层级数量不超过 3 个。CollectRetryEnableFromConfig()alg_env_config.cc逐项解析L1:0、L2:0形式的分项。内部定义了hcclRetryLevelMapL0/L1/L2→ 层级序号与hcclRetryEnableMap0→ false1→ true校验层级合法性与是否重复配置后将结果写入g_algEnvConfig.hcclRetryConfig。层级常量定义于 src/common/alg_env_config.hconstexpr u32 HCCL_RETRY_ENABLE_LEVEL_0 0; // HCCL 重执行层级0 constexpr u32 HCCL_RETRY_ENABLE_LEVEL_1 1; // HCCL 重执行层级1 constexpr u32 HCCL_RETRY_ENABLE_LEVEL_2 2; // HCCL 重执行层级2 constexpr u32 HCCL_RETRY_ENABLE_LEVEL_NUM 3; // HCCL 重执行层级最多3级配置结果保存在 src/common/alg_env_config.h 的bool hcclRetryConfig[HCCL_RETRY_ENABLE_LEVEL_NUM]数组中后续通过按层级索引的读取接口如 alg_env_config.cc 中按HCCL_RETRY_ENABLE_LEVEL_0/1/2取值的函数供上层使用。值得注意的源码细节CollectRetryEnableFromConfig中若解析到L0层级会打印警告L0 config does not take effectalg_env_config.cc说明L0层级NPU 内部配置不生效重执行特性实际针对L1Server 间与L2超节点间两个物理层级与 HCCL_OP_RETRY_ENABLE 文档中Server 间、超节点间两个物理层级的描述一致。这也解释了为什么该环境变量的示例统一采用L1:0,L2:0的格式。重执行特性的完整配置组合要将重执行特性与参数完整配置起来典型的配置组合如下# 1. 开启重执行特性L1Server间、L2超节点间均开启 export HCCL_OP_RETRY_ENABLEL1:1,L2:1 # 2. 配置重执行时序参数 export HCCL_OP_RETRY_PARAMSMaxCnt:3,HoldTime:5000,IntervalTime:1000 # 3. 配置算子展开模式为 AI_CPU重执行仅在 AI_CPU 调度模式下生效 export HCCL_OP_EXPANSION_MODEAI_CPU配置建议依据 HCCL_OP_RETRY_ENABLE开启重执行特性后会有一定的性能损失。针对 Atlas A3 训练系列产品/Atlas A3 推理系列产品Server 间与超节点间通信会经过光互联域稳定性较低建议开启 HCCL 重执行。HCCL_OP_RETRY_ENABLE在各个超节点上的配置需要保持一致否则超节点间建链会超时。重执行开启时建议通信域数量不超过 5 个否则通信算子可能占满 AI CPU 核导致 AI CPU 上的计算算子无法执行引发业务异常。重执行使用须知成功条件开启重执行特性后还需要满足以下约束条件否则重执行会失败展开模式为 AI_CPU重执行仅在 AI_CPU 调度模式下生效需通过环境变量 HCCL_OP_EXPANSION_MODE 设置非 AI_CPU 调度模式下会走无重执行流程。基于 rank table 创建通信域的场景rank table 中host_ip字段必须配置否则重执行不生效。输入内存不能被污染重执行以通信算子为粒度从算子的输入内存开始将一系列任务重新执行一遍。若输入内存在执行过程中存在被污染的风险可能造成重执行失败、系统报错退出。典型风险场景包括开启零拷贝功能ReduceScatter 和 AllReduce 算子会修改用户输入内存不支持重执行包含 In-Place 操作输入与输出共享同一块内存如 PyTorch 的 ReduceScatter / AllGather 算子不支持重执行图模式场景通信直接在算子的输入输出上进行如 PyTorch 的 AllReduce 算子入参 tensor 既作输入又作输出部分结果写入后 tensor 内容已变化在污染的 input 上重执行会得到错误结果不支持重执行。故障发生时通信域内所有 rank 停在同一个通信算子若不同 rank 停在不同的通信算子上则不能重执行。以 RHDRecursive Halving-Doubling算法为例若故障恰好发生在 HD 算法第一步数据交换后部分 rank 已正常结束、部分 rank 未结束后续重执行无法找到对应的上下文信息则不能进行重执行。Host 侧 socket 网络通信正常重执行时会使用 Host 侧 socket 通信进行通信域中各卡状态的协商若 socket 网络故障则无法重执行。故障链路已恢复如路由收敛成功、光模块闪断恢复成功或借用备用网卡通信成功等。若链路无法恢复再次执行仍会失败重执行次数超过 HCCL_OP_RETRY_PARAMS 设置的MaxCnt后重执行失败。[!NOTE] 故障定位提示若 Host 侧调试日志中出现关键字为[OpRetry]...timeout的 ERROR 信息说明重执行过程中 Host 侧 socket 通信异常可搜集通信域内所有节点的日志进一步定位。若 Host 侧调试日志中出现关键字为can not retry的 ERROR 信息说明当前场景不满足重执行条件。Host 侧应用程序调试日志默认存储路径为$HOME/ascend/log/debug/plog/。相关环境变量与扩展阅读HCCL_OP_RETRY_ENABLE重执行特性开关含 L1/L2 层级配置、借轨通信使用须知及完整的重执行流程说明。HCCL_OP_EXPANSION_MODE算子展开模式配置重执行仅在AI_CPU模式下生效。HCCL_IF_BASE_PORTHCCL 通信默认端口配置用于解决重执行场景下默认端口被占用导致的连接错误。通信算子重执行对整网性能说明重执行开启后对整网性能影响的详细说明。hccl_env 环境变量索引全部 HCCL 环境变量的总览与分类。异常处理重执行连接错误若开启重执行特性后出现[OpRetryConnection][RecvAckTag] Recv unmatched ack错误可能是由于 HCCL 通信时使用的默认端口被占用导致 HCCL 连接了错误的 Server。解决方法如下使用sysctl命令预留 HCCL 使用的默认端口 60000-60015避免端口被操作系统随机分配sysctl -w net.ipv4.ip_local_reserved_ports60000-60015若方法 1 仍出现该错误建议使用 HCCL_IF_BASE_PORT 环境变量修改 HCCL 使用的默认端口同时用sysctl预留指定端口# 例如指定HCCL使用以17777端口开始的连续16个端口 export HCCL_IF_BASE_PORT17777 # 预留17777-17792共16个端口 sysctl -w net.ipv4.ip_local_reserved_ports17777-17792总结HCCL_OP_RETRY_PARAMS是 HCCL 通信算子重执行特性的节奏控制器通过MaxCnt、HoldTime、IntervalTime三个uint32参数精准控制重执行次数与时机。其生效依赖 HCCL_OP_RETRY_ENABLE 开启重执行特性L1/L2 任一层级并受通信域粒度配置HcclCommConfig.hcclRetryParams优先覆盖。当前仅 Atlas A3 训练/推理系列产品支持该特性。在集群硬件闪断频发的场景下合理配置重执行参数例如适当调大HoldTime与IntervalTime等待链路恢复、控制MaxCnt避免无限重试并结合 AI_CPU 展开模式与端口预留措施可显著提升通信稳定性。【免费下载链接】hccl集合通信库Huawei Collective Communication Library简称HCCL是基于昇腾AI处理器的高性能集合通信库为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

MCP 地址报 401?TaoToken 这样改 Base URL 2026/9/18 13:26:20

MCP 地址报 401?TaoToken 这样改 Base URL

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
ANSYS齿轮齿根应力精确仿真:从渐开线建模到六面体网格分析 2026/9/18 13:26:20

ANSYS齿轮齿根应力精确仿真:从渐开线建模到六面体网格分析

简介:本资源是一份面向机械设计与仿真初学者的ANSYS齿轮应力分析实践指南,聚焦渐开线直齿轮参数化建模与接触/齿根应力有限元仿真全流程。文档系统讲解APDL语言驱动的齿轮建模方法、ANSYS图形界面下的镜像旋转装配技巧、网格划分策略及应力云图后处理解读…

阅读更多 →
GIS图斑跨图层复制粘贴全攻略:坐标系、字段映射与拓扑处理 2026/9/18 13:26:20

GIS图斑跨图层复制粘贴全攻略:坐标系、字段映射与拓扑处理

1. 内容整体设计与思路拆解1.1 为什么需要跨图层复制图斑干GIS这行的都知道,图斑跨图层复制粘贴这个操作,听着像个基础功能,但真正用好的还真不多。我是从一个县里的土地调查项目里第一次大量用到这个功能的,当时要把规划图里的用…

阅读更多 →
MySQL触发器NEW与OLD边界详解:可见性、可写性与常见陷阱 2026/9/18 13:26:20

MySQL触发器NEW与OLD边界详解:可见性、可写性与常见陷阱

写过触发器的人大概都经历过这种时刻:改完一条订单记录,回头查审计表,old_value 和 new_value 两列全是 NULL;或者在 BEFORE UPDATE 里明明把 NEW.status 改成了 1,落库之后还是 0。折腾半天,最后发现问题都…

阅读更多 →
Lighthouse下载安装指南:Windows/Linux/macOS三平台一次搞定 2026/9/18 13:26:20

Lighthouse下载安装指南:Windows/Linux/macOS三平台一次搞定

Lighthouse下载安装指南:Windows/Linux/macOS三平台一次搞定 【免费下载链接】Lighthouse 项目地址: https://gitcode.com/GitHub_Trending/lighthouse26/Lighthouse Lighthouse 是一款免费的《Banjo-Kazooie》(霸王大冒险)PC 移植版…

阅读更多 →
Spack 中的 Ruby 构建系统(RubyPackage)完全指南:从 gemspec 源码到预打包 gem 的安装 2026/9/18 13:23:19

Spack 中的 Ruby 构建系统(RubyPackage)完全指南:从 gemspec 源码到预打包 gem 的安装

Spack 中的 Ruby 构建系统(RubyPackage)完全指南:从 gemspec 源码到预打包 gem 的安装 【免费下载链接】spack A flexible package manager that supports multiple versions, configurations, platforms, and compilers. 项目地址: https:…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞