| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10499 merge clear_repeat_h_29 into master 整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按**安装重名**头文件规范,完成 **PR-3:其余算子 / 3rd 碰撞 / 3.7 类消歧**(控变更文件数 < 200),消除安装包内跨算子同名头冲突。 **方法**:低风险只改次要副本——权威树 mc2/3rd/template_linear_algebra、attention/common、mc2/common 等保留原名;次要侧加算子/组件前缀(kda_ / msa_ / gmm_ / mrs_v2_ / agm_v2_ / apace_ / wq_ / mararn_ 等)。同步更新 #include、\file、include guard。无业务逻辑变更。禁止软链接。 ### 安装分类规则(节选,本批相关) | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 3.3 | atvoss submodule 多份可见 | 否 | 不解决(归需屏蔽) | | 3.4 | aclnn level2 双路径兼容 | 否 | 330 废弃(归需屏蔽) | | 3.7 | transformer 误拷贝 math | 是 | 本仓特化拷贝改名消歧(无法直接删改用 math) | | 3.9 | 仓内非对外同名拷贝 | 是 | 次要侧改名 / 去重 | 本批实际:**3.9** + **3.7 消歧** + 同名不同实现亦改名;权威/公共树保留原名。 ### 范围与结果 | 项 | 说明 | |----|------| | 范围 | 仍需整改清单中除 common.h / moe_common.h / moe_v2_common.h 外的成对/跨组件/TLA 次要副本 | | 映射条数 | **43**(pr3_remap_batch1.tsv + pr3_remap_batch2.tsv)+ nd2nz 去重 + masked_select 改名 | | 权威 TLA 包内多路径 | dispatch_policy.hpp / tile_copy.hpp 等同组件备案,**本批不改** | | 变更文件数 | **196**(< 200 硬约束) | ### 命名约定 | 场景 | 约定 | |------|------| | chunk_kda / msa 次要 | kda_* / msa_* | | matmul_reduce_scatter_v2 | mrs_v2_* | | all_gather_matmul_v2 | agm_v2_* | | gmm / apace / weight_quant | gmm_* / apace_* / wq_* | | matmul_all_reduce_add_rms_norm | mararn_* | | include guard | 与文件名前缀一致(如 CATLASS_KDA_*) | | 设备属性宏 | **保持** CATLASS_DEVICE 等原名(不随文件前缀改) | ### 其它处置 | 项 | 处置 | |----|------| | masked_select_v3.h | → moe_token_permute_masked_select_v3.h(算子特化,消歧 basename) | | batch_mat_mul_nd2nz.h | 删 mat_mul_v3 副本,改为 include batch_mat_mul_v3 侧(内容相同) | | sparse_flash_mla metadata | root → *_kernel_metadata.h;arch22 → *_arch22_metadata.h | ### 本分支变更统计 | 项 | 数量 | |----|-----:| | 变更文件 | **196** | | 行变更 | +375 / -797 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10499 | 1 个月前 | |
整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10499 merge clear_repeat_h_29 into master 整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按**安装重名**头文件规范,完成 **PR-3:其余算子 / 3rd 碰撞 / 3.7 类消歧**(控变更文件数 < 200),消除安装包内跨算子同名头冲突。 **方法**:低风险只改次要副本——权威树 mc2/3rd/template_linear_algebra、attention/common、mc2/common 等保留原名;次要侧加算子/组件前缀(kda_ / msa_ / gmm_ / mrs_v2_ / agm_v2_ / apace_ / wq_ / mararn_ 等)。同步更新 #include、\file、include guard。无业务逻辑变更。禁止软链接。 ### 安装分类规则(节选,本批相关) | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 3.3 | atvoss submodule 多份可见 | 否 | 不解决(归需屏蔽) | | 3.4 | aclnn level2 双路径兼容 | 否 | 330 废弃(归需屏蔽) | | 3.7 | transformer 误拷贝 math | 是 | 本仓特化拷贝改名消歧(无法直接删改用 math) | | 3.9 | 仓内非对外同名拷贝 | 是 | 次要侧改名 / 去重 | 本批实际:**3.9** + **3.7 消歧** + 同名不同实现亦改名;权威/公共树保留原名。 ### 范围与结果 | 项 | 说明 | |----|------| | 范围 | 仍需整改清单中除 common.h / moe_common.h / moe_v2_common.h 外的成对/跨组件/TLA 次要副本 | | 映射条数 | **43**(pr3_remap_batch1.tsv + pr3_remap_batch2.tsv)+ nd2nz 去重 + masked_select 改名 | | 权威 TLA 包内多路径 | dispatch_policy.hpp / tile_copy.hpp 等同组件备案,**本批不改** | | 变更文件数 | **196**(< 200 硬约束) | ### 命名约定 | 场景 | 约定 | |------|------| | chunk_kda / msa 次要 | kda_* / msa_* | | matmul_reduce_scatter_v2 | mrs_v2_* | | all_gather_matmul_v2 | agm_v2_* | | gmm / apace / weight_quant | gmm_* / apace_* / wq_* | | matmul_all_reduce_add_rms_norm | mararn_* | | include guard | 与文件名前缀一致(如 CATLASS_KDA_*) | | 设备属性宏 | **保持** CATLASS_DEVICE 等原名(不随文件前缀改) | ### 其它处置 | 项 | 处置 | |----|------| | masked_select_v3.h | → moe_token_permute_masked_select_v3.h(算子特化,消歧 basename) | | batch_mat_mul_nd2nz.h | 删 mat_mul_v3 副本,改为 include batch_mat_mul_v3 侧(内容相同) | | sparse_flash_mla metadata | root → *_kernel_metadata.h;arch22 → *_arch22_metadata.h | ### 本分支变更统计 | 项 | 数量 | |----|-----:| | 变更文件 | **196** | | 行变更 | +375 / -797 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10499 | 1 个月前 | |
整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10499 merge clear_repeat_h_29 into master 整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按**安装重名**头文件规范,完成 **PR-3:其余算子 / 3rd 碰撞 / 3.7 类消歧**(控变更文件数 < 200),消除安装包内跨算子同名头冲突。 **方法**:低风险只改次要副本——权威树 mc2/3rd/template_linear_algebra、attention/common、mc2/common 等保留原名;次要侧加算子/组件前缀(kda_ / msa_ / gmm_ / mrs_v2_ / agm_v2_ / apace_ / wq_ / mararn_ 等)。同步更新 #include、\file、include guard。无业务逻辑变更。禁止软链接。 ### 安装分类规则(节选,本批相关) | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 3.3 | atvoss submodule 多份可见 | 否 | 不解决(归需屏蔽) | | 3.4 | aclnn level2 双路径兼容 | 否 | 330 废弃(归需屏蔽) | | 3.7 | transformer 误拷贝 math | 是 | 本仓特化拷贝改名消歧(无法直接删改用 math) | | 3.9 | 仓内非对外同名拷贝 | 是 | 次要侧改名 / 去重 | 本批实际:**3.9** + **3.7 消歧** + 同名不同实现亦改名;权威/公共树保留原名。 ### 范围与结果 | 项 | 说明 | |----|------| | 范围 | 仍需整改清单中除 common.h / moe_common.h / moe_v2_common.h 外的成对/跨组件/TLA 次要副本 | | 映射条数 | **43**(pr3_remap_batch1.tsv + pr3_remap_batch2.tsv)+ nd2nz 去重 + masked_select 改名 | | 权威 TLA 包内多路径 | dispatch_policy.hpp / tile_copy.hpp 等同组件备案,**本批不改** | | 变更文件数 | **196**(< 200 硬约束) | ### 命名约定 | 场景 | 约定 | |------|------| | chunk_kda / msa 次要 | kda_* / msa_* | | matmul_reduce_scatter_v2 | mrs_v2_* | | all_gather_matmul_v2 | agm_v2_* | | gmm / apace / weight_quant | gmm_* / apace_* / wq_* | | matmul_all_reduce_add_rms_norm | mararn_* | | include guard | 与文件名前缀一致(如 CATLASS_KDA_*) | | 设备属性宏 | **保持** CATLASS_DEVICE 等原名(不随文件前缀改) | ### 其它处置 | 项 | 处置 | |----|------| | masked_select_v3.h | → moe_token_permute_masked_select_v3.h(算子特化,消歧 basename) | | batch_mat_mul_nd2nz.h | 删 mat_mul_v3 副本,改为 include batch_mat_mul_v3 侧(内容相同) | | sparse_flash_mla metadata | root → *_kernel_metadata.h;arch22 → *_arch22_metadata.h | ### 本分支变更统计 | 项 | 数量 | |----|-----:| | 变更文件 | **196** | | 行变更 | +375 / -797 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10499 | 1 个月前 | |
trans仓打标签合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !9424 merge master into master trans仓打标签合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 ffn gmm mamba / causal_conv1d mc2 mhc这5个仓的aclnn文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 ffn gmm mamba / causal_conv1d mc2 mhc ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9424 | 2 个月前 | |
整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10499 merge clear_repeat_h_29 into master 整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按**安装重名**头文件规范,完成 **PR-3:其余算子 / 3rd 碰撞 / 3.7 类消歧**(控变更文件数 < 200),消除安装包内跨算子同名头冲突。 **方法**:低风险只改次要副本——权威树 mc2/3rd/template_linear_algebra、attention/common、mc2/common 等保留原名;次要侧加算子/组件前缀(kda_ / msa_ / gmm_ / mrs_v2_ / agm_v2_ / apace_ / wq_ / mararn_ 等)。同步更新 #include、\file、include guard。无业务逻辑变更。禁止软链接。 ### 安装分类规则(节选,本批相关) | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 3.3 | atvoss submodule 多份可见 | 否 | 不解决(归需屏蔽) | | 3.4 | aclnn level2 双路径兼容 | 否 | 330 废弃(归需屏蔽) | | 3.7 | transformer 误拷贝 math | 是 | 本仓特化拷贝改名消歧(无法直接删改用 math) | | 3.9 | 仓内非对外同名拷贝 | 是 | 次要侧改名 / 去重 | 本批实际:**3.9** + **3.7 消歧** + 同名不同实现亦改名;权威/公共树保留原名。 ### 范围与结果 | 项 | 说明 | |----|------| | 范围 | 仍需整改清单中除 common.h / moe_common.h / moe_v2_common.h 外的成对/跨组件/TLA 次要副本 | | 映射条数 | **43**(pr3_remap_batch1.tsv + pr3_remap_batch2.tsv)+ nd2nz 去重 + masked_select 改名 | | 权威 TLA 包内多路径 | dispatch_policy.hpp / tile_copy.hpp 等同组件备案,**本批不改** | | 变更文件数 | **196**(< 200 硬约束) | ### 命名约定 | 场景 | 约定 | |------|------| | chunk_kda / msa 次要 | kda_* / msa_* | | matmul_reduce_scatter_v2 | mrs_v2_* | | all_gather_matmul_v2 | agm_v2_* | | gmm / apace / weight_quant | gmm_* / apace_* / wq_* | | matmul_all_reduce_add_rms_norm | mararn_* | | include guard | 与文件名前缀一致(如 CATLASS_KDA_*) | | 设备属性宏 | **保持** CATLASS_DEVICE 等原名(不随文件前缀改) | ### 其它处置 | 项 | 处置 | |----|------| | masked_select_v3.h | → moe_token_permute_masked_select_v3.h(算子特化,消歧 basename) | | batch_mat_mul_nd2nz.h | 删 mat_mul_v3 副本,改为 include batch_mat_mul_v3 侧(内容相同) | | sparse_flash_mla metadata | root → *_kernel_metadata.h;arch22 → *_arch22_metadata.h | ### 本分支变更统计 | 项 | 数量 | |----|-----:| | 变更文件 | **196** | | 行变更 | +375 / -797 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10499 | 1 个月前 | |
trans仓打标签合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !9424 merge master into master trans仓打标签合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 ffn gmm mamba / causal_conv1d mc2 mhc这5个仓的aclnn文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 ffn gmm mamba / causal_conv1d mc2 mhc ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9424 | 2 个月前 | |
完成(attention 其余 / mc2 / posembedding)重名头文件整改 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10238 merge clear_last_h_attn into master 完成(attention 其余 / mc2 / posembedding)重名头文件整改 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按仓内重名头文件规范,完成 **生产侧其余**( attention 除 chunk_kda_fwd 外 / mc2 / posembedding)剩余同名头整改,消除该范围内单仓 basename 冲突。 **方法**:对照 clear-repeat-h 仓内规则,优先只改内部/次要副本(保留对外公开名与主路径原名),并同步更新 #include、\file、必要 include guard,以及 classify_rule.yaml 中已改名路径。无业务逻辑与格式化变更。include 按路径解析,避免改到 3rdparty/catlass、FIA/QFA 自己的 base_checker.h。 ### 仓内分类规则(clear-repeat-h) 对每个重名头文件,先判断 **内容是否相同**、**是否对外/包间头文件**,再套用: | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 1.1 | 内容不同,均为内部头文件 | 是 | 建议加模块前缀 / arch 后缀改名 | | 1.2 | 内容相同,均为内部头文件 | 是 | 只保留一份;**改 include 路径,禁止软链接**(本批对 arch 等同内容组改为 *_archXX.h 消歧,不删文件,避免相对 include 误解析) | | 1.3 | 部分内部、部分对外/包间 | 是 | **只改内部** 那份 | | 1.4 | 内容相同,均为对外/包间 | 否(兼容期) | 可用软链接保留多路径 | | 1.5 | 内容不同,均为对外/包间 | 兼容期内可暂缓 | 兼容期结束后改名 | | 1.6 | 其他 | 原则上不允许重名 | 特例需评审 | **原则**:除 1.4 外,单仓内原则上不允许重名头文件。 本分支实际用到:**1.1**、**1.2(同内容改 arch / 算子后缀,不删文件)**、**1.3(只改 examples 内部副本)**。 ### 本批不整改(兼容期 / 产物) | 文件 | 规则 | 说明 | |------|------|------| | 两份对外 aclnn_rotary_position_embedding.h | 1.4 | 内容相同且均为对外公开;只改 examples 内部副本为 *_example.h | | aclnn_fused_infer_attention_score_v4.h | 1.4 | 均为对外,兼容期不改 | | aclnn_all_gather_matmul_v2.h、aclnn_nsa_compress_attention_infer.h | 1.5 | 均为对外且内容不同,兼容期暂缓 | | aclnn_common.h | — | torch_extension / build 产物,不改 | ### 范围与结果 | 范围 | 本分支状态 | |------|------------| | attention/(除 chunk_kda_fwd)checkers / BSA TLA / FIA arch / common/pse 等 | 完成 | | mc2/3rd、mc2/matmul_all_reduce | 完成 | | posembedding examples(1.3) | 完成 | | classify_rule.yaml 路径同步 | 完成 | ### 命名约定 | 场景 | 约定 | |------|------| | arch 分档 | *_arch22.h / *_arch35.h / *_arch38.h | | flash_attn / sparse_flash_mla checkers | *_flash_attn.h / *_sparse_flash_mla.h | | BSA TLA | *_bsa.hpp | | 跨组件 mc2 3rd | mc2_3rd_* | | 1.3 examples aclnn | 保留 op_api 对外名;examples → *_example.h | ### 本分支变更统计(相对 50d31a480) | 项 | 数量 | |----|-----:| | rename | 36 | | 修改(含 include / \file / guard / yaml) | 82 | | **合计** | **118**(118 files changed, 241 insertions(+), 241 deletions(-)) | 主要目录(按变更文件数): | 目录 | 约计 | |------|-----:| | attention/common | 30 | | attention/sparse_flash_mla | 20 | | attention/block_sparse_attention | 19 | | attention/flash_attn | 18 | | attention/fused_infer_attention_score | 14 | | mc2/matmul_all_reduce、mc2/3rd | 4 + 3 | | posembedding examples、classify_rule.yaml、若干 grad / sparse 入口 | 余量 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10238 | 2 个月前 | |
fix(mc2): 修复MC2算子错误日志规范问题 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !10297 merge fix/mc2-log into master fix(mc2): 修复MC2算子错误日志规范问题 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 依据 CANN 日志规范评测报告,整改 MC2 系列算子的错误日志文案,共涉及 53 个文件: - 修复日志文案拼写错误(如 AlGaterMatmul、excute、Recieved、nulld、workspce 等) - 修复语法错误与格式串截断导致的占位符失效(如 moe_distribute_dispatch_v2_tiling.cpp 中多段字符串字面量拆分问题) - 移除日志中的内部敏感词 inner error - 中文日志文案改为英文(含全角冒号改半角) - 自定义打印(printf/std::cerr/std::cout)改为统一日志接口 - 删除冗余重复日志 ## 关联的Issue Fixes #4433 ## 测试 仅修改日志文案与格式串,未涉及算子计算逻辑变更。日志格式串修改已逐一核对占位符与实际参数匹配。 ## 文档更新 无 ## 类型标签 - [x] 🐛 Bug 修复 - [x] 🧹 代码清理 See merge request: cann/ops-transformer!10297 | 1 个月前 | |
trans仓打标签合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !9424 merge master into master trans仓打标签合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 ffn gmm mamba / causal_conv1d mc2 mhc这5个仓的aclnn文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 ffn gmm mamba / causal_conv1d mc2 mhc ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9424 | 2 个月前 | |
整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10499 merge clear_repeat_h_29 into master 整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按**安装重名**头文件规范,完成 **PR-3:其余算子 / 3rd 碰撞 / 3.7 类消歧**(控变更文件数 < 200),消除安装包内跨算子同名头冲突。 **方法**:低风险只改次要副本——权威树 mc2/3rd/template_linear_algebra、attention/common、mc2/common 等保留原名;次要侧加算子/组件前缀(kda_ / msa_ / gmm_ / mrs_v2_ / agm_v2_ / apace_ / wq_ / mararn_ 等)。同步更新 #include、\file、include guard。无业务逻辑变更。禁止软链接。 ### 安装分类规则(节选,本批相关) | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 3.3 | atvoss submodule 多份可见 | 否 | 不解决(归需屏蔽) | | 3.4 | aclnn level2 双路径兼容 | 否 | 330 废弃(归需屏蔽) | | 3.7 | transformer 误拷贝 math | 是 | 本仓特化拷贝改名消歧(无法直接删改用 math) | | 3.9 | 仓内非对外同名拷贝 | 是 | 次要侧改名 / 去重 | 本批实际:**3.9** + **3.7 消歧** + 同名不同实现亦改名;权威/公共树保留原名。 ### 范围与结果 | 项 | 说明 | |----|------| | 范围 | 仍需整改清单中除 common.h / moe_common.h / moe_v2_common.h 外的成对/跨组件/TLA 次要副本 | | 映射条数 | **43**(pr3_remap_batch1.tsv + pr3_remap_batch2.tsv)+ nd2nz 去重 + masked_select 改名 | | 权威 TLA 包内多路径 | dispatch_policy.hpp / tile_copy.hpp 等同组件备案,**本批不改** | | 变更文件数 | **196**(< 200 硬约束) | ### 命名约定 | 场景 | 约定 | |------|------| | chunk_kda / msa 次要 | kda_* / msa_* | | matmul_reduce_scatter_v2 | mrs_v2_* | | all_gather_matmul_v2 | agm_v2_* | | gmm / apace / weight_quant | gmm_* / apace_* / wq_* | | matmul_all_reduce_add_rms_norm | mararn_* | | include guard | 与文件名前缀一致(如 CATLASS_KDA_*) | | 设备属性宏 | **保持** CATLASS_DEVICE 等原名(不随文件前缀改) | ### 其它处置 | 项 | 处置 | |----|------| | masked_select_v3.h | → moe_token_permute_masked_select_v3.h(算子特化,消歧 basename) | | batch_mat_mul_nd2nz.h | 删 mat_mul_v3 副本,改为 include batch_mat_mul_v3 侧(内容相同) | | sparse_flash_mla metadata | root → *_kernel_metadata.h;arch22 → *_arch22_metadata.h | ### 本分支变更统计 | 项 | 数量 | |----|-----:| | 变更文件 | **196** | | 行变更 | +375 / -797 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10499 | 1 个月前 | |
fix(mc2): 修复MC2算子错误日志规范问题 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !10297 merge fix/mc2-log into master fix(mc2): 修复MC2算子错误日志规范问题 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 依据 CANN 日志规范评测报告,整改 MC2 系列算子的错误日志文案,共涉及 53 个文件: - 修复日志文案拼写错误(如 AlGaterMatmul、excute、Recieved、nulld、workspce 等) - 修复语法错误与格式串截断导致的占位符失效(如 moe_distribute_dispatch_v2_tiling.cpp 中多段字符串字面量拆分问题) - 移除日志中的内部敏感词 inner error - 中文日志文案改为英文(含全角冒号改半角) - 自定义打印(printf/std::cerr/std::cout)改为统一日志接口 - 删除冗余重复日志 ## 关联的Issue Fixes #4433 ## 测试 仅修改日志文案与格式串,未涉及算子计算逻辑变更。日志格式串修改已逐一核对占位符与实际参数匹配。 ## 文档更新 无 ## 类型标签 - [x] 🐛 Bug 修复 - [x] 🧹 代码清理 See merge request: cann/ops-transformer!10297 | 1 个月前 | |
trans仓打标签合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !9424 merge master into master trans仓打标签合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 ffn gmm mamba / causal_conv1d mc2 mhc这5个仓的aclnn文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 ffn gmm mamba / causal_conv1d mc2 mhc ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9424 | 2 个月前 | |
engram反向性能优化 Co-authored-by: luozhonglin222<luozhonglin1@huawei.com> # message auto-generated for no-merge-commit merge: !10126 merge master into master engram反向性能优化 Created-by: luozhonglin222 Commit-by: luozhonglin222 Merged-by: cann-robot Description: ## 描述 engram算子反向性能优化: 1.多核发送接受 2.一次性读取多indices,减少HBM访问次数 3.搬运UB调大 4.修复反向图模式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: # PR 检视报告 ## 检视概览 - PR: [#10126](https://gitcode.com/cann/ops-transformer/pull/10126/diffs) - 算子: engram_fetch, engram_fetch_grad - 代码侧别: 混合(Kernel + Tiling + C++ Host) - 变更文件: 5 个 1. mc2/engram_fetch/op_kernel/engram_fetch_utils.h (Kernel, 常量修改) 2. mc2/engram_fetch_grad/op_host/op_tiling/arch35/engram_fetch_grad_tiling.cpp (Tiling, workspace 重算) 3. mc2/engram_fetch_grad/op_kernel/arch35/engram_fetch_grad_arch35.h (Kernel, 核心重构) 4. mc2/engram_fetch_grad/op_kernel/engram_fetch_grad_utils.h (Kernel, 常量修改) 5. torch_extension/cann_ops_transformer/ops/csrc/elastic_buffer.cpp (C++ Host, channel 分配) - 检视文档: cpp-secure.md, ascendc-topk.md, ascendc-api.md, ascendc-perf.md, mc2-specific.md, cpp-general.md - 总条例数: 151 条(路由规划) - 已检视条例数: 48+ 条(覆盖全部安全类 + API 类 + 部分性能类) - 检视时间: 2026-08-20 ## 检视统计 | 状态 | 条例数 | 占比 | |------|------|------| | PASS | 45+ | 94% | | FAIL(发现问题)| 2 | 4% | | SUSPICIOUS(需关注)| 1 | 2% | > 未检视条例(性能剩余 9 条、MC2 17 条、通用规范 40+ 条等)因上下文限制未完成全量检视。已检视部分覆盖全部安全类和 API 类条款,风险覆盖率较高。 --- ## 发现问题(HIGH 置信度) ### [SEC-1.2] 内存安全 — Slot 索引越界导致 GM 读写越界 - **问题描述**: SendGradRemote 和 RecvGradFromPeers 中的 slot 索引计算存在 GM 内存越界写/读。slotsPerSender = NUM_SLOTS / sendersPerRank_,当 sendersPerRank_ > NUM_SLOTS(8) 时 slotsPerSender 被钳为 1,但 slotIdx = senderIdx * slotsPerSender + (localWriteCnt % slotsPerSender) 退化为 slotIdx = senderIdx,可超过合法范围 [0, NUM_SLOTS),写入/读出其他 rank 的 slot 子区,甚至越过整个通信窗口造成 GM 越界。 - **触发条件**(arch35: totalBlocks_=72, halfBlocks=36): - sendersPerRank_ = 36 / numRanks_(arch35.h:383),仅钳 ≥1(384-385),未钳 ≤ NUM_SLOTS - numRanks_=2 → sendersPerRank_=18 > 8 → slotIdx 可达 17,总 slot 数仅 16 → 超出整个 slot 区域 - numRanks_=3 → sendersPerRank_=12 > 8 → slotIdx 可达 11 - numRanks_=4 → sendersPerRank_=9 > 8 → slotIdx 可达 8 = NUM_SLOTS → 跨入下一 rank slot 区域 - 以上 rankSize 取值均满足 ValidateRankSize [2, 1024] 合法范围 - **代码片段**(mc2/engram_fetch_grad/op_kernel/arch35/engram_fetch_grad_arch35.h 行 737-763): cpp 737: uint32_t slotsPerSender = NUM_SLOTS / sendersPerRank_; // sendersPerRank_=18 时结果=0 738: if (slotsPerSender == 0U) { 739: slotsPerSender = 1U; // 钳为 1,但未防越界 740: } 741: 742: while (totalSent < static_cast<uint32_t>(sendCount)) { ... 759: uint64_t slotBase = static_cast<uint64_t>(rankId_) * NUM_SLOTS * tokenSlotSize_; 760: uint64_t slotIdx = static_cast<uint64_t>(senderIdx) * slotsPerSender + 761: (static_cast<uint64_t>(localWriteCnt) % slotsPerSender); 762: uint64_t slotOffset = tokenDataOffset_ + slotBase + slotIdx * tokenSlotSize_; 763: GM_ADDR remoteSlotAddr = GetRemoteWinAddr(dstRank, slotOffset); // slotIdx≥NUM_SLOTS 时越界 对称问题存在于 RecvGradFromPeers(行 818-822, 854-855, 865-866): cpp 818: uint32_t slotsPerSender = NUM_SLOTS / sendersPerRank_; 819: if (slotsPerSender == 0U) { 820: slotsPerSender = 1U; 821: } ... 854: uint32_t firstSlotIdx = si * slotsPerSender + firstSegIdx; // si≥NUM_SLOTS 时越界 865: uint32_t slotGlobalIdx = si * slotsPerSender + segIdx; // 同上 sendersPerRank_ 计算(Init 行 383-386): cpp 383: sendersPerRank_ = halfBlocks / numRanks_; // numRanks_=2→18, =4→9, 均>NUM_SLOTS(8) 384: if (sendersPerRank_ < 1U) { 385: sendersPerRank_ = 1U; 386: } - **假设检验证据**: 正向证据: | 证据类型 | 分值 | 证据描述 | |---------|------|---------| | 规范违反 | +40% | SEC-1.2 "内存越界访问":slotIdx 无边界校验,可超出 NUM_SLOTS 范围 | | 上下文防御缺失 | +30% | slotsPerSender==0→1 钳位反而掩盖并放行越界;无 slotIdx < NUM_SLOTS 判断 | | PR 归属 | +20% | slot 索引公式 759-762、818-822/854/865 均为本次 diff 新增代码 | | 数据流风险 | +15% | sendersPerRank_ 依赖 numRanks_(C++ Host 传递),无上游约束 ≤ NUM_SLOTS | 负向证据:无(channelIdx 兜底不覆盖 slot;ValidateRankSize 允许 numRanks_=2/4) 自信值 = 40% + 30% + 20% + 15% = 105% → ≥ 70% → 判定违规 - **修复建议**: 在 Init 中对 sendersPerRank_ 增加上界钳位: cpp sendersPerRank_ = halfBlocks / numRanks_; if (sendersPerRank_ < 1U) { sendersPerRank_ = 1U; } if (sendersPerRank_ > NUM_SLOTS) { // 新增:slot 流控窗口上界 sendersPerRank_ = NUM_SLOTS; } 这样 slotsPerSender = NUM_SLOTS / sendersPerRank_ ≥ 1 恒成立,slotIdx ∈ [0, NUM_SLOTS)。 --- ### [SEC-3.3] 数组索引校验 — 动态计算的 GM 偏移未校验越界 - **问题描述**: 同 SEC-1.2 根因。slotIdx(行 760-761)和 slotGlobalIdx(行 865)是动态计算的 GM 偏移索引,未校验是否在有效范围 [0, NUM_SLOTS) 内。SEC-3.3 条款明确要求"动态计算的偏移需边界判断逻辑"。 - **代码片段**(mc2/engram_fetch_grad/op_kernel/arch35/engram_fetch_grad_arch35.h 行 737-762): cpp 737: uint32_t slotsPerSender = NUM_SLOTS / sendersPerRank_; // sendersPerRank_=18 时结果=0 738: if (slotsPerSender == 0U) { 739: slotsPerSender = 1U; // 兜底为1,但未防越界 740: } ... 759: uint64_t slotBase = static_cast<uint64_t>(rankId_) * NUM_SLOTS * tokenSlotSize_; 760: uint64_t slotIdx = static_cast<uint64_t>(senderIdx) * slotsPerSender + 761: (static_cast<uint64_t>(localWriteCnt) % slotsPerSender); 762: uint64_t slotOffset = tokenDataOffset_ + slotBase + slotIdx * tokenSlotSize_; 763: GM_ADDR remoteSlotAddr = GetRemoteWinAddr(dstRank, slotOffset); // slotIdx≥NUM_SLOTS 时越界 - **假设检验证据**: 正向证据: | 证据类型 | 分值 | 证据描述 | |---------|------|---------| | 规范违反 | +40% | SEC-3.3 Kernel 需校验场景:"动态计算的偏移→需边界判断逻辑",slotIdx 无边界校验 | | 上下文防御缺失 | +30% | if (slotsPerSender == 0U) slotsPerSender = 1U 仅防除零,不防越界 | | PR 归属 | +20% | slot 索引公式和 slotsPerSender 兜底均为本 PR 新增代码(diff 行 737-762、818-822) | | 数据流风险 | +15% | sendersPerRank_ 依赖 numRanks_(来自 ctxPtr_,C++ Host 传递),无上游约束 | 自信值 = 40% + 30% + 20% + 15% = 105% → ≥ 70% → 判定违规 - **修复建议**: 同 SEC-1.2 — 在 Init 中钳位 sendersPerRank_ ≤ NUM_SLOTS,或在 slotIdx 计算后增加 if (slotIdx >= NUM_SLOTS) slotIdx %= NUM_SLOTS 守卫。 --- ## 需关注(MED 置信度) ### [SEC-2.3] 除零保护 — maxTokensPerSlot_ 为零时除零 - **问题描述**: RecvGradFromPeers 函数行 837 新增除法 (remaining + maxTokensPerSlot_ - 1U) / maxTokensPerSlot_,除数 maxTokensPerSlot_ 是 P4 类型(Kernel 内部多步计算中间值),无零值守卫。 maxTokensPerSlot_ 的计算链(行 404→413→414)依赖 winSize_(tilingData->commBufferSize),而 tiling 侧仅校验 commBufferSize > 0(tiling.cpp:479),不校验 commBufferSize > tokenDataOffset_。当 commBufferSize 较小时,tokenAreaRaw = 0 → tokenSlotSize_ = 0 → maxTokensPerSlot_ = 0,行 837 发生除零。 PR 同时修改了 tokenDataOffset_ 公式(行 402: 4*numRanks*STATE_OFFSET → 3*numRanks*sendersPerRank*STATE_OFFSET),使该值增大(如 rankSize=8 时 1024→3072),令 maxTokensPerSlot_ = 0 更易触发。 - **代码片段**(mc2/engram_fetch_grad/op_kernel/arch35/engram_fetch_grad_arch35.h 行 404-414 + 827-847): cpp // 行 404-414: maxTokensPerSlot_ 计算链(无零守卫) 404: uint64_t tokenAreaRaw = (winSize_ > tokenDataOffset_) ? (winSize_ - tokenDataOffset_) : 0U; 405: uint64_t tokenArea = tokenAreaRaw; 406: if (hiddenBytes_ > 0) { 407: uint64_t hiddenBytes = static_cast<uint64_t>(hiddenBytes_); 408: tokenArea = Ceil(tokenAreaRaw, hiddenBytes) * hiddenBytes; 409: if (tokenArea > tokenAreaRaw) { 410: tokenArea = (tokenAreaRaw / hiddenBytes) * hiddenBytes; 411: } 412: } 413: tokenSlotSize_ = tokenArea / numRanks_ / NUM_SLOTS; 414: maxTokensPerSlot_ = static_cast<uint32_t>(tokenSlotSize_ / static_cast<uint64_t>(hiddenBytes_)); // 行 827-847: 除零点(行 837) 827: while (senderReceived < senderRecvCount) { ... 835: uint32_t availSlots = static_cast<uint32_t>(remoteWriteCnt) - localReadCnt; 836: uint32_t remaining = senderRecvCount - senderReceived; 837: uint32_t remainingChunks = (remaining + maxTokensPerSlot_ - 1U) / maxTokensPerSlot_; // ← 除零风险 838: uint32_t localSlotIdx = localReadCnt % slotsPerSender; - **假设检验证据**: 正向证据: | 证据类型 | 分值 | 证据描述 | |---------|------|---------| | 规范违反 | +40% | maxTokensPerSlot_ 是 P4(Kernel 内部多步计算中间值),无零值守卫 | | PR 归属 | +20% | 行 837 是 PR 新增代码(diff 有 + 前缀) | | 数据流风险 | +15% | maxTokensPerSlot_ 依赖 winSize_(仅验证 >0),tiling.cpp 不校验 commBufferSize > tokenDataOffset_ | 负向证据:无有效防御(send 路径行 757 有 ascendc_assert(chunkLen != 0U) 但在不同核执行,不保护 receive 路径) 自信值 = 40% + 20% + 15% = 75% → MED → SUSPICIOUS - **修复建议**: 在 Init 中 maxTokensPerSlot_ 赋值后添加零值兜底: cpp maxTokensPerSlot_ = static_cast<uint32_t>(tokenSlotSize_ / static_cast<uint64_t>(hiddenBytes_)); if (maxTokensPerSlot_ == 0U) { maxTokensPerSlot_ = 1U; // 与 send 路径 ascendc_assert 对齐,至少避免除零 } --- ## 范围外备注(既存问题,非本 PR 引入) ### [SEC-3.3] elastic_buffer.cpp hcommHandle 数组越界(既存) - **问题描述**: elastic_buffer.cpp:414 resources.context.hcommHandle[peer * channelsPerPeer + ch] 索引在 rankSize > 512 时可超过 hcommHandle[HCCL_MAX_RANK_SIZE](=1024)数组边界。rankSize=1024, channelsPerPeer=2 时最大索引可达 2047。 - **PR 归属**: 行 414 不在 diff 变更行内(diff hunk @@ -392,12 +392,22 @@ 仅覆盖行 392-413),属既存问题。 - **PR 影响**: PR 将 handlesByRank 从栈数组改为 std::vector(行 408),**修复了该数组的越界**,但未同步修复 hcommHandle[1024] 和 GetHcclCommChannel 内 channelBuf[1024] 的越界。 - **建议**: 作为独立 issue 跟踪修复。 --- ## 通过条例 ### Kernel 侧(组A)— 安全类 - SEC-2.1 有符号整数溢出 — PASS - SEC-2.2 无符号整数回绕 — PASS - TOPK- 整数转浮点 — PASS - TOPK- nan/inf特殊值 — PASS - TOPK- GM偏移int64 — PASS - TOPK- 野指针生命周期 — PASS - SEC-3.1 未初始化变量 — PASS - SEC-3.4 sizeof指针 — PASS - SEC-3.5 指针判空 — PASS - TOPK- atomic清零 — PASS - TOPK- 通信核间同步 — PASS - SEC-3.2 资源释放后置新值 — PASS(Kernel 侧不适用) ### Kernel 侧(组A)— API 类 - API-1 禁止SetValue/GetValu See merge request: cann/ops-transformer!10126 | 1 个月前 | |
engram反向性能优化 Co-authored-by: luozhonglin222<luozhonglin1@huawei.com> # message auto-generated for no-merge-commit merge: !10126 merge master into master engram反向性能优化 Created-by: luozhonglin222 Commit-by: luozhonglin222 Merged-by: cann-robot Description: ## 描述 engram算子反向性能优化: 1.多核发送接受 2.一次性读取多indices,减少HBM访问次数 3.搬运UB调大 4.修复反向图模式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: # PR 检视报告 ## 检视概览 - PR: [#10126](https://gitcode.com/cann/ops-transformer/pull/10126/diffs) - 算子: engram_fetch, engram_fetch_grad - 代码侧别: 混合(Kernel + Tiling + C++ Host) - 变更文件: 5 个 1. mc2/engram_fetch/op_kernel/engram_fetch_utils.h (Kernel, 常量修改) 2. mc2/engram_fetch_grad/op_host/op_tiling/arch35/engram_fetch_grad_tiling.cpp (Tiling, workspace 重算) 3. mc2/engram_fetch_grad/op_kernel/arch35/engram_fetch_grad_arch35.h (Kernel, 核心重构) 4. mc2/engram_fetch_grad/op_kernel/engram_fetch_grad_utils.h (Kernel, 常量修改) 5. torch_extension/cann_ops_transformer/ops/csrc/elastic_buffer.cpp (C++ Host, channel 分配) - 检视文档: cpp-secure.md, ascendc-topk.md, ascendc-api.md, ascendc-perf.md, mc2-specific.md, cpp-general.md - 总条例数: 151 条(路由规划) - 已检视条例数: 48+ 条(覆盖全部安全类 + API 类 + 部分性能类) - 检视时间: 2026-08-20 ## 检视统计 | 状态 | 条例数 | 占比 | |------|------|------| | PASS | 45+ | 94% | | FAIL(发现问题)| 2 | 4% | | SUSPICIOUS(需关注)| 1 | 2% | > 未检视条例(性能剩余 9 条、MC2 17 条、通用规范 40+ 条等)因上下文限制未完成全量检视。已检视部分覆盖全部安全类和 API 类条款,风险覆盖率较高。 --- ## 发现问题(HIGH 置信度) ### [SEC-1.2] 内存安全 — Slot 索引越界导致 GM 读写越界 - **问题描述**: SendGradRemote 和 RecvGradFromPeers 中的 slot 索引计算存在 GM 内存越界写/读。slotsPerSender = NUM_SLOTS / sendersPerRank_,当 sendersPerRank_ > NUM_SLOTS(8) 时 slotsPerSender 被钳为 1,但 slotIdx = senderIdx * slotsPerSender + (localWriteCnt % slotsPerSender) 退化为 slotIdx = senderIdx,可超过合法范围 [0, NUM_SLOTS),写入/读出其他 rank 的 slot 子区,甚至越过整个通信窗口造成 GM 越界。 - **触发条件**(arch35: totalBlocks_=72, halfBlocks=36): - sendersPerRank_ = 36 / numRanks_(arch35.h:383),仅钳 ≥1(384-385),未钳 ≤ NUM_SLOTS - numRanks_=2 → sendersPerRank_=18 > 8 → slotIdx 可达 17,总 slot 数仅 16 → 超出整个 slot 区域 - numRanks_=3 → sendersPerRank_=12 > 8 → slotIdx 可达 11 - numRanks_=4 → sendersPerRank_=9 > 8 → slotIdx 可达 8 = NUM_SLOTS → 跨入下一 rank slot 区域 - 以上 rankSize 取值均满足 ValidateRankSize [2, 1024] 合法范围 - **代码片段**(mc2/engram_fetch_grad/op_kernel/arch35/engram_fetch_grad_arch35.h 行 737-763): cpp 737: uint32_t slotsPerSender = NUM_SLOTS / sendersPerRank_; // sendersPerRank_=18 时结果=0 738: if (slotsPerSender == 0U) { 739: slotsPerSender = 1U; // 钳为 1,但未防越界 740: } 741: 742: while (totalSent < static_cast<uint32_t>(sendCount)) { ... 759: uint64_t slotBase = static_cast<uint64_t>(rankId_) * NUM_SLOTS * tokenSlotSize_; 760: uint64_t slotIdx = static_cast<uint64_t>(senderIdx) * slotsPerSender + 761: (static_cast<uint64_t>(localWriteCnt) % slotsPerSender); 762: uint64_t slotOffset = tokenDataOffset_ + slotBase + slotIdx * tokenSlotSize_; 763: GM_ADDR remoteSlotAddr = GetRemoteWinAddr(dstRank, slotOffset); // slotIdx≥NUM_SLOTS 时越界 对称问题存在于 RecvGradFromPeers(行 818-822, 854-855, 865-866): cpp 818: uint32_t slotsPerSender = NUM_SLOTS / sendersPerRank_; 819: if (slotsPerSender == 0U) { 820: slotsPerSender = 1U; 821: } ... 854: uint32_t firstSlotIdx = si * slotsPerSender + firstSegIdx; // si≥NUM_SLOTS 时越界 865: uint32_t slotGlobalIdx = si * slotsPerSender + segIdx; // 同上 sendersPerRank_ 计算(Init 行 383-386): cpp 383: sendersPerRank_ = halfBlocks / numRanks_; // numRanks_=2→18, =4→9, 均>NUM_SLOTS(8) 384: if (sendersPerRank_ < 1U) { 385: sendersPerRank_ = 1U; 386: } - **假设检验证据**: 正向证据: | 证据类型 | 分值 | 证据描述 | |---------|------|---------| | 规范违反 | +40% | SEC-1.2 "内存越界访问":slotIdx 无边界校验,可超出 NUM_SLOTS 范围 | | 上下文防御缺失 | +30% | slotsPerSender==0→1 钳位反而掩盖并放行越界;无 slotIdx < NUM_SLOTS 判断 | | PR 归属 | +20% | slot 索引公式 759-762、818-822/854/865 均为本次 diff 新增代码 | | 数据流风险 | +15% | sendersPerRank_ 依赖 numRanks_(C++ Host 传递),无上游约束 ≤ NUM_SLOTS | 负向证据:无(channelIdx 兜底不覆盖 slot;ValidateRankSize 允许 numRanks_=2/4) 自信值 = 40% + 30% + 20% + 15% = 105% → ≥ 70% → 判定违规 - **修复建议**: 在 Init 中对 sendersPerRank_ 增加上界钳位: cpp sendersPerRank_ = halfBlocks / numRanks_; if (sendersPerRank_ < 1U) { sendersPerRank_ = 1U; } if (sendersPerRank_ > NUM_SLOTS) { // 新增:slot 流控窗口上界 sendersPerRank_ = NUM_SLOTS; } 这样 slotsPerSender = NUM_SLOTS / sendersPerRank_ ≥ 1 恒成立,slotIdx ∈ [0, NUM_SLOTS)。 --- ### [SEC-3.3] 数组索引校验 — 动态计算的 GM 偏移未校验越界 - **问题描述**: 同 SEC-1.2 根因。slotIdx(行 760-761)和 slotGlobalIdx(行 865)是动态计算的 GM 偏移索引,未校验是否在有效范围 [0, NUM_SLOTS) 内。SEC-3.3 条款明确要求"动态计算的偏移需边界判断逻辑"。 - **代码片段**(mc2/engram_fetch_grad/op_kernel/arch35/engram_fetch_grad_arch35.h 行 737-762): cpp 737: uint32_t slotsPerSender = NUM_SLOTS / sendersPerRank_; // sendersPerRank_=18 时结果=0 738: if (slotsPerSender == 0U) { 739: slotsPerSender = 1U; // 兜底为1,但未防越界 740: } ... 759: uint64_t slotBase = static_cast<uint64_t>(rankId_) * NUM_SLOTS * tokenSlotSize_; 760: uint64_t slotIdx = static_cast<uint64_t>(senderIdx) * slotsPerSender + 761: (static_cast<uint64_t>(localWriteCnt) % slotsPerSender); 762: uint64_t slotOffset = tokenDataOffset_ + slotBase + slotIdx * tokenSlotSize_; 763: GM_ADDR remoteSlotAddr = GetRemoteWinAddr(dstRank, slotOffset); // slotIdx≥NUM_SLOTS 时越界 - **假设检验证据**: 正向证据: | 证据类型 | 分值 | 证据描述 | |---------|------|---------| | 规范违反 | +40% | SEC-3.3 Kernel 需校验场景:"动态计算的偏移→需边界判断逻辑",slotIdx 无边界校验 | | 上下文防御缺失 | +30% | if (slotsPerSender == 0U) slotsPerSender = 1U 仅防除零,不防越界 | | PR 归属 | +20% | slot 索引公式和 slotsPerSender 兜底均为本 PR 新增代码(diff 行 737-762、818-822) | | 数据流风险 | +15% | sendersPerRank_ 依赖 numRanks_(来自 ctxPtr_,C++ Host 传递),无上游约束 | 自信值 = 40% + 30% + 20% + 15% = 105% → ≥ 70% → 判定违规 - **修复建议**: 同 SEC-1.2 — 在 Init 中钳位 sendersPerRank_ ≤ NUM_SLOTS,或在 slotIdx 计算后增加 if (slotIdx >= NUM_SLOTS) slotIdx %= NUM_SLOTS 守卫。 --- ## 需关注(MED 置信度) ### [SEC-2.3] 除零保护 — maxTokensPerSlot_ 为零时除零 - **问题描述**: RecvGradFromPeers 函数行 837 新增除法 (remaining + maxTokensPerSlot_ - 1U) / maxTokensPerSlot_,除数 maxTokensPerSlot_ 是 P4 类型(Kernel 内部多步计算中间值),无零值守卫。 maxTokensPerSlot_ 的计算链(行 404→413→414)依赖 winSize_(tilingData->commBufferSize),而 tiling 侧仅校验 commBufferSize > 0(tiling.cpp:479),不校验 commBufferSize > tokenDataOffset_。当 commBufferSize 较小时,tokenAreaRaw = 0 → tokenSlotSize_ = 0 → maxTokensPerSlot_ = 0,行 837 发生除零。 PR 同时修改了 tokenDataOffset_ 公式(行 402: 4*numRanks*STATE_OFFSET → 3*numRanks*sendersPerRank*STATE_OFFSET),使该值增大(如 rankSize=8 时 1024→3072),令 maxTokensPerSlot_ = 0 更易触发。 - **代码片段**(mc2/engram_fetch_grad/op_kernel/arch35/engram_fetch_grad_arch35.h 行 404-414 + 827-847): cpp // 行 404-414: maxTokensPerSlot_ 计算链(无零守卫) 404: uint64_t tokenAreaRaw = (winSize_ > tokenDataOffset_) ? (winSize_ - tokenDataOffset_) : 0U; 405: uint64_t tokenArea = tokenAreaRaw; 406: if (hiddenBytes_ > 0) { 407: uint64_t hiddenBytes = static_cast<uint64_t>(hiddenBytes_); 408: tokenArea = Ceil(tokenAreaRaw, hiddenBytes) * hiddenBytes; 409: if (tokenArea > tokenAreaRaw) { 410: tokenArea = (tokenAreaRaw / hiddenBytes) * hiddenBytes; 411: } 412: } 413: tokenSlotSize_ = tokenArea / numRanks_ / NUM_SLOTS; 414: maxTokensPerSlot_ = static_cast<uint32_t>(tokenSlotSize_ / static_cast<uint64_t>(hiddenBytes_)); // 行 827-847: 除零点(行 837) 827: while (senderReceived < senderRecvCount) { ... 835: uint32_t availSlots = static_cast<uint32_t>(remoteWriteCnt) - localReadCnt; 836: uint32_t remaining = senderRecvCount - senderReceived; 837: uint32_t remainingChunks = (remaining + maxTokensPerSlot_ - 1U) / maxTokensPerSlot_; // ← 除零风险 838: uint32_t localSlotIdx = localReadCnt % slotsPerSender; - **假设检验证据**: 正向证据: | 证据类型 | 分值 | 证据描述 | |---------|------|---------| | 规范违反 | +40% | maxTokensPerSlot_ 是 P4(Kernel 内部多步计算中间值),无零值守卫 | | PR 归属 | +20% | 行 837 是 PR 新增代码(diff 有 + 前缀) | | 数据流风险 | +15% | maxTokensPerSlot_ 依赖 winSize_(仅验证 >0),tiling.cpp 不校验 commBufferSize > tokenDataOffset_ | 负向证据:无有效防御(send 路径行 757 有 ascendc_assert(chunkLen != 0U) 但在不同核执行,不保护 receive 路径) 自信值 = 40% + 20% + 15% = 75% → MED → SUSPICIOUS - **修复建议**: 在 Init 中 maxTokensPerSlot_ 赋值后添加零值兜底: cpp maxTokensPerSlot_ = static_cast<uint32_t>(tokenSlotSize_ / static_cast<uint64_t>(hiddenBytes_)); if (maxTokensPerSlot_ == 0U) { maxTokensPerSlot_ = 1U; // 与 send 路径 ascendc_assert 对齐,至少避免除零 } --- ## 范围外备注(既存问题,非本 PR 引入) ### [SEC-3.3] elastic_buffer.cpp hcommHandle 数组越界(既存) - **问题描述**: elastic_buffer.cpp:414 resources.context.hcommHandle[peer * channelsPerPeer + ch] 索引在 rankSize > 512 时可超过 hcommHandle[HCCL_MAX_RANK_SIZE](=1024)数组边界。rankSize=1024, channelsPerPeer=2 时最大索引可达 2047。 - **PR 归属**: 行 414 不在 diff 变更行内(diff hunk @@ -392,12 +392,22 @@ 仅覆盖行 392-413),属既存问题。 - **PR 影响**: PR 将 handlesByRank 从栈数组改为 std::vector(行 408),**修复了该数组的越界**,但未同步修复 hcommHandle[1024] 和 GetHcclCommChannel 内 channelBuf[1024] 的越界。 - **建议**: 作为独立 issue 跟踪修复。 --- ## 通过条例 ### Kernel 侧(组A)— 安全类 - SEC-2.1 有符号整数溢出 — PASS - SEC-2.2 无符号整数回绕 — PASS - TOPK- 整数转浮点 — PASS - TOPK- nan/inf特殊值 — PASS - TOPK- GM偏移int64 — PASS - TOPK- 野指针生命周期 — PASS - SEC-3.1 未初始化变量 — PASS - SEC-3.4 sizeof指针 — PASS - SEC-3.5 指针判空 — PASS - TOPK- atomic清零 — PASS - TOPK- 通信核间同步 — PASS - SEC-3.2 资源释放后置新值 — PASS(Kernel 侧不适用) ### Kernel 侧(组A)— API 类 - API-1 禁止SetValue/GetValu See merge request: cann/ops-transformer!10126 | 1 个月前 | |
fix(mc2):resolve compilation compatibility issues with old version cann packages Co-authored-by: tgwsakiko_<linwei69@huawei.com> # message auto-generated for no-merge-commit merge: !9648 merge bugfix-compile into master fix(mc2):resolve compilation compatibility issues with old version cann packages Created-by: tgwsakiko_ Commit-by: tgwsakiko_ Merged-by: cann-robot Description: ## 描述 9.1.0版本CANN包以下不支持TensorAPI、URMA高阶API,通过宏隔离使用了新特性的算子的编译 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9648 | 2 个月前 | |
trans仓打标签合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !9424 merge master into master trans仓打标签合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 ffn gmm mamba / causal_conv1d mc2 mhc这5个仓的aclnn文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 ffn gmm mamba / causal_conv1d mc2 mhc ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9424 | 2 个月前 | |
fix(mc2): 修复MC2算子错误日志规范问题 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !10297 merge fix/mc2-log into master fix(mc2): 修复MC2算子错误日志规范问题 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 依据 CANN 日志规范评测报告,整改 MC2 系列算子的错误日志文案,共涉及 53 个文件: - 修复日志文案拼写错误(如 AlGaterMatmul、excute、Recieved、nulld、workspce 等) - 修复语法错误与格式串截断导致的占位符失效(如 moe_distribute_dispatch_v2_tiling.cpp 中多段字符串字面量拆分问题) - 移除日志中的内部敏感词 inner error - 中文日志文案改为英文(含全角冒号改半角) - 自定义打印(printf/std::cerr/std::cout)改为统一日志接口 - 删除冗余重复日志 ## 关联的Issue Fixes #4433 ## 测试 仅修改日志文案与格式串,未涉及算子计算逻辑变更。日志格式串修改已逐一核对占位符与实际参数匹配。 ## 文档更新 无 ## 类型标签 - [x] 🐛 Bug 修复 - [x] 🧹 代码清理 See merge request: cann/ops-transformer!10297 | 1 个月前 | |
打标签检测 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !10044 merge master into master 打标签检测 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ### 描述 打标签的检测补充 ## 关联的Issue 关联Issue [#4040](https://gitcode.com/cann/ops-transformer/issues/4040) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-transformer!10044 | 2 个月前 | |
trans仓打标签合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !9424 merge master into master trans仓打标签合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 ffn gmm mamba / causal_conv1d mc2 mhc这5个仓的aclnn文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 ffn gmm mamba / causal_conv1d mc2 mhc ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9424 | 2 个月前 | |
fix(mc2): 修复MC2算子错误日志规范问题 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !10297 merge fix/mc2-log into master fix(mc2): 修复MC2算子错误日志规范问题 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 依据 CANN 日志规范评测报告,整改 MC2 系列算子的错误日志文案,共涉及 53 个文件: - 修复日志文案拼写错误(如 AlGaterMatmul、excute、Recieved、nulld、workspce 等) - 修复语法错误与格式串截断导致的占位符失效(如 moe_distribute_dispatch_v2_tiling.cpp 中多段字符串字面量拆分问题) - 移除日志中的内部敏感词 inner error - 中文日志文案改为英文(含全角冒号改半角) - 自定义打印(printf/std::cerr/std::cout)改为统一日志接口 - 删除冗余重复日志 ## 关联的Issue Fixes #4433 ## 测试 仅修改日志文案与格式串,未涉及算子计算逻辑变更。日志格式串修改已逐一核对占位符与实际参数匹配。 ## 文档更新 无 ## 类型标签 - [x] 🐛 Bug 修复 - [x] 🧹 代码清理 See merge request: cann/ops-transformer!10297 | 1 个月前 | |
整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10499 merge clear_repeat_h_29 into master 整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按**安装重名**头文件规范,完成 **PR-3:其余算子 / 3rd 碰撞 / 3.7 类消歧**(控变更文件数 < 200),消除安装包内跨算子同名头冲突。 **方法**:低风险只改次要副本——权威树 mc2/3rd/template_linear_algebra、attention/common、mc2/common 等保留原名;次要侧加算子/组件前缀(kda_ / msa_ / gmm_ / mrs_v2_ / agm_v2_ / apace_ / wq_ / mararn_ 等)。同步更新 #include、\file、include guard。无业务逻辑变更。禁止软链接。 ### 安装分类规则(节选,本批相关) | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 3.3 | atvoss submodule 多份可见 | 否 | 不解决(归需屏蔽) | | 3.4 | aclnn level2 双路径兼容 | 否 | 330 废弃(归需屏蔽) | | 3.7 | transformer 误拷贝 math | 是 | 本仓特化拷贝改名消歧(无法直接删改用 math) | | 3.9 | 仓内非对外同名拷贝 | 是 | 次要侧改名 / 去重 | 本批实际:**3.9** + **3.7 消歧** + 同名不同实现亦改名;权威/公共树保留原名。 ### 范围与结果 | 项 | 说明 | |----|------| | 范围 | 仍需整改清单中除 common.h / moe_common.h / moe_v2_common.h 外的成对/跨组件/TLA 次要副本 | | 映射条数 | **43**(pr3_remap_batch1.tsv + pr3_remap_batch2.tsv)+ nd2nz 去重 + masked_select 改名 | | 权威 TLA 包内多路径 | dispatch_policy.hpp / tile_copy.hpp 等同组件备案,**本批不改** | | 变更文件数 | **196**(< 200 硬约束) | ### 命名约定 | 场景 | 约定 | |------|------| | chunk_kda / msa 次要 | kda_* / msa_* | | matmul_reduce_scatter_v2 | mrs_v2_* | | all_gather_matmul_v2 | agm_v2_* | | gmm / apace / weight_quant | gmm_* / apace_* / wq_* | | matmul_all_reduce_add_rms_norm | mararn_* | | include guard | 与文件名前缀一致(如 CATLASS_KDA_*) | | 设备属性宏 | **保持** CATLASS_DEVICE 等原名(不随文件前缀改) | ### 其它处置 | 项 | 处置 | |----|------| | masked_select_v3.h | → moe_token_permute_masked_select_v3.h(算子特化,消歧 basename) | | batch_mat_mul_nd2nz.h | 删 mat_mul_v3 副本,改为 include batch_mat_mul_v3 侧(内容相同) | | sparse_flash_mla metadata | root → *_kernel_metadata.h;arch22 → *_arch22_metadata.h | ### 本分支变更统计 | 项 | 数量 | |----|-----:| | 变更文件 | **196** | | 行变更 | +375 / -797 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10499 | 1 个月前 | |
整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10499 merge clear_repeat_h_29 into master 整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按**安装重名**头文件规范,完成 **PR-3:其余算子 / 3rd 碰撞 / 3.7 类消歧**(控变更文件数 < 200),消除安装包内跨算子同名头冲突。 **方法**:低风险只改次要副本——权威树 mc2/3rd/template_linear_algebra、attention/common、mc2/common 等保留原名;次要侧加算子/组件前缀(kda_ / msa_ / gmm_ / mrs_v2_ / agm_v2_ / apace_ / wq_ / mararn_ 等)。同步更新 #include、\file、include guard。无业务逻辑变更。禁止软链接。 ### 安装分类规则(节选,本批相关) | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 3.3 | atvoss submodule 多份可见 | 否 | 不解决(归需屏蔽) | | 3.4 | aclnn level2 双路径兼容 | 否 | 330 废弃(归需屏蔽) | | 3.7 | transformer 误拷贝 math | 是 | 本仓特化拷贝改名消歧(无法直接删改用 math) | | 3.9 | 仓内非对外同名拷贝 | 是 | 次要侧改名 / 去重 | 本批实际:**3.9** + **3.7 消歧** + 同名不同实现亦改名;权威/公共树保留原名。 ### 范围与结果 | 项 | 说明 | |----|------| | 范围 | 仍需整改清单中除 common.h / moe_common.h / moe_v2_common.h 外的成对/跨组件/TLA 次要副本 | | 映射条数 | **43**(pr3_remap_batch1.tsv + pr3_remap_batch2.tsv)+ nd2nz 去重 + masked_select 改名 | | 权威 TLA 包内多路径 | dispatch_policy.hpp / tile_copy.hpp 等同组件备案,**本批不改** | | 变更文件数 | **196**(< 200 硬约束) | ### 命名约定 | 场景 | 约定 | |------|------| | chunk_kda / msa 次要 | kda_* / msa_* | | matmul_reduce_scatter_v2 | mrs_v2_* | | all_gather_matmul_v2 | agm_v2_* | | gmm / apace / weight_quant | gmm_* / apace_* / wq_* | | matmul_all_reduce_add_rms_norm | mararn_* | | include guard | 与文件名前缀一致(如 CATLASS_KDA_*) | | 设备属性宏 | **保持** CATLASS_DEVICE 等原名(不随文件前缀改) | ### 其它处置 | 项 | 处置 | |----|------| | masked_select_v3.h | → moe_token_permute_masked_select_v3.h(算子特化,消歧 basename) | | batch_mat_mul_nd2nz.h | 删 mat_mul_v3 副本,改为 include batch_mat_mul_v3 侧(内容相同) | | sparse_flash_mla metadata | root → *_kernel_metadata.h;arch22 → *_arch22_metadata.h | ### 本分支变更统计 | 项 | 数量 | |----|-----:| | 变更文件 | **196** | | 行变更 | +375 / -797 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10499 | 1 个月前 | |
fix(mc2): 修复MC2算子错误日志规范问题 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !10297 merge fix/mc2-log into master fix(mc2): 修复MC2算子错误日志规范问题 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 依据 CANN 日志规范评测报告,整改 MC2 系列算子的错误日志文案,共涉及 53 个文件: - 修复日志文案拼写错误(如 AlGaterMatmul、excute、Recieved、nulld、workspce 等) - 修复语法错误与格式串截断导致的占位符失效(如 moe_distribute_dispatch_v2_tiling.cpp 中多段字符串字面量拆分问题) - 移除日志中的内部敏感词 inner error - 中文日志文案改为英文(含全角冒号改半角) - 自定义打印(printf/std::cerr/std::cout)改为统一日志接口 - 删除冗余重复日志 ## 关联的Issue Fixes #4433 ## 测试 仅修改日志文案与格式串,未涉及算子计算逻辑变更。日志格式串修改已逐一核对占位符与实际参数匹配。 ## 文档更新 无 ## 类型标签 - [x] 🐛 Bug 修复 - [x] 🧹 代码清理 See merge request: cann/ops-transformer!10297 | 1 个月前 | |
整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10499 merge clear_repeat_h_29 into master 整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按**安装重名**头文件规范,完成 **PR-3:其余算子 / 3rd 碰撞 / 3.7 类消歧**(控变更文件数 < 200),消除安装包内跨算子同名头冲突。 **方法**:低风险只改次要副本——权威树 mc2/3rd/template_linear_algebra、attention/common、mc2/common 等保留原名;次要侧加算子/组件前缀(kda_ / msa_ / gmm_ / mrs_v2_ / agm_v2_ / apace_ / wq_ / mararn_ 等)。同步更新 #include、\file、include guard。无业务逻辑变更。禁止软链接。 ### 安装分类规则(节选,本批相关) | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 3.3 | atvoss submodule 多份可见 | 否 | 不解决(归需屏蔽) | | 3.4 | aclnn level2 双路径兼容 | 否 | 330 废弃(归需屏蔽) | | 3.7 | transformer 误拷贝 math | 是 | 本仓特化拷贝改名消歧(无法直接删改用 math) | | 3.9 | 仓内非对外同名拷贝 | 是 | 次要侧改名 / 去重 | 本批实际:**3.9** + **3.7 消歧** + 同名不同实现亦改名;权威/公共树保留原名。 ### 范围与结果 | 项 | 说明 | |----|------| | 范围 | 仍需整改清单中除 common.h / moe_common.h / moe_v2_common.h 外的成对/跨组件/TLA 次要副本 | | 映射条数 | **43**(pr3_remap_batch1.tsv + pr3_remap_batch2.tsv)+ nd2nz 去重 + masked_select 改名 | | 权威 TLA 包内多路径 | dispatch_policy.hpp / tile_copy.hpp 等同组件备案,**本批不改** | | 变更文件数 | **196**(< 200 硬约束) | ### 命名约定 | 场景 | 约定 | |------|------| | chunk_kda / msa 次要 | kda_* / msa_* | | matmul_reduce_scatter_v2 | mrs_v2_* | | all_gather_matmul_v2 | agm_v2_* | | gmm / apace / weight_quant | gmm_* / apace_* / wq_* | | matmul_all_reduce_add_rms_norm | mararn_* | | include guard | 与文件名前缀一致(如 CATLASS_KDA_*) | | 设备属性宏 | **保持** CATLASS_DEVICE 等原名(不随文件前缀改) | ### 其它处置 | 项 | 处置 | |----|------| | masked_select_v3.h | → moe_token_permute_masked_select_v3.h(算子特化,消歧 basename) | | batch_mat_mul_nd2nz.h | 删 mat_mul_v3 副本,改为 include batch_mat_mul_v3 侧(内容相同) | | sparse_flash_mla metadata | root → *_kernel_metadata.h;arch22 → *_arch22_metadata.h | ### 本分支变更统计 | 项 | 数量 | |----|-----:| | 变更文件 | **196** | | 行变更 | +375 / -797 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10499 | 1 个月前 | |
fix(mega_moe): 修复h32元素对齐时量化记录携带UB残留导致输出成块清零的问题 Co-authored-by: Costanza_bai<gemengbai@huawei.com> # message auto-generated for no-merge-commit merge: !10514 merge fake_pass into master fix(mega_moe): 修复h32元素对齐时量化记录携带UB残留导致输出成块清零的问题 Created-by: Costanza_Bai Commit-by: Costanza_bai Merged-by: cann-robot Description: 【问题描述】 arch35 MTE路径(wave a8w8/a8w4/a4w4及base编排)下,h%64==32(如h=4128)且同输入 连续调用loop_acc_time>1时,融合算子输出x出现成块精确0(实测2048x4128输出中单卡 最多74个整行为0),且区块按quant阶段AIV分核边界对齐、跨运行逐行确定复现; loop_acc_time=1或h%64==0(如h=4160)不复现。因测试三角比较的聚合指标被海量正常 点稀释,该缺陷曾以"精度PASS"假通过形式漏过(对应用例:test_mega_stc_suite.xlsx stc表第128行 Root_Localization)。 【根因分析】 h%64==32时每token的e8m0 scale数为奇数(CeilDiv(4128,32)=129),而GMM侧按 64元素K块+scale成对(CeilDiv(h,64)*2=130)消费定长量化记录,暴露出量化计算 不覆盖、却会进入记录或参与计算的三处跨launch UB残留: 1. xIn尾部残留:buffer按CeilAlign(h,128)分配,DataCopyPad每token只载入h个有效 元素,尾部残留被ComputeMaxExp尾块(mask激活lane0-31,经deinterleave覆盖 元素[h-32,h+32))卷入尾部scale组指数统计; 2. xOut scale补偶槽(第130个scale字节):ComputeScale掩码写止于scale[128], 该槽永不被写入,随定长记录原样写出; 3. mxTempTensor的halfScale补偶槽:同样永不被ComputeScale写入,却被 ComputeFp8Data尾块经E2B广播进[h,h+32)位置的乘法。 残留呈NaN/大指数位型时(跨迭代复用UB的上一轮遗留即可满足),GMM整行输出被污染 为NaN,unpermute累加后NaN经Cast(溢出模式0)冲成精确0。首轮UB近似全零故 loop_acc=1不显形;h%64==0时scale数为偶、K尾块全有效故免疫。 【修改方案】 QuantizeLocalTokens量化循环前,将xIn0/1、xOut0/1与mxTempTensor五个UB buffer 一次性Duplicate清零(附PipeBarrier<PIPE_V>+V→MTE2同步)。有效区随后每token 均被完整覆写,三处残留位从此恒为确定的0(e8m0 0x00=2^-127、数据0、halfScale 0, 均为良性),为构造性封死而非依赖残留内容。 【影响分析】 仅影响arch35 MTE路径(QuantizeLocalTokens调用方为wave系与arch35 base编排); layered/URMA与arch22不经过该函数。h%64==0形状下清零区域本就会被完整覆写, 行为零变化。一次性清零约26KB UB,性能开销可忽略。 See merge request: cann/ops-transformer!10514 | 1 个月前 | |
torch extension整改成分布式 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !9712 merge torch_extension_split into master torch extension整改成分布式 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 ops-transformer仓支持各个算子独立编译torch_extention,并将torch_extension从集中式改成分布式(算子的文件分布到算子源码目录下新建的torch_extension文件夹) ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4502 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9712 | 1 个月前 | |
trans仓打标签合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !9424 merge master into master trans仓打标签合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 ffn gmm mamba / causal_conv1d mc2 mhc这5个仓的aclnn文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 ffn gmm mamba / causal_conv1d mc2 mhc ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9424 | 2 个月前 | |
整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10499 merge clear_repeat_h_29 into master 整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按**安装重名**头文件规范,完成 **PR-3:其余算子 / 3rd 碰撞 / 3.7 类消歧**(控变更文件数 < 200),消除安装包内跨算子同名头冲突。 **方法**:低风险只改次要副本——权威树 mc2/3rd/template_linear_algebra、attention/common、mc2/common 等保留原名;次要侧加算子/组件前缀(kda_ / msa_ / gmm_ / mrs_v2_ / agm_v2_ / apace_ / wq_ / mararn_ 等)。同步更新 #include、\file、include guard。无业务逻辑变更。禁止软链接。 ### 安装分类规则(节选,本批相关) | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 3.3 | atvoss submodule 多份可见 | 否 | 不解决(归需屏蔽) | | 3.4 | aclnn level2 双路径兼容 | 否 | 330 废弃(归需屏蔽) | | 3.7 | transformer 误拷贝 math | 是 | 本仓特化拷贝改名消歧(无法直接删改用 math) | | 3.9 | 仓内非对外同名拷贝 | 是 | 次要侧改名 / 去重 | 本批实际:**3.9** + **3.7 消歧** + 同名不同实现亦改名;权威/公共树保留原名。 ### 范围与结果 | 项 | 说明 | |----|------| | 范围 | 仍需整改清单中除 common.h / moe_common.h / moe_v2_common.h 外的成对/跨组件/TLA 次要副本 | | 映射条数 | **43**(pr3_remap_batch1.tsv + pr3_remap_batch2.tsv)+ nd2nz 去重 + masked_select 改名 | | 权威 TLA 包内多路径 | dispatch_policy.hpp / tile_copy.hpp 等同组件备案,**本批不改** | | 变更文件数 | **196**(< 200 硬约束) | ### 命名约定 | 场景 | 约定 | |------|------| | chunk_kda / msa 次要 | kda_* / msa_* | | matmul_reduce_scatter_v2 | mrs_v2_* | | all_gather_matmul_v2 | agm_v2_* | | gmm / apace / weight_quant | gmm_* / apace_* / wq_* | | matmul_all_reduce_add_rms_norm | mararn_* | | include guard | 与文件名前缀一致(如 CATLASS_KDA_*) | | 设备属性宏 | **保持** CATLASS_DEVICE 等原名(不随文件前缀改) | ### 其它处置 | 项 | 处置 | |----|------| | masked_select_v3.h | → moe_token_permute_masked_select_v3.h(算子特化,消歧 basename) | | batch_mat_mul_nd2nz.h | 删 mat_mul_v3 副本,改为 include batch_mat_mul_v3 侧(内容相同) | | sparse_flash_mla metadata | root → *_kernel_metadata.h;arch22 → *_arch22_metadata.h | ### 本分支变更统计 | 项 | 数量 | |----|-----:| | 变更文件 | **196** | | 行变更 | +375 / -797 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10499 | 1 个月前 | |
整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10499 merge clear_repeat_h_29 into master 整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按**安装重名**头文件规范,完成 **PR-3:其余算子 / 3rd 碰撞 / 3.7 类消歧**(控变更文件数 < 200),消除安装包内跨算子同名头冲突。 **方法**:低风险只改次要副本——权威树 mc2/3rd/template_linear_algebra、attention/common、mc2/common 等保留原名;次要侧加算子/组件前缀(kda_ / msa_ / gmm_ / mrs_v2_ / agm_v2_ / apace_ / wq_ / mararn_ 等)。同步更新 #include、\file、include guard。无业务逻辑变更。禁止软链接。 ### 安装分类规则(节选,本批相关) | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 3.3 | atvoss submodule 多份可见 | 否 | 不解决(归需屏蔽) | | 3.4 | aclnn level2 双路径兼容 | 否 | 330 废弃(归需屏蔽) | | 3.7 | transformer 误拷贝 math | 是 | 本仓特化拷贝改名消歧(无法直接删改用 math) | | 3.9 | 仓内非对外同名拷贝 | 是 | 次要侧改名 / 去重 | 本批实际:**3.9** + **3.7 消歧** + 同名不同实现亦改名;权威/公共树保留原名。 ### 范围与结果 | 项 | 说明 | |----|------| | 范围 | 仍需整改清单中除 common.h / moe_common.h / moe_v2_common.h 外的成对/跨组件/TLA 次要副本 | | 映射条数 | **43**(pr3_remap_batch1.tsv + pr3_remap_batch2.tsv)+ nd2nz 去重 + masked_select 改名 | | 权威 TLA 包内多路径 | dispatch_policy.hpp / tile_copy.hpp 等同组件备案,**本批不改** | | 变更文件数 | **196**(< 200 硬约束) | ### 命名约定 | 场景 | 约定 | |------|------| | chunk_kda / msa 次要 | kda_* / msa_* | | matmul_reduce_scatter_v2 | mrs_v2_* | | all_gather_matmul_v2 | agm_v2_* | | gmm / apace / weight_quant | gmm_* / apace_* / wq_* | | matmul_all_reduce_add_rms_norm | mararn_* | | include guard | 与文件名前缀一致(如 CATLASS_KDA_*) | | 设备属性宏 | **保持** CATLASS_DEVICE 等原名(不随文件前缀改) | ### 其它处置 | 项 | 处置 | |----|------| | masked_select_v3.h | → moe_token_permute_masked_select_v3.h(算子特化,消歧 basename) | | batch_mat_mul_nd2nz.h | 删 mat_mul_v3 副本,改为 include batch_mat_mul_v3 侧(内容相同) | | sparse_flash_mla metadata | root → *_kernel_metadata.h;arch22 → *_arch22_metadata.h | ### 本分支变更统计 | 项 | 数量 | |----|-----:| | 变更文件 | **196** | | 行变更 | +375 / -797 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10499 | 1 个月前 | |
fix(mc2): standardize moe dispatch combine error logs Co-authored-by: SuperYuan<zhangziyuan11@huawei.com> # message auto-generated for no-merge-commit merge: !10048 merge fix/mega-moe-op-loge into master fix(mc2): standardize moe dispatch combine error logs Created-by: SuperYuan Commit-by: SuperYuan Merged-by: cann-robot Description: ## 描述 dispatch、combine、megaMoe的日志整改 1. 将可归类的普通 OP_LOGE 转换为结构化错误日志,输出稳定的错误码和错误字段; 2. 准确标识错误所属的输入、属性、shape、dtype、format 或 TensorList; 3. 保留真实错误值、期望值以及必要的上下文; 修改原则: - 缺少必选输入:使用 OP_LOGE_WITH_INVALID_INPUT; - 属性值错误:使用 OP_LOGE_WITH_INVALID_ATTR; - 属性列表长度错误:使用 OP_LOGE_WITH_INVALID_ATTR_SIZE; - shape、shape 维数、dtype、format、TensorList 数量错误:使用对应的 OP_LOGE_FOR_INVALID_* 宏; - 框架内部对象获取失败、helper 失败等不适合用户参数错误码的场景:使用 OP_LOGE_WITHOUT_REPORT 保留内部诊断信息。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10048 | 2 个月前 | |
trans仓打标签合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !9424 merge master into master trans仓打标签合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 ffn gmm mamba / causal_conv1d mc2 mhc这5个仓的aclnn文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 ffn gmm mamba / causal_conv1d mc2 mhc ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9424 | 2 个月前 | |
torch extension整改成分布式 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !9712 merge torch_extension_split into master torch extension整改成分布式 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 ops-transformer仓支持各个算子独立编译torch_extention,并将torch_extension从集中式改成分布式(算子的文件分布到算子源码目录下新建的torch_extension文件夹) ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4502 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9712 | 1 个月前 | |
整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10499 merge clear_repeat_h_29 into master 整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按**安装重名**头文件规范,完成 **PR-3:其余算子 / 3rd 碰撞 / 3.7 类消歧**(控变更文件数 < 200),消除安装包内跨算子同名头冲突。 **方法**:低风险只改次要副本——权威树 mc2/3rd/template_linear_algebra、attention/common、mc2/common 等保留原名;次要侧加算子/组件前缀(kda_ / msa_ / gmm_ / mrs_v2_ / agm_v2_ / apace_ / wq_ / mararn_ 等)。同步更新 #include、\file、include guard。无业务逻辑变更。禁止软链接。 ### 安装分类规则(节选,本批相关) | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 3.3 | atvoss submodule 多份可见 | 否 | 不解决(归需屏蔽) | | 3.4 | aclnn level2 双路径兼容 | 否 | 330 废弃(归需屏蔽) | | 3.7 | transformer 误拷贝 math | 是 | 本仓特化拷贝改名消歧(无法直接删改用 math) | | 3.9 | 仓内非对外同名拷贝 | 是 | 次要侧改名 / 去重 | 本批实际:**3.9** + **3.7 消歧** + 同名不同实现亦改名;权威/公共树保留原名。 ### 范围与结果 | 项 | 说明 | |----|------| | 范围 | 仍需整改清单中除 common.h / moe_common.h / moe_v2_common.h 外的成对/跨组件/TLA 次要副本 | | 映射条数 | **43**(pr3_remap_batch1.tsv + pr3_remap_batch2.tsv)+ nd2nz 去重 + masked_select 改名 | | 权威 TLA 包内多路径 | dispatch_policy.hpp / tile_copy.hpp 等同组件备案,**本批不改** | | 变更文件数 | **196**(< 200 硬约束) | ### 命名约定 | 场景 | 约定 | |------|------| | chunk_kda / msa 次要 | kda_* / msa_* | | matmul_reduce_scatter_v2 | mrs_v2_* | | all_gather_matmul_v2 | agm_v2_* | | gmm / apace / weight_quant | gmm_* / apace_* / wq_* | | matmul_all_reduce_add_rms_norm | mararn_* | | include guard | 与文件名前缀一致(如 CATLASS_KDA_*) | | 设备属性宏 | **保持** CATLASS_DEVICE 等原名(不随文件前缀改) | ### 其它处置 | 项 | 处置 | |----|------| | masked_select_v3.h | → moe_token_permute_masked_select_v3.h(算子特化,消歧 basename) | | batch_mat_mul_nd2nz.h | 删 mat_mul_v3 副本,改为 include batch_mat_mul_v3 侧(内容相同) | | sparse_flash_mla metadata | root → *_kernel_metadata.h;arch22 → *_arch22_metadata.h | ### 本分支变更统计 | 项 | 数量 | |----|-----:| | 变更文件 | **196** | | 行变更 | +375 / -797 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10499 | 1 个月前 | |
整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10499 merge clear_repeat_h_29 into master 整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按**安装重名**头文件规范,完成 **PR-3:其余算子 / 3rd 碰撞 / 3.7 类消歧**(控变更文件数 < 200),消除安装包内跨算子同名头冲突。 **方法**:低风险只改次要副本——权威树 mc2/3rd/template_linear_algebra、attention/common、mc2/common 等保留原名;次要侧加算子/组件前缀(kda_ / msa_ / gmm_ / mrs_v2_ / agm_v2_ / apace_ / wq_ / mararn_ 等)。同步更新 #include、\file、include guard。无业务逻辑变更。禁止软链接。 ### 安装分类规则(节选,本批相关) | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 3.3 | atvoss submodule 多份可见 | 否 | 不解决(归需屏蔽) | | 3.4 | aclnn level2 双路径兼容 | 否 | 330 废弃(归需屏蔽) | | 3.7 | transformer 误拷贝 math | 是 | 本仓特化拷贝改名消歧(无法直接删改用 math) | | 3.9 | 仓内非对外同名拷贝 | 是 | 次要侧改名 / 去重 | 本批实际:**3.9** + **3.7 消歧** + 同名不同实现亦改名;权威/公共树保留原名。 ### 范围与结果 | 项 | 说明 | |----|------| | 范围 | 仍需整改清单中除 common.h / moe_common.h / moe_v2_common.h 外的成对/跨组件/TLA 次要副本 | | 映射条数 | **43**(pr3_remap_batch1.tsv + pr3_remap_batch2.tsv)+ nd2nz 去重 + masked_select 改名 | | 权威 TLA 包内多路径 | dispatch_policy.hpp / tile_copy.hpp 等同组件备案,**本批不改** | | 变更文件数 | **196**(< 200 硬约束) | ### 命名约定 | 场景 | 约定 | |------|------| | chunk_kda / msa 次要 | kda_* / msa_* | | matmul_reduce_scatter_v2 | mrs_v2_* | | all_gather_matmul_v2 | agm_v2_* | | gmm / apace / weight_quant | gmm_* / apace_* / wq_* | | matmul_all_reduce_add_rms_norm | mararn_* | | include guard | 与文件名前缀一致(如 CATLASS_KDA_*) | | 设备属性宏 | **保持** CATLASS_DEVICE 等原名(不随文件前缀改) | ### 其它处置 | 项 | 处置 | |----|------| | masked_select_v3.h | → moe_token_permute_masked_select_v3.h(算子特化,消歧 basename) | | batch_mat_mul_nd2nz.h | 删 mat_mul_v3 副本,改为 include batch_mat_mul_v3 侧(内容相同) | | sparse_flash_mla metadata | root → *_kernel_metadata.h;arch22 → *_arch22_metadata.h | ### 本分支变更统计 | 项 | 数量 | |----|-----:| | 变更文件 | **196** | | 行变更 | +375 / -797 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10499 | 1 个月前 | |
fix(mc2): 修复MC2算子错误日志规范问题 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !10297 merge fix/mc2-log into master fix(mc2): 修复MC2算子错误日志规范问题 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 依据 CANN 日志规范评测报告,整改 MC2 系列算子的错误日志文案,共涉及 53 个文件: - 修复日志文案拼写错误(如 AlGaterMatmul、excute、Recieved、nulld、workspce 等) - 修复语法错误与格式串截断导致的占位符失效(如 moe_distribute_dispatch_v2_tiling.cpp 中多段字符串字面量拆分问题) - 移除日志中的内部敏感词 inner error - 中文日志文案改为英文(含全角冒号改半角) - 自定义打印(printf/std::cerr/std::cout)改为统一日志接口 - 删除冗余重复日志 ## 关联的Issue Fixes #4433 ## 测试 仅修改日志文案与格式串,未涉及算子计算逻辑变更。日志格式串修改已逐一核对占位符与实际参数匹配。 ## 文档更新 无 ## 类型标签 - [x] 🐛 Bug 修复 - [x] 🧹 代码清理 See merge request: cann/ops-transformer!10297 | 1 个月前 | |
fix(mc2): 修复MC2算子错误日志规范问题 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !10297 merge fix/mc2-log into master fix(mc2): 修复MC2算子错误日志规范问题 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 依据 CANN 日志规范评测报告,整改 MC2 系列算子的错误日志文案,共涉及 53 个文件: - 修复日志文案拼写错误(如 AlGaterMatmul、excute、Recieved、nulld、workspce 等) - 修复语法错误与格式串截断导致的占位符失效(如 moe_distribute_dispatch_v2_tiling.cpp 中多段字符串字面量拆分问题) - 移除日志中的内部敏感词 inner error - 中文日志文案改为英文(含全角冒号改半角) - 自定义打印(printf/std::cerr/std::cout)改为统一日志接口 - 删除冗余重复日志 ## 关联的Issue Fixes #4433 ## 测试 仅修改日志文案与格式串,未涉及算子计算逻辑变更。日志格式串修改已逐一核对占位符与实际参数匹配。 ## 文档更新 无 ## 类型标签 - [x] 🐛 Bug 修复 - [x] 🧹 代码清理 See merge request: cann/ops-transformer!10297 | 1 个月前 | |
feat(moe_ep_combine): 拆分combine为moe_ep_combine和moe_ep_combine_epilogue Co-authored-by: Shawn Lee<lixi8@huawei.com> # message auto-generated for no-merge-commit merge: !10249 merge master_combine_epilogue_0818 into master feat(moe_ep_combine): 拆分combine为moe_ep_combine和moe_ep_combine_epilogue Created-by: l00858142 Commit-by: l00858142;Shawn Lee Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> moe_ep_combine(发送阶段): - 只保留SendPhaseExpertToToken,发送expert输出到远端rank的HCCL Window - 移除combined_x/combined_topk_weights输出,改为无输出 - kernel entry移除输出GM_ADDR参数 moe_ep_combine_epilogue(接收+归约阶段,新增): - 从原始combine kernel提取RecvPhaseReduce/ProcessTopKToken/WaitDispatch/BuffInit - 输入: context, topk_idx; 输出: combined_x, combined_topk_weights(optional) - 新建op_def/op_api/op_tiling/op_kernel完整工程 - tiling计算combineStateWinOffset/combineDataWinOffset与combine保持一致 elastic_buffer.cpp: - MoeEpCombine改为void(仅发送),MoeEpCombineEpilogue返回tuple(接收+归约) - pybind11注册moe_ep_combine_epilogue elastic_buffer.py: - combine()预分配输出后依次调用moe_ep_combine和moe_ep_combine_epilogue ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [x] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10249 | 1 个月前 | |
feat(moe_ep_combine): 拆分combine为moe_ep_combine和moe_ep_combine_epilogue Co-authored-by: Shawn Lee<lixi8@huawei.com> # message auto-generated for no-merge-commit merge: !10249 merge master_combine_epilogue_0818 into master feat(moe_ep_combine): 拆分combine为moe_ep_combine和moe_ep_combine_epilogue Created-by: l00858142 Commit-by: l00858142;Shawn Lee Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> moe_ep_combine(发送阶段): - 只保留SendPhaseExpertToToken,发送expert输出到远端rank的HCCL Window - 移除combined_x/combined_topk_weights输出,改为无输出 - kernel entry移除输出GM_ADDR参数 moe_ep_combine_epilogue(接收+归约阶段,新增): - 从原始combine kernel提取RecvPhaseReduce/ProcessTopKToken/WaitDispatch/BuffInit - 输入: context, topk_idx; 输出: combined_x, combined_topk_weights(optional) - 新建op_def/op_api/op_tiling/op_kernel完整工程 - tiling计算combineStateWinOffset/combineDataWinOffset与combine保持一致 elastic_buffer.cpp: - MoeEpCombine改为void(仅发送),MoeEpCombineEpilogue返回tuple(接收+归约) - pybind11注册moe_ep_combine_epilogue elastic_buffer.py: - combine()预分配输出后依次调用moe_ep_combine和moe_ep_combine_epilogue ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [x] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10249 | 1 个月前 | |
dispatch&&combine del drain no cqe Co-authored-by: Shawn Lee<lixi8@huawei.com> # message auto-generated for no-merge-commit merge: !9977 merge master_del_drain into master dispatch&&combine del drain no cqe Created-by: l00858142 Commit-by: Shawn Lee Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [x] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9977 | 2 个月前 | |
optimize hybrid mode of dispatch Co-authored-by: zhong-zixin<zhongzixin@huawei.com> # message auto-generated for no-merge-commit merge: !9781 merge hybrid-perf-clean into master optimize hybrid mode of dispatch Created-by: zhong-zixin Commit-by: zhong-zixin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. 整理跨超节点相关的参数、命名以及win区和workspace的内存布局。 2. 收到跨超节点数据后立即向本节点内的目标卡转发,不再等所有跨超数据到齐,使得跨超节点发送和节点内转发可以同时进行,减少全核等待。 3. 删除转发过程中不再需要的中间记录和计数空间,降低内存占用。 4. 让计数和对应数据由同一个核发送,避免多个核同时使用同一条通信链路。 5. 修正通知地址、状态同步和win区预留计算,并清理无用代码。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue #4238 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 本地验证,二级冒烟 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [x] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: # PR #9781 检视报告 ## PR 信息 | 项目 | 内容 | |------|------| | 标题 | optimize hybrid mode of dispatch | | 作者 | zhong-zixin | | 分支 | hybrid-perf-clean → master | | 状态 | Ready | | 标签 | api-check-failed, ci-pipeline-passed, stat/needs-squash | | PR 描述 | 空(模板未填写) | ## 变更概述 本 PR 对 mc2/moe_ep_dispatch 和 mc2/moe_ep_combine 系列算子的 hybrid 模式进行性能优化和重构,涉及 12 个文件。主要变更分为三类: 1. **命名规范化** — DIRECT_MODE/HYBRID_MODE → NETWORK_DIRECT/NETWORK_HYBRID,topoType → requestedNetworkMode,rankSizePerServer → rankNumPerServer,numScaleoutRanks → serverNum,numAivStage1/2 → scaleoutAivNum/scaleupAivNum 2. **Tiling 结构体重组** — 将 MoeEpDispatchInfo 中的扁平字段拆分为 hybrid、window、workspace 三个子结构体;scalesBytes/perSlotBytes 从 MoeEpCommonTilingData 移至 MoeEpDispatchInfo;combine 和 epilogue 同步精简 3. **Fanout 转发算法重写** — 移除两阶段 BuildFanoutSendEntries → SendFanoutEntries 架构,替换为直接轮询转发的 SendFanoutPayloads,消除中间 fanout entry/count GM workspace --- ## 问题清单 ### P1-02: perSlotQueue_ 双 buffer 流水收益有限 **严重程度:低(性能优化)** **位置:** moe_ep_dispatch_hybrid.h:1667 — InitPreparePayloadsBuffers cpp // 旧代码 tpipe_->InitBuffer(perSlotQueue_, 1, perSlotBytes_); // 新代码 tpipe_->InitBuffer(perSlotQueue_, BUFFER_NUM, perSlotBytes_); // BUFFER_NUM = 2 **评估:** 按合法上限保守计算,Prepare 阶段 UB 峰值约 137.44 KiB,Transfer 阶段约 48.06 KiB,均低于 248 KiB 上限,不存在 UB 越界风险。 实际问题在于:当前 CopyPayloadToLocal 是单 slot 申请、搬运、释放的串行流程,双 buffer 的流水重叠收益不明显。若要发挥 double buffering 的优势,需要配合 CopyPayloadToLocal 的流水化改造(如提前为下一个 slot 申请 buffer),否则双 buffer 仅增加了 UB 占用而未带来对应的性能收益。 **建议:** 若短期无计划改造 CopyPayloadToLocal 流水,可暂保留双 buffer(为后续优化预留空间);若希望立即获得收益,需同步调整搬运逻辑使其能重叠两个 slot 的处理。 --- ## 正面改进 ### P2-01: rsvdCnt == 0 守卫(Bug 修复) **位置:** moe_ep_dispatch_hybrid.h — CalSendCntPerRank 和 CalSendCntPerScaleout cpp GatherMask(tempTensorInt16, rankIdsTensor, maskTensorInt16, true, mask, {1, 1, 0, 0}, rsvdCnt); + if (rsvdCnt == 0U) { + continue; + } **评估:** 当 GatherMask 结果为空(rsvdCnt == 0)时跳过后续 UB 读写操作,避免不必要的 SyncFunc 和 SetValue。正确的守卫。 --- ### P2-02: 移除 WriteRemoteWindowByChunks 和 hcomm.h include(死代码清理) **位置:** moe_ep_dispatch_base.h **评估:** - WriteRemoteWindowByChunks 在整个 codebase 中无调用方,确认为死代码 - hcomm.h include 从 moe_ep_dispatch_base.h 移除,但 moe_ep_dispatch.h 和 moe_ep_dispatch_hybrid.h 中仍保留各自的 hcomm.h include,hcomm_ 类型仍可用 - DISPATCH_CQE_MAX_WRITE_SIZE 常量随 WriteRemoteWindowByChunks 一起移除,无其他引用 --- ### P2-03: 非交互式轮询替代阻塞等待(性能改进) **位置:** moe_ep_dispatch_hybrid.h — SendFanoutPayloads **评估:** 旧的 WaitScaleoutSlotCount/WaitScaleoutSlotReady 是纯阻塞轮询,新代码改为 TryGetScaleoutSlotCount/TryScaleoutSlotReady 非阻塞尝试 + 多源轮转调度(sourceStateTensor_ 记录每源进度)。当某源未就绪时可切换到其他源继续工作,减少 idle 等待。 SOURCE_STATE_UNREAD 的 int64 编码(高 32 位 nextSlot / 低 32 位 slotsLeft)设计正确,GetSourceState/SetSourceState 的位操作一致。 --- ### P2-04: count 发送按通信目标分组(架构改进) **位置:** moe_ep_dispatch_hybrid.h — count 发送相关逻辑 **评估:** 新代码将 count 发送分为两类: 1. **非通信目标 rank** — 由分片核发送 2. **通信目标 rank**(同 server 内 rank + 跨 server proxy rank)— 由后续负责发 payload 的核发送 当前实现仍保持"count 与对应 payload 使用相同 owner 核"的原则,确保每个通信通道只由一个核使用,避免多核竞争同一 HCCL 通道。 --- ## 通用问题 ### api-check-failed 标签 PR 带有 api-check-failed 标签,建议排查 API 检查失败原因并修复后再提交正式检视。 --- ## 总结 | 类别 | 数量 | 明细 | |------|------|------| | 低风险 | 1 | P1-02: 双 buffer 流水收益有限 | | 正面改进 | 4 | P2-01~P2-04 | **建议:** 评估 P1-02 双 buffer 是否需要配合 CopyPayloadToLocal 流水化改造,修复 api-check-failed 后推进正式合入。 See merge request: cann/ops-transformer!9781 | 2 个月前 | |
trans仓打标签合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !9424 merge master into master trans仓打标签合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 ffn gmm mamba / causal_conv1d mc2 mhc这5个仓的aclnn文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 ffn gmm mamba / causal_conv1d mc2 mhc ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9424 | 2 个月前 | |
整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10499 merge clear_repeat_h_29 into master 整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按**安装重名**头文件规范,完成 **PR-3:其余算子 / 3rd 碰撞 / 3.7 类消歧**(控变更文件数 < 200),消除安装包内跨算子同名头冲突。 **方法**:低风险只改次要副本——权威树 mc2/3rd/template_linear_algebra、attention/common、mc2/common 等保留原名;次要侧加算子/组件前缀(kda_ / msa_ / gmm_ / mrs_v2_ / agm_v2_ / apace_ / wq_ / mararn_ 等)。同步更新 #include、\file、include guard。无业务逻辑变更。禁止软链接。 ### 安装分类规则(节选,本批相关) | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 3.3 | atvoss submodule 多份可见 | 否 | 不解决(归需屏蔽) | | 3.4 | aclnn level2 双路径兼容 | 否 | 330 废弃(归需屏蔽) | | 3.7 | transformer 误拷贝 math | 是 | 本仓特化拷贝改名消歧(无法直接删改用 math) | | 3.9 | 仓内非对外同名拷贝 | 是 | 次要侧改名 / 去重 | 本批实际:**3.9** + **3.7 消歧** + 同名不同实现亦改名;权威/公共树保留原名。 ### 范围与结果 | 项 | 说明 | |----|------| | 范围 | 仍需整改清单中除 common.h / moe_common.h / moe_v2_common.h 外的成对/跨组件/TLA 次要副本 | | 映射条数 | **43**(pr3_remap_batch1.tsv + pr3_remap_batch2.tsv)+ nd2nz 去重 + masked_select 改名 | | 权威 TLA 包内多路径 | dispatch_policy.hpp / tile_copy.hpp 等同组件备案,**本批不改** | | 变更文件数 | **196**(< 200 硬约束) | ### 命名约定 | 场景 | 约定 | |------|------| | chunk_kda / msa 次要 | kda_* / msa_* | | matmul_reduce_scatter_v2 | mrs_v2_* | | all_gather_matmul_v2 | agm_v2_* | | gmm / apace / weight_quant | gmm_* / apace_* / wq_* | | matmul_all_reduce_add_rms_norm | mararn_* | | include guard | 与文件名前缀一致(如 CATLASS_KDA_*) | | 设备属性宏 | **保持** CATLASS_DEVICE 等原名(不随文件前缀改) | ### 其它处置 | 项 | 处置 | |----|------| | masked_select_v3.h | → moe_token_permute_masked_select_v3.h(算子特化,消歧 basename) | | batch_mat_mul_nd2nz.h | 删 mat_mul_v3 副本,改为 include batch_mat_mul_v3 侧(内容相同) | | sparse_flash_mla metadata | root → *_kernel_metadata.h;arch22 → *_arch22_metadata.h | ### 本分支变更统计 | 项 | 数量 | |----|-----:| | 变更文件 | **196** | | 行变更 | +375 / -797 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10499 | 1 个月前 | |
fix(mc2): 修复MC2算子错误日志规范问题 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !10297 merge fix/mc2-log into master fix(mc2): 修复MC2算子错误日志规范问题 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 依据 CANN 日志规范评测报告,整改 MC2 系列算子的错误日志文案,共涉及 53 个文件: - 修复日志文案拼写错误(如 AlGaterMatmul、excute、Recieved、nulld、workspce 等) - 修复语法错误与格式串截断导致的占位符失效(如 moe_distribute_dispatch_v2_tiling.cpp 中多段字符串字面量拆分问题) - 移除日志中的内部敏感词 inner error - 中文日志文案改为英文(含全角冒号改半角) - 自定义打印(printf/std::cerr/std::cout)改为统一日志接口 - 删除冗余重复日志 ## 关联的Issue Fixes #4433 ## 测试 仅修改日志文案与格式串,未涉及算子计算逻辑变更。日志格式串修改已逐一核对占位符与实际参数匹配。 ## 文档更新 无 ## 类型标签 - [x] 🐛 Bug 修复 - [x] 🧹 代码清理 See merge request: cann/ops-transformer!10297 | 1 个月前 | |
整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10499 merge clear_repeat_h_29 into master 整改安装重名头文件:权威 TLA / attention/common / mc2/common / math 侧保留;改次要副本 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按**安装重名**头文件规范,完成 **PR-3:其余算子 / 3rd 碰撞 / 3.7 类消歧**(控变更文件数 < 200),消除安装包内跨算子同名头冲突。 **方法**:低风险只改次要副本——权威树 mc2/3rd/template_linear_algebra、attention/common、mc2/common 等保留原名;次要侧加算子/组件前缀(kda_ / msa_ / gmm_ / mrs_v2_ / agm_v2_ / apace_ / wq_ / mararn_ 等)。同步更新 #include、\file、include guard。无业务逻辑变更。禁止软链接。 ### 安装分类规则(节选,本批相关) | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 3.3 | atvoss submodule 多份可见 | 否 | 不解决(归需屏蔽) | | 3.4 | aclnn level2 双路径兼容 | 否 | 330 废弃(归需屏蔽) | | 3.7 | transformer 误拷贝 math | 是 | 本仓特化拷贝改名消歧(无法直接删改用 math) | | 3.9 | 仓内非对外同名拷贝 | 是 | 次要侧改名 / 去重 | 本批实际:**3.9** + **3.7 消歧** + 同名不同实现亦改名;权威/公共树保留原名。 ### 范围与结果 | 项 | 说明 | |----|------| | 范围 | 仍需整改清单中除 common.h / moe_common.h / moe_v2_common.h 外的成对/跨组件/TLA 次要副本 | | 映射条数 | **43**(pr3_remap_batch1.tsv + pr3_remap_batch2.tsv)+ nd2nz 去重 + masked_select 改名 | | 权威 TLA 包内多路径 | dispatch_policy.hpp / tile_copy.hpp 等同组件备案,**本批不改** | | 变更文件数 | **196**(< 200 硬约束) | ### 命名约定 | 场景 | 约定 | |------|------| | chunk_kda / msa 次要 | kda_* / msa_* | | matmul_reduce_scatter_v2 | mrs_v2_* | | all_gather_matmul_v2 | agm_v2_* | | gmm / apace / weight_quant | gmm_* / apace_* / wq_* | | matmul_all_reduce_add_rms_norm | mararn_* | | include guard | 与文件名前缀一致(如 CATLASS_KDA_*) | | 设备属性宏 | **保持** CATLASS_DEVICE 等原名(不随文件前缀改) | ### 其它处置 | 项 | 处置 | |----|------| | masked_select_v3.h | → moe_token_permute_masked_select_v3.h(算子特化,消歧 basename) | | batch_mat_mul_nd2nz.h | 删 mat_mul_v3 副本,改为 include batch_mat_mul_v3 侧(内容相同) | | sparse_flash_mla metadata | root → *_kernel_metadata.h;arch22 → *_arch22_metadata.h | ### 本分支变更统计 | 项 | 数量 | |----|-----:| | 变更文件 | **196** | | 行变更 | +375 / -797 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10499 | 1 个月前 | |
win区状态区数据与dump数据获取的位置相反的bug修复,新增UB链路问题的plog日志检测 Co-authored-by: lu-zhirui<luzhirui2@h-partners.com> # message auto-generated for no-merge-commit merge: !9333 merge dump_analysize_plog_change into master win区状态区数据与dump数据获取的位置相反的bug修复,新增UB链路问题的plog日志检测 Created-by: lu-zhirui Commit-by: lu-zhirui Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: 代码检视报告 项目名称: ops-transformer (mc2/tools/dump_analysis) CANN 版本: CANN商用版 9.0.0 检视日期: 2024-05-24 检视人: CANNBot (AI 智能助手) 涉及文件: mc2/tools/dump_analysis/dump_analysis.py mc2/tools/dump_analysis/log_graph_analysis.py 1. 检视概览 本次代码修改主要包含两大部分: dump_analysis.py: 修复了 dispatch 和 combine 状态区 0区/1区 数据获取及导出时相反的逻辑 Bug;优化了总卡数 (all_card_num) 的获取逻辑;提升了部分异常日志的打印级别。 log_graph_analysis.py: 新增了对特定 RAS 错误码 (0x81b18603) 的全日志全量检索、独立打印及 CSV 导出功能。 整体评价: 代码修改逻辑清晰,定位问题准确。此前检视中提出的逻辑覆盖问题和文件末尾换行符问题均已修复。代码质量良好,建议合入。 2. 详细检视记录 2.1 dump_analysis.py 2.1.1 日志级别提升 位置: 第 683 行 修改内容: logging.warning -> logging.error 检视意见: 通过。当 combine 中有核未等到状态时,属于异常或错误情况,将其提升为 logging.error 更符合日志语义,便于运维人员过滤和定位问题。 2.1.2 总卡数 (all_card_num) 逻辑优化 位置: 第 742-743 行,第 874-878 行 修改内容: 新增了 dis_epworldsize 和 com_epworldsize 的初始化。 新增逻辑:若 win 区获取的 dis_epworldsize 和 com_epworldsize 均不为 0 且相等,则以其为准更新 all_card_num。 检视意见: 通过。此前该逻辑放置在 910B 判断之前,存在被 910B 分支覆盖的风险。修改后将其置于 910B 判断逻辑之后,作为通用兜底/覆盖逻辑,优先级最高,确保了在获取到有效 win 区数据时总卡数的准确性。 2.1.3 状态区 0区/1区 数据反向 Bug 修复 位置: 第 999-1035 行 (dispatch),第 1067-1103 行 (combine),第 1220-1241 行 (CSV导出),第 1305-1326 行 (CSV导出) 修改内容: 新增了状态区实际挂的区域与 win 区获取的区域相反的日志提示。 在 dis_0_1 == 0 分支中,将原本引用的 0区 数据替换为 1区 数据 (int32_dis_1_status / int32_com_1_status),反之亦然。 CSV 导出逻辑同步进行了修正。 检视意见: 通过。修改非常细致,涵盖了变量引用、日志打印文本、WinData 对象构建以及最终的 DataFrame 导出,所有修改保持高度一致,完美修复了由于区域映射相反导致的数据错误。 2.2 log_graph_analysis.py 2.2.1 新增 RAS 错误码全量检索 位置: 第 107 行,第 131-135 行 修改内容: 在返回字典中新增 ras_code_0x81b18603 键。 在 classify_error_lines 中,将 ras_code=0x81b18603 的匹配放在了 [ERROR] 行过滤之前,实现全日志全量检索。 检视意见: 通过。由于该 RAS 错误码可能不以标准的 [ERROR] 格式输出,将其提前进行全量匹配是合理的设计,避免了漏报。 2.2.2 RAS 错误码独立处理与导出 位置: 第 182-183 行,第 245-257 行,第 287 行 修改内容: 新增 handle_ras_code 函数,对检索到的 RAS 错误行进行计数,并限制仅打印前 10 条记录到控制台。 在 dict_to_csv 的映射字典中新增对应描述。 检视意见: 通过。限制打印条数防止了日志爆炸,映射字典的更新保证了 CSV 导出的完整性。逻辑闭环良好。 附加说明: 此前检视发现的文件末尾缺少换行符的问题已在最新代码中修复。 3. 检视结论 项目 结论 代码逻辑正确性 ✅ 逻辑正确,无遗漏 代码规范/格式 ✅ 符合规范,无尾随空格及缺换行问题 功能完整性 ✅ 功能闭环,包含了数据获取、处理、打印及导出 检视结果 🟢 通过,建议合入 See merge request: cann/ops-transformer!9333 | 2 个月前 | |
移除 mc2 op_kernel 摊平机制,统一编译框架与 include 风格 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !7544 merge compile into master 移除 mc2 op_kernel 摊平机制,统一编译框架与 include 风格 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: ## 背景 ops-transformer 出包时 op_kernel/ 目录被扁平化展开:mc2/common/op_kernel/xxx.h → ascendc/common/xxx.h。对于 static_true(JIT 在线编译)算子,kernel 代码需兼容两种环境: 1. **本地预编译**:源码树,op_kernel/ 层级存在 2. **CANN 包 JIT 编译**:扁平化,op_kernel/ 层级消失 ## 治理原则 ### 核心规则 - **static_true 算子**:需要 __has_include 守卫,兼容两种路径 - **static_false 算子**:不需要守卫,直接用本地 op_kernel/ 路径 - **同目录引用**:不需要守卫 ### 三种标准模式 // 1. op_kernel 层 → common #if __has_include("../common/xxx.h") // CANN(无 op_kernel) #include "../common/xxx.h" #else #include "../../common/op_kernel/xxx.h" // 本地(有 op_kernel) #endif // 2. arch 层 → common #if __has_include("../../common/xxx.h") #include "../../common/xxx.h" #else #include "../../../common/op_kernel/xxx.h" #endif // 3. op_kernel 层 → 兄弟算子 #if __has_include("../sibling_op/xxx.h") #include "../sibling_op/xxx.h" #else #include "../../sibling_op/op_kernel/xxx.h" #endif ### 合并原则 同深度、紧邻的 __has_include 块可合并为一个。**不可合并**的情况: - 两个块之间有其他 #include(依赖排序) - 第一个块在 #if defined(__NPU_ARCH__) 条件编译内 - quantize_functions.h 等特殊依赖 ## 已完成工作清单 ### 1. cmake 出包扁平化 - common/: install 目标去掉 op_kernel 中间层 - 3rd/: install 加尾 /(op_kernel → op_kernel/),展开内容 ### 2. __CCE_KT_TEST__ 守卫还原(4 个文件) matmul_all_reduce 下 common.h + 3 个 *_tiling_data.h,被误删的守卫恢复,并修正 else 分支路径(combined.h 的 ../common/ → ../../common/) ### 3. __has_include 路径纠正 - op_kernel 层:../../common/ → ../common/ - arch 层:../../../common/ → ../../common/ - 覆盖全部 static_true 算子(14 个 → 20 个) ### 4. 同级块合并(8 个文件) 相邻同深度的 __has_include 块合并 ### 5. setup/teardown 预加守卫(4 个算子,8 个文件 → 已纳入守护范围) 已加 __has_include 守卫,后续切 static_true 无需修改 .h 文件: - moe_distribute_combine_setup - moe_distribute_dispatch_setup - moe_distribute_combine_teardown - moe_distribute_dispatch_teardown ### 6. 高风险拆分 moe_distribute_combine_v2_quant.h:quantize_functions.h 从合并块拆出,单独守卫 ### 7. 无效守卫清理 - engram_fetch_wait(纯 static_false):移除守卫,直接用本地路径 ### 8. 新增 EP 算子守护(3 个算子) 新增 3 个 static_true 算子: - moe_ep_dispatch(守卫已正确) - moe_ep_combine(修正 __has_include 路径中多余 op_kernel/ 层级) - moe_ep_dispatch_epilogue(同上) ### 9. MegaMoe 跨算子引用加守卫(2 个文件,4 处) mega_moe/op_kernel/arch35/ 下 mega_moe.h + mega_moe_combine_send.h: - quantize_functions.h 加 __has_include 双路径守卫 - 原裸 "moe_distribute_dispatch_v2/op_kernel/..." 路径(依赖 -Imc2/)改为相对路径 ### 10. MegaMoe CMake 清理 - 删除 -I${CMAKE_CURRENT_SOURCE_DIR}/../../(-Imc2/,仅 mega_moe 使用) - 删除 -I${CMAKE_CURRENT_SOURCE_DIR}/../../3rd(目录不存在,无引用) - 新增 mega_moe_apt_depends,声明 apt 编译依赖 mc2/moe_distribute_dispatch_v2 mc2/moe_distribute_dispatch_v3,确保 opc 编译时跨算子头文件可解析 ## 当前 static_true 算子清单(共 17 个已启用 + 3 个守卫待启用 = 20 个) | 算子 | 目录 | 守卫状态 | |------|------|---------| | AttentionToFFN | mc2/attention_to_ffn/ | ✓ | | DistributeBarrier | mc2/distribute_barrier/ | ✓ | | DistributeBarrierExtend | mc2/distribute_barrier_extend/ | ✓(*) | | FFNToAttention | mc2/ffn_to_attention/ | ✓ | | MegaMoe | mc2/mega_moe/ | ✓ | | MoeDistributeCombine | mc2/moe_distribute_combine/ | ✓ | | MoeDistributeCombineAddRmsNorm | mc2/moe_distribute_combine_add_rms_norm/ | ✓(*) | | MoeDistributeCombineSetup | mc2/moe_distribute_combine_setup/ | ✓(†) | | MoeDistributeCombineTeardown | mc2/moe_distribute_combine_teardown/ | ✓ | | MoeDistributeCombineV2 | mc2/moe_distribute_combine_v2/ | ✓ | | MoeDistributeCombineV3 | mc2/moe_distribute_combine_v3/ | ✓(*) | | MoeDistributeDispatch | mc2/moe_distribute_dispatch/ | ✓ | | MoeDistributeDispatchSetup | mc2/moe_distribute_dispatch_setup/ | ✓(†) | | MoeDistributeDispatchTeardown | mc2/moe_distribute_dispatch_teardown/ | ✓(†) | | MoeDistributeDispatchV2 | mc2/moe_distribute_dispatch_v2/ | ✓ | | MoeDistributeDispatchV3 | mc2/moe_distribute_dispatch_v3/ | ✓(*) | | MoeEpCombine | mc2/moe_ep_combine/ | ✓ | | MoeEpDispatch | mc2/moe_ep_dispatch/ | ✓ | | MoeEpDispatchEpilogue | mc2/moe_ep_dispatch_epilogue/ | ✓ | | MoeUpdateExpert | mc2/moe_update_expert/ | ✓ | > (\*) 守卫仅存在于 .cpp 文件,.h 文件无跨目录引用,无需守卫 > (†) 守卫已就位,当前 jitCompile.flag 为 static_false,后续切换不需改 .h 文件 ## 后续开发注意事项 ### 新增算子 1. 确认 jitCompile.flag(在 op_host/*_def.cpp) 2. static_true → 所有跨 common/兄弟算子的 include 加守卫 3. 同目录引用、系统头文件不需要守卫 ### 切换 static_false → static_true 1. 改 jitCompile.flag 为 "static_true" 2. 扫描全部跨算子 include,加 __has_include 守卫 3. 参照已有 setup/teardown 做法 ### 代码审查要点 - op_kernel 层引用 common:是否用了 ../common/(非 ../../common/) - arch 层引用 common:是否用了 ../../common/(非 ../../../) - #else 分支路径是否包含 op_kernel/ - 同目录引用是否被误加了守卫 See merge request: cann/ops-transformer!7544 | 3 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 3 个月前 |