| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
CCU A6代际0.5rtt特性接口 Co-authored-by: gcw_7BxPXy6M<luoxiangyong1@huawei.com> Co-authored-by: Haoran Zheng<zhenghaoran22@huawei.com> Co-authored-by: hulk1997<hulinkang1@huawei.com> Co-authored-by: zhh<zenghonghui5@huawei.com> Co-authored-by: linzy_hccl<linzhiyang5@huawei.com> Co-authored-by: qq_46994783<sunenguang1@h-partners.com> # message auto-generated for no-merge-commit merge: !4873 merge ccu_rtt into master CCU A6代际0.5rtt特性接口 Created-by: gcw_7BxPXy6M Commit-by: hulk1997;qq_46994783;linzy_hccl;gcw_7BxPXy6M;Haoran Zheng;zhh Merged-by: cann-robot Description: ### 简要描述 新增 A6 代际 CCU 0.5-RTT(半往返)特性接口,通过级联计数器聚合同步替代逐事件信号量等待,减少通信往返次数 ### 问题描述 现有 CCU 通信同步机制依赖逐事件信号量(Post/Wait Sem),每次数据操作完成后需单独 Post 信号量通知对端,对端需逐个 Wait。在多对端聚合场景下,N 个对端的到达通知需要 N 次 Wait,同步开销随对端数线性增长,成为通信延迟的主要瓶颈。此外,DMA 写与计数器递增分两条指令完成,无法在一次操作中同时通知对端,进一步增加了同步往返。 ### 解决方案 - **资源层**:新增 HcommCcuCascCntHandle 句柄类型与 HCOMM_CCU_RES_TYPE_CASC_CNT 资源枚举,在 CcuComponent 中实现级联计数器块的分配/查询(CcuCascCntAlloc/CcuCascCntGetMem),每 die 上限 4 块,每块含 wishCntXn + totalCntXn + expectedCntXn - **Kernel 层**:在 CcuKernel 中新增 CascCntWait/CascCntClear/WriteVarAtomicAdd/WriteWithCascCntInc/LoadAddImm/AddImmStore 六个 API,封装为 CcuKernel 成员方法 - **Rep 层**:新增 6 个 IR 表示类(CcuRepCascCntWait/CcuRepCascCntClear/CcuRepWriteVarAtomic/CcuRepWriteWithCntInc/CcuRepLoadAddImm/CcuRepStoreAddImm),以及对应的 CcuRepType 枚举值 - **翻译层**:在 CcuInsGeneratorV2 中实现 6 个 translate 方法,调用 CcuV2::SyncAtX(原子写)、CcuV2::TransMem(带计数器递增的 DMA 写)等微码构造函数;后端优化器(InstructionScheduler)增加对 0.5-RTT 特殊指令的 LoadX/StoreX 读写优化识别 - **C API 层**:在 ccu_primitives.hpp 中暴露 CascCntWait/CascCntClear/WriteVarAtomicAdd/WriteWithCascCntInc/LoadAddImm/AddImmStore/ChannelIdGet 等 C++ inline 封装;在 ccu_res_c_adpt.cc 中实现资源侧 C 接口 - **资源管理**:新增 CcuCascCntBlockMgr 管理级联计数器块的生命周期,随 CcuInstance 创建/销毁 ### 影响范围 - 新增功能:6 个 0.5-RTT 数据面 API(级联计数器等待/清零、原子写、带计数器递增的写、Load/AddImm 复合操作) - 新增功能:3 个资源侧 C 接口(HcommCcuCascCntAlloc/HcommCcuCascCntGetMem/HcommCcuGetRmtMemToken) - 新增功能:级联计数器资源类型 HCOMM_CCU_RES_TYPE_CASC_CNT 及 CcuCascCntBlockMgr 管理器 - 性能:多对端聚合同步从 N 次 Wait 降为 1 次 CascCntWait,DMA 写与计数器递增合并为单条指令 - 兼容性:新增接口不影响已有通信流程,向后兼容 - 后端优化:InstructionScheduler 扩展支持 0.5-RTT 指令的寄存器读写优化,通过环境变量 HCOMM_CCU_HALF_RTT_XN_OPT=1 开启 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] 🚀 性能优化 - [ ] 📝 文档更新 - [ ] 📋 其他,请描述: ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> ## 测试 - UT:ut_ccuTaskException_halfRtt_test.cc — 验证 0.5-RTT 异常诊断场景 - UT:ut_ccu_microcode_loadx_storex.cc — 验证后端优化器对 LoadX/StoreX 的读写优化 - UT:ccu_imm_casc_demo.h — 级联计数器立即数 demo kernel - 手动测试:验证hcommtest中,dispach算子一卡多专家场景,bs=8和bs=256的正确性 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 合入检查 <!-- 在正式合入前,请做好必要的代码测试,用例补充,软件代码风格检查等。提高合入效率。--> <!-- [x] 表示选中 --> - [ ] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [ ] 🔍 邀请 committer评论/lgtm前的必要检查 - [ ] 🏷️ 标题中使用了合适的类型标签(如:[feat], [fix]) - [ ] 📄 代码修改内容已简要描述,相关文档已更新 - [ ] 📝 代码注释已更新,代码遵循项目整体代码风格 - [ ] 🧪 代码UT测试已更新,覆盖率已达标 - [ ] 🔬 验证方法已更新到"测试"部分 - [ ] 🛠️ 代码已通过静态分析工具检查,无错误 - [ ] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [ ] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [ ] 🚀 预约 前冒烟 用例前的必要检查 - [ ] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [ ] 🔧 代码已通过compile,编译无错误,无告警 - [ ] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [ ] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [ ] 📊 前冒烟 用例已全量通过 - [ ] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!4873 | 20 天前 | |
[feat] support A5 UB Memory symmetric memory Co-authored-by: hblnb<huangbolin3@huawei.com> Co-authored-by: z00940303<zhangzhuopan@huawei.com> # message auto-generated for no-merge-commit merge: !5128 merge master into master [feat] support A5 UB Memory symmetric memory Created-by: zhangzhuopan Commit-by: hblnb;z00940303 Merged-by: cann-robot Description: ## 描述 本 PR 新增 A5 UB Memory 对称内存能力,主要改动如下: - 通信域初始化阶段按 COMM_PROTOCOL_UB_MEM 和 NetLayer 预制 LSA WorldTeam。 - 实现 UB Memory 对称窗口注册、查询和解注册: - 建立 LSA WorldTeam Socket Ring; - 预留 lsaTeamSize × stride 对称 VA 空间; - 获取并导出本地 allocation 物理内存描述; - 通过 Ring AllGather 交换各 LSA 成员的 Shareable Handle、大小和窗口偏移; - 完成远端内存 Grant、Import 和固定 VA 槽位映射; - 将 UB Memory 信息发布到统一 HcommWindow.lsaWin。 - 支持同一 allocation 的重复、包含及交叉重叠注册,通过 PA Handle 复用底层映射并维护引用计数。 - 支持 UB Memory 与 URMA 共用同一个 HcommWindow,分别维护 lsaWin 和 URMA 相关字段。 - 新增 LSA Team 查询及 Rank/Member 转换接口: - HcclTeamGetLsaTeam - HcclTeamMemberToRank - HcclTeamRankToMember - 适配 HcclSymWinGetPeerPointer: - A5 UB Memory 场景输入 LSA memberId; - A3 Legacy 场景继续保持 Rank ID 语义。 - 完善异常及资源管理: - 在集合操作阶段同步各成员本地执行结果,避免单 Rank 失败导致其他 Rank持续等待; - 配对释放 Retain 和 Import 得到的物理内存 Handle; - Import/Map 部分失败时即时回滚已建立的映射; - 调整组合窗口注销顺序,在全部资源注销成功前保留 Host 索引; - Socket 建链和 Ring 数据交换统一使用通信配置中的 LinkTimeout。 - 补充 UB Memory 对称内存接口资料及使用约束。 ## 变更类型 请选择本次引入的变更类型: - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] 🚀 性能优化 - [x] 📝 文档更新 - [ ] 📋 其他,请描述: ## 关联的Issue - A5 UB Memory 对称内存需求:请填写实际 Issue 链接 ## 测试 已完成的测试用例和场景: 1. A5 双 Rank 数据面验证: - 对称窗口注册及查询; - 非零 Window offset 查询; - LSA Team 获取; - Rank ID 与 LSA memberId 双向转换; - GetPeerPointer 获取远端对称 VA; - Device 侧远端地址写入及数据校验; - 对称窗口集合解注册。 2. 重叠注册验证: - 完全相同区间重复注册; - 同一 allocation 子区间注册; - 同一 allocation 不同区间交叉注册; - 包含及被包含区间注册; - 相邻区间注册; - 不同 allocation 独立注册; - 多个外层 Window 按不同顺序解注册。 补充的 UT 用例: - 注册参数、地址溢出及映射范围校验。 - Window offset 分配、释放及空洞复用。 - Window 查询成功、越界和非 ACTIVE 状态。 - 本地 Handle 借用和远端 Handle Import。 - 多成员 Map 部分失败后的即时资源清理。 - 单成员及双成员 Ring AllGather 数据聚合。 - Register → Get → Deregister 完整生命周期。 - 重叠注册时 PA Mapping 及引用计数复用。 - Finalize 时 Window、VA 和 Handle 资源清理。 - UB Memory与URMA共存时 PeerPointer 分发。 - A3 Legacy PeerPointer Rank ID兼容。 - LSA memberId 越界及地址计算异常校验。 - Device Window注销失败时保留Host索引以支持重试。 - URMA重复及子区间窗口在最后一个别名注销后释放底层资源。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 合入检查 <!-- 在正式合入前,请做好必要的代码测试,用例补充,软件代码风格检查等。提高合入效率。--> <!-- [x] 表示选中 --> - [ ] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [ ] 🔍 邀请 committer评论/lgtm前的必要检查 - [ ] 🏷️ 标题中使用了合适的类型标签(如:[feat], [fix]) - [ ] 📄 代码修改内容已简要描述,相关文档已更新 - [ ] 📝 代码注释已更新,代码遵循项目整体代码风格 - [ ] 🧪 代码UT测试已更新,覆盖率已达标 - [ ] 🔬 验证方法已更新到"测试"部分 - [ ] 🛠️ 代码已通过静态分析工具检查,无错误 - [ ] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [ ] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [ ] 🚀 预约 前冒烟 用例前的必要检查 - [ ] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [ ] 🔧 代码已通过compile,编译无错误,无告警 - [ ] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [ ] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [ ] 📊 前冒烟 用例已全量通过 - [ ] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!5128 | 20 天前 | |
[feat] 新增对外数据结构HcommChannelStatus描述建链状态 Co-authored-by: ren-mengguang<renmengguang@h-partners.com> # message auto-generated for no-merge-commit merge: !5347 merge feature/channel-status-enum into master [feat] 新增对外数据结构HcommChannelStatus描述建链状态 Created-by: ren-mengguang Commit-by: ren-mengguang Merged-by: cann-robot Description: ## 描述 对外开放建链状态数据结构 HcommChannelStatus,为 HcommChannelGetStatus 出参状态值提供具名枚举定义,消除调用方魔法数字。**接口签名保持 int32_t* 不变**,本次仅新增数据结构定义与配套文档,内部实现不变。 主要改动: 1. **对外 API**(include/hcomm_channel.h):新增 C 风格枚举 HcommChannelStatus,仅开放 3 个稳定状态:HCOMM_CHANNEL_STATUS_READY = 0(建链完成,通道就绪)、HCOMM_CHANNEL_STATUS_CONNECTING = 1(建链进行中,需继续调用本接口推动建链)、HCOMM_CHANNEL_STATUS_FAILED_INTERNAL = 2(建链失败);注释冻结取值契约(已有取值严禁改动,新增状态只允许尾部追加)。HcommChannelGetStatus 接口签名保持 int32_t* statusList 不变。 2. **文档**:新增 docs/zh/api_ref/comm_opdev/datatype_definition/HcommChannelStatus.md,按数据类型模板描述枚举定义与用法(循环调用 HcommChannelGetStatus 推动建链、依据枚举判断建链进度、状态值大于等于 HCOMM_CHANNEL_STATUS_FAILED_INTERNAL 均视为建链失败),细分状态值仅供辅助定位失败原因、不作判定依据;datatype_definition/README.md 补充索引;HcommChannelGetStatus.md 的 statusList 参数说明改为引用该枚举文档,调用示例改用枚举常量。 3. **内部实现**:建链状态数据路径不改动,内部继续使用 hcomm::HcommChannelLinkStatus 六值枚举。仅因新增公共枚举与内部枚举值同名,在 using namespace hcomm 编译单元产生二义性,对 aicpu_ts_channel_helper.cc、aiv_channel_helper.cc、ut_coll_comm_res_c_adpt.cc 共 6 处引用补 hcomm:: 限定(纯名称限定,语义无变化)。 **兼容性说明**: - 二进制(ABI)兼容:仅新增枚举类型定义,无接口签名与符号表变化(hcomm.map 无变化),HCCL 通过 dlsym 调用无感。 - 源码(API)兼容:纯新增定义,既有调用方无需任何修改。 ## 变更类型 请选择本次引入的变更类型: - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] 🚀 性能优化 - [ ] 📝 文档更新 - [ ] 📋 其他,请描述: ## 关联的Issue #901 ## 测试 已完成的测试用例和场景: 1. bash build.sh --pkg:hcomm_base_obj 与 libhcomm.so 目标(覆盖全部 src 改动文件)编译链接通过、无告警;构建中 legacy 设备算子目标因外部 CANN 9.2.0 头文件 mx_fp8_* 类型冲突失败,经 stash 对照验证为存量环境问题,与本次改动无关。 2. bash build.sh --ut --noexec:next 框架 UT 目标 hccl_utest_test_next_resource、hccl_utest_test_next_resource_a3(含改动 UT 及全部引用 hcomm_channel.h 的用例)编译链接 100% 通过。 3. clang-format 18.1.8 检查全部通过。 4. 本轮 src/UT 改动为纯名称限定、对外为纯声明新增,运行行为与基线一致;GetStatus 相关用例(参数校验/AICPU/AIV/CPU/混合引擎/状态映射)已在上一轮提交运行通过,本轮代码路径与取值语义完全一致。 补充的UT用例: 无新增用例;ut_coll_comm_res_c_adpt.cc 桩函数仅做 hcomm:: 名称限定,取值与用例逻辑无变化。 ## 文档更新 新增 docs/zh/api_ref/comm_opdev/datatype_definition/HcommChannelStatus.md 数据结构文档(含使用说明),datatype_definition/README.md 补充索引;HcommChannelGetStatus.md 参数说明与调用示例同步引用枚举常量。 ## 合入检查 - [x] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [ ] 🔍 邀请 committer评论/lgtm前的必要检查 - [x] 🏷️ 标题中使用了合适的类型标签(如:[feat], [fix]) - [x] 📄 代码修改内容已简要描述,相关文档已更新 - [x] 📝 代码注释已更新,代码遵循项目整体代码风格 - [x] 🧪 代码UT测试已更新,覆盖率已达标 - [x] 🔬 验证方法已更新到"测试"部分 - [x] 🛠️ 代码已通过静态分析工具检查,无错误 - [ ] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [ ] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [ ] 🚀 预约 前冒烟 用例前的必要检查 - [ ] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [x] 🔧 代码已通过compile,编译无错误,无告警 - [x] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [ ] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [ ] 📊 前冒烟 用例已全量通过 - [ ] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!5347 | 11 天前 | |
[build] License Header Co-authored-by: ouyangcaike<ouyangcaike@h-partners.com> # message auto-generated for no-merge-commit merge: !4556 merge build/oat into master [build] License Header Created-by: ouyangcaike Commit-by: ouyangcaike Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. 全仓C/C++、CMake、Python、Shell文件规范头部License的使用 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [ ] 📝 文档更新 - [x] 📋 其他,请描述:工程 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> 已完成的测试用例和场景: 1. 编译成功 2. 全量拦截项通过 补充的UT用例: NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 合入检查 <!-- 在正式合入前,请做好必要的代码测试,用例补充,软件代码风格检查等。提高合入效率。--> <!-- [x] 表示选中 --> - [x] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [x] 🔍 邀请 committer评论 /lgtm前的必要检查 - [x] 🏷️ 标题中使用了合适的类型标签(如:[feat], [fix]) - [x] 📄 代码修改内容已简要描述,相关文档已更新 - [x] 📝 代码注释已更新,代码遵循项目整体代码风格 - [x] 🧪 代码UT测试已更新,覆盖率已达标 - [x] 🔬 验证方法已更新到"测试"部分 - [x] 🛠️ 代码已通过静态分析工具检查,无错误 - [x] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [x] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [x] 🚀 预约 前冒烟 用例前的必要检查 - [x] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [x] 🔧 代码已通过compile,编译无错误,无告警 - [x] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [x] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [x] 📊 前冒烟 用例已全量通过 - [x] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!4556 | 1 个月前 | |
[feat]提供查device的endpointdesc接口 Co-authored-by: YantingLiu<liuyanting11@huawei.com> # message auto-generated for no-merge-commit merge: !4232 merge getdescs into master [feat]提供查device的endpointdesc接口 Created-by: YantingLiu Commit-by: YantingLiu Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次 PR 新增了查询设备 EndpointDesc 的对外接口,允许用户通过设备逻辑 ID 获取该设备上所有端点的描述信息。实现上,调用链路从上层 HcommEndpointGetDescNum / HcommEndpointGetDescs 进入适配层,通过 HCCP 南向接口获取设备的 EID 列表,再根据不同协议类型(UBOE / UBC_CTP / UBG)填充 EndpointDesc 结构。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [ ] 📝 文档更新 - [ ] 📋 其他,请描述: ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> 已完成的测试用例和场景: 1. 原ut和补充ut 成功 2. UBG, UBOE, UB_CTP 真机 查询成功 3. hccl_vm checker 构造rtp ctp 查询成功 4. RDV通过 补充的UT用例: 增加 HccpGetIpByEid 查询成功和底层查询失败用例。 增加 HccpGetCtpEnable 的 CTP 支持、全 RTP、查询失败及空指针用例。 增加 Endpoint 查询接口对非 950 设备、不存在 EID 等异常场景的验证。 增加 UBC_CTP、UBG 返回 EID,以及 UBoE 返回 IPv4 描述的成功场景验证。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 新增 HcommEndpointGetDescNum 接口文档。 新增 HcommEndpointGetDescs 接口文档,说明两阶段调用、数组容量及协议地址格式。 ## 合入检查 <!-- 在正式合入前,请做好必要的代码测试,用例补充,软件代码风格检查等。提高合入效率。--> <!-- [x] 表示选中 --> - [ ] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [ ] 🔍 邀请 committer评论 /lgtm前的必要检查 - [ ] 🏷️ 标题中使用了合适的类型标签(如:[feat], [fix]) - [ ] 📄 代码修改内容已简要描述,相关文档已更新 - [ ] 📝 代码注释已更新,代码遵循项目整体代码风格 - [ ] 🧪 代码UT测试已更新,覆盖率已达标 - [ ] 🔬 验证方法已更新到"测试"部分 - [ ] 🛠️ 代码已通过静态分析工具检查,无错误 - [ ] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [ ] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [ ] 🚀 预约 前冒烟 用例前的必要检查 - [ ] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [ ] 🔧 代码已通过compile,编译无错误,无告警 - [ ] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [ ] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [ ] 📊 前冒烟 用例已全量通过 - [ ] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!4232 | 1 个月前 | |
CCU A6代际0.5rtt特性接口 Co-authored-by: gcw_7BxPXy6M<luoxiangyong1@huawei.com> Co-authored-by: Haoran Zheng<zhenghaoran22@huawei.com> Co-authored-by: hulk1997<hulinkang1@huawei.com> Co-authored-by: zhh<zenghonghui5@huawei.com> Co-authored-by: linzy_hccl<linzhiyang5@huawei.com> Co-authored-by: qq_46994783<sunenguang1@h-partners.com> # message auto-generated for no-merge-commit merge: !4873 merge ccu_rtt into master CCU A6代际0.5rtt特性接口 Created-by: gcw_7BxPXy6M Commit-by: hulk1997;qq_46994783;linzy_hccl;gcw_7BxPXy6M;Haoran Zheng;zhh Merged-by: cann-robot Description: ### 简要描述 新增 A6 代际 CCU 0.5-RTT(半往返)特性接口,通过级联计数器聚合同步替代逐事件信号量等待,减少通信往返次数 ### 问题描述 现有 CCU 通信同步机制依赖逐事件信号量(Post/Wait Sem),每次数据操作完成后需单独 Post 信号量通知对端,对端需逐个 Wait。在多对端聚合场景下,N 个对端的到达通知需要 N 次 Wait,同步开销随对端数线性增长,成为通信延迟的主要瓶颈。此外,DMA 写与计数器递增分两条指令完成,无法在一次操作中同时通知对端,进一步增加了同步往返。 ### 解决方案 - **资源层**:新增 HcommCcuCascCntHandle 句柄类型与 HCOMM_CCU_RES_TYPE_CASC_CNT 资源枚举,在 CcuComponent 中实现级联计数器块的分配/查询(CcuCascCntAlloc/CcuCascCntGetMem),每 die 上限 4 块,每块含 wishCntXn + totalCntXn + expectedCntXn - **Kernel 层**:在 CcuKernel 中新增 CascCntWait/CascCntClear/WriteVarAtomicAdd/WriteWithCascCntInc/LoadAddImm/AddImmStore 六个 API,封装为 CcuKernel 成员方法 - **Rep 层**:新增 6 个 IR 表示类(CcuRepCascCntWait/CcuRepCascCntClear/CcuRepWriteVarAtomic/CcuRepWriteWithCntInc/CcuRepLoadAddImm/CcuRepStoreAddImm),以及对应的 CcuRepType 枚举值 - **翻译层**:在 CcuInsGeneratorV2 中实现 6 个 translate 方法,调用 CcuV2::SyncAtX(原子写)、CcuV2::TransMem(带计数器递增的 DMA 写)等微码构造函数;后端优化器(InstructionScheduler)增加对 0.5-RTT 特殊指令的 LoadX/StoreX 读写优化识别 - **C API 层**:在 ccu_primitives.hpp 中暴露 CascCntWait/CascCntClear/WriteVarAtomicAdd/WriteWithCascCntInc/LoadAddImm/AddImmStore/ChannelIdGet 等 C++ inline 封装;在 ccu_res_c_adpt.cc 中实现资源侧 C 接口 - **资源管理**:新增 CcuCascCntBlockMgr 管理级联计数器块的生命周期,随 CcuInstance 创建/销毁 ### 影响范围 - 新增功能:6 个 0.5-RTT 数据面 API(级联计数器等待/清零、原子写、带计数器递增的写、Load/AddImm 复合操作) - 新增功能:3 个资源侧 C 接口(HcommCcuCascCntAlloc/HcommCcuCascCntGetMem/HcommCcuGetRmtMemToken) - 新增功能:级联计数器资源类型 HCOMM_CCU_RES_TYPE_CASC_CNT 及 CcuCascCntBlockMgr 管理器 - 性能:多对端聚合同步从 N 次 Wait 降为 1 次 CascCntWait,DMA 写与计数器递增合并为单条指令 - 兼容性:新增接口不影响已有通信流程,向后兼容 - 后端优化:InstructionScheduler 扩展支持 0.5-RTT 指令的寄存器读写优化,通过环境变量 HCOMM_CCU_HALF_RTT_XN_OPT=1 开启 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] 🚀 性能优化 - [ ] 📝 文档更新 - [ ] 📋 其他,请描述: ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> ## 测试 - UT:ut_ccuTaskException_halfRtt_test.cc — 验证 0.5-RTT 异常诊断场景 - UT:ut_ccu_microcode_loadx_storex.cc — 验证后端优化器对 LoadX/StoreX 的读写优化 - UT:ccu_imm_casc_demo.h — 级联计数器立即数 demo kernel - 手动测试:验证hcommtest中,dispach算子一卡多专家场景,bs=8和bs=256的正确性 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 合入检查 <!-- 在正式合入前,请做好必要的代码测试,用例补充,软件代码风格检查等。提高合入效率。--> <!-- [x] 表示选中 --> - [ ] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [ ] 🔍 邀请 committer评论/lgtm前的必要检查 - [ ] 🏷️ 标题中使用了合适的类型标签(如:[feat], [fix]) - [ ] 📄 代码修改内容已简要描述,相关文档已更新 - [ ] 📝 代码注释已更新,代码遵循项目整体代码风格 - [ ] 🧪 代码UT测试已更新,覆盖率已达标 - [ ] 🔬 验证方法已更新到"测试"部分 - [ ] 🛠️ 代码已通过静态分析工具检查,无错误 - [ ] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [ ] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [ ] 🚀 预约 前冒烟 用例前的必要检查 - [ ] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [ ] 🔧 代码已通过compile,编译无错误,无告警 - [ ] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [ ] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [ ] 📊 前冒烟 用例已全量通过 - [ ] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!4873 | 20 天前 | |
[build] format all C/C++ files Co-authored-by: ouyangcaike<ouyangcaike@h-partners.com> # message auto-generated for no-merge-commit merge: !4462 merge build/clang-format into master [build] format all C/C++ files Created-by: ouyangcaike Commit-by: ouyangcaike Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. format all C/C++ files ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [ ] 📝 文档更新 - [x] 📋 其他,请描述:工程 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> 已完成的测试用例和场景: 1. 编译成功 2. 全量拦截项通过 3. 前冒烟测试通过 补充的UT用例: NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 合入检查 <!-- 在正式合入前,请做好必要的代码测试,用例补充,软件代码风格检查等。提高合入效率。--> <!-- [x] 表示选中 --> - [x] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [x] 🔍 邀请 committer评论 /lgtm前的必要检查 - [x] 🏷️ 标题中使用了合适的类型标签(如:[feat], [fix]) - [x] 📄 代码修改内容已简要描述,相关文档已更新 - [x] 📝 代码注释已更新,代码遵循项目整体代码风格 - [x] 🧪 代码UT测试已更新,覆盖率已达标 - [x] 🔬 验证方法已更新到"测试"部分 - [x] 🛠️ 代码已通过静态分析工具检查,无错误 - [x] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [x] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [x] 🚀 预约 前冒烟 用例前的必要检查 - [x] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [x] 🔧 代码已通过compile,编译无错误,无告警 - [x] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [x] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [x] 📊 前冒烟 用例已全量通过 - [x] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!4462 | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 20 天前 | ||
| 20 天前 | ||
| 11 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 20 天前 | ||
| 1 个月前 |