文件最后提交记录最后更新时间
增加matmulAllReduceAddRmsNorm废弃声明 Co-authored-by: 张子渊<zhangziyuan9@h-partners.com> # message auto-generated for no-merge-commit merge: !3728 merge master into master 增加matmulAllReduceAddRmsNorm废弃声明 Created-by: SuperYuan Commit-by: 张子渊 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为即将日落的MatmulAllReduceAddRmsNorm算子增加编译告警 在编译时和第一次运行时,编译器给废弃接口提示告警,告警内容包含推荐替换的接口。 为废弃接口做准备,给用户更完整的接口信息,推荐用户使用正式接口。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> Issue [#1667](https://gitcode.com/cann/ops-transformer/issues/1667) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [x] ❓ 其他,请描述:废弃声明 See merge request: cann/ops-transformer!37281 个月前
mc2 docs fix Co-authored-by: caoqiku<caoqiku1@h-partners.com> # message auto-generated for no-merge-commit merge: !4070 merge mc2_docs_fix into master mc2 docs fix Created-by: cqk1107 Commit-by: caoqiku Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> mc2算子文档更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!40701 个月前
增加matmulAllReduceAddRmsNorm废弃声明 Co-authored-by: 张子渊<zhangziyuan9@h-partners.com> # message auto-generated for no-merge-commit merge: !3728 merge master into master 增加matmulAllReduceAddRmsNorm废弃声明 Created-by: SuperYuan Commit-by: 张子渊 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为即将日落的MatmulAllReduceAddRmsNorm算子增加编译告警 在编译时和第一次运行时,编译器给废弃接口提示告警,告警内容包含推荐替换的接口。 为废弃接口做准备,给用户更完整的接口信息,推荐用户使用正式接口。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> Issue [#1667](https://gitcode.com/cann/ops-transformer/issues/1667) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [x] ❓ 其他,请描述:废弃声明 See merge request: cann/ops-transformer!37281 个月前
move fallback files to op graph lib Co-authored-by: liusixia<liusixia@h-partners.com> # message auto-generated for no-merge-commit merge: !4133 merge master into master move fallback files to op graph lib Created-by: liusixia_gitcode Commit-by: liusixia Merged-by: cann-robot Description: ## 描述 动态图相关:仓内aclnn回调的fallback文件,在内置工程(built-in pkg)下,由ophost.so 改为编入opgraph.so中;自定义工程(custom pkg)下,保持不变。 其中,mc2算子的fallback文件当前均include了依赖tiling的头文件(mc2_log.h),统一将其与tiling解耦,使用mc2_common_log.h。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1844 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!41331 个月前
fix: 修复 cleancode 告警 Co-authored-by: libohao6<libohao3@huawei.com> # message auto-generated for no-merge-commit merge: !5954 merge fix/cleancode-master into master fix: 修复 cleancode 告警 Created-by: libohao6 Commit-by: libohao6 Merged-by: cann-robot Description: ## 描述 修复基础算子主线cleancode问题。 ## 关联的Issue [Bug-Report|缺陷反馈]: MC2基础算子主线存在cleancode问题 #2676 ## 测试 二级冒烟。 ## 文档更新 不涉及。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: # PR #5489 代码检视报告 **PR**: https://gitcode.com/cann/ops-transformer/pull/5489 **标题**: merge 'fix-cleancode-issues' into 'master' **作者**: libohao6 | **范围**: 19 files, +453 -531 | **日期**: 2026-05-21 --- ## 改动分类 | 类型 | 改动数 | 说明 | |------|-------|------| | 删除未使用函数 | 5个 | matmul_util.cpp删3个static函数 + aclnn_matmul_reduce_scatter_v2.cpp删CreateWinTensor | | 删除冗余变量 | 2个 | x1Dtype/biasDtype 在 aclnn_weight_quant_matmul_all_reduce.cpp | | const修饰添加 | 5处 | 多个Tiling函数context参数加const | | 位操作类型修复 | 1处 | int32_t code → uint32_t bitCode | | 魔法数字→常量 | 1处 | alignas(8) → alignas(L2_CACHE_ALIGNMENT) | | 变量重命名 | 多处 | Kernel侧blockLocCoord→blockLocCoord_等; Host侧index→idx/i | | 参数名拼写修正 | 1处 | rcfCfg→rcsCfg | | include guard | 1处 | matmul_reduce_scatter_v2_tiling_common.h | | 头文件清理 | 3处 | 移除冗余#include | | 未使用参数标记 | 5处 | (void)opType等 | | 注释风格更新 | 大量 | 决策树层级注释从======改为差异化标记 | | 代码格式修复 | 多处 | 空格/缩进/换行 | --- ## 假设检验检视结果 ### 1. 删除未使用函数 ✅ PASS **涉及文件**: matmul_util.cpp, aclnn_matmul_reduce_scatter_v2.cpp 删除5个static函数(CheckShapeValidWithTrans、ProcessEmptyTensor、ProcessEmptyTensorWithTrans、GetMatmulOpInfoWithTrans、CreateWinTensor)。均为static,无跨文件引用风险。 | 规范条款 | 检查项 | 结果 | |---------|--------|------| | cpp-secure 5.2 资源泄露防护 | 删除是否遗漏调用点 | ✅ static函数仅文件内可见 | ### 2. const修饰添加 ✅ PASS **涉及文件**: all_gather_matmul_tiling_base.cpp/.h, quant_all_reduce_tiling.cpp, quant_reduce_scatter_tiling.cpp gert::TilingContext *contextconst gert::TilingContext *context。GetNodeName()、GetAttrPointer()等方法为const兼容,头文件声明同步更新。 | 规范条款 | 检查项 | 结果 | |---------|--------|------| | cpp-secure 1.1 静态类型安全 | const修饰是否导致编译错误 | ✅ 方法兼容const | ### 3. 位操作类型修复 ✅ PASS **涉及文件**: matmul_reduce_scatter_v2_aiv_mode_tiling.cpp int32_t codeuint32_t bitCode。对有符号数做右移(>>=)存在符号扩展问题,改为uint32_t消除风险。 | 规范条款 | 检查项 | 结果 | |---------|--------|------| | cpp-secure 2.1 有符号整数不溢出 | int32_t右移符号扩展 | ✅ 修复正确 | | cpp-secure 2.2 无符号整数不回绕 | uint32_t位操作安全 | ✅ | ### 4. 魔法数字→常量 ✅ PASS **涉及文件**: unquant_matmul_all_reduce_tiling_data.h static constexpr size_t L2_CACHE_ALIGNMENT = 8; 替换 alignas(8)。值等价,不影响ABI。 | 规范条款 | 检查项 | 结果 | |---------|--------|------| | cpp-secure 10.4 结构体字段末尾添加 | 常量定义位置 | ✅ 不影响ABI | ### 5. 冗余变量删除 ✅ PASS **涉及文件**: aclnn_weight_quant_matmul_all_reduce.cpp 删除 const auto x1Dtype = x1->GetDataType(); const auto biasDtype = bias->GetDataType();。两变量后续无引用,OP_CHECK_DTYPE_NOT_SAME宏自行获取dtype。 | 规范条款 | 检查项 | 结果 | |---------|--------|------| | cpp-secure 3.1 禁止未初始化变量 | 删除后功能等价 | ✅ | ### 6. 参数名拼写修正 ✅ PASS **涉及文件**: matmul_reduce_scatter_tiling_base.cpp rcfCfgrcsCfg(RCS=ReduceScatter拼写修正)。所有引用已同步替换。 | 规范条款 | 检查项 | 结果 | |---------|--------|------| | MC2 MC2-13 CCU通信数据量限制 | AdjustHCCLLimit逻辑是否保留 | ✅ 256MB限制保留 | ### 7. include guard添加 ✅ PASS **涉及文件**: matmul_reduce_scatter_v2_tiling_common.h 新增 #ifndef MATMUL_REDUCE_SCATTER_V2_TILING_COMMON_H 保护。命名与文件路径一致。 ### 8. 未使用参数标记 ✅ PASS **涉及文件**: quant_reduce_scatter_util_tiling.cpp 添加 (void)opType; (void)context; (void)xDimNum; (void)outputDim; 消除编译器警告。注释声明"Reserved for future extension"。 | 规范条款 | 检查项 | 结果 | |---------|--------|------| | TOPK TOPK-7 外部输入校验 | 校验逻辑是否削弱 | ✅ 未削弱 | ### 9. LOG参数安全 ✅ PASS **涉及文件**: allto_allv_quant_grouped_mat_mul_tiling_base.cpp 循环变量 indexidx/isendCounts[%lu] should be in [0, %lu], but get %lu — 3个%lu对应3个uint64_t(idx, bsk_, sendCounts[idx]),类型和数量匹配。 | 规范条款 | 检查项 | 结果 | |---------|--------|------| | cpp-secure 11.2 参数数量与占位符匹配 | 3个%lu=3个uint64_t | ✅ | | cpp-secure 11.3 参数类型与格式化说明符匹配 | uint64_t用%lu | ✅ | | MC2 MC2-07 专家参数合法性校验 | sendCounts/recvCounts校验完整 | ✅ | ### 10. 头文件清理 ✅ PASS **涉及文件**: matmul_reduce_scatter_tiling_base.h, quant_reduce_scatter_util_tiling.h, all_gather_matmul_tiling_base.h 移除冗余 #include "ops_utils.h"#include "mc2_log.h"。 --- ## 规范条款引用汇总 | 规范来源 | 条款编号 | 条款名称 | 检查结果 | |---------|---------|---------|---------| | cpp-secure.md | 1.1 | 保证静态类型安全 | ✅ | | cpp-secure.md | 2.1 | 有符号整数运算不溢出 | ✅ | | cpp-secure.md | 2.2 | 无符号整数运算不回绕 | ✅ | | cpp-secure.md | 3.1 | 禁止使用未初始化的变量 | ✅ | | cpp-secure.md | 5.2 | 资源泄露防护 | ✅ | | cpp-secure.md | 10.4 | 结构体字段末尾添加 | ✅ | | cpp-secure.md | 11.2 | LOG参数数量与占位符必须匹配 | ✅ | | cpp-secure.md | 11.3 | LOG参数类型与格式化说明符必须匹配 | ✅ | | mc2-specific.md | MC2-07 | 专家参数合法性校验 | ✅ | | mc2-specific.md | MC2-13 | CCU通信数据量限制 | ✅ | | ascendc-topk.md | TOPK-1 | 必须校验函数返回值 | ✅ | | ascendc-topk.md | TOPK-7 | 融合规则/InferShape/Tiling外部输入校验 | ✅ | --- ## 总体结论 **✅ 无问题** — PR #5489 为代码清理类改动,所有10项检视均PASS。改动不引入安全风险,不削弱校验逻辑,规范合规性100%。 See merge request: cann/ops-transformer!59543 天前
mc2算子op_kernel代码文件代际隔离 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !1830 merge agmv2_csv into master mc2算子op_kernel代码文件代际隔离 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!183014 天前
新增matmul_all_reduce_add_rms_norm、matmul_reduce_scatter、matmul_reduce_scatter_v2算子UT用例 Co-authored-by: lixiawei<lixiawei2@h-partners.com> # message auto-generated for no-merge-commit merge: !5702 merge add_case_0518 into master 新增matmul_all_reduce_add_rms_norm、matmul_reduce_scatter、matmul_reduce_scatter_v2算子UT用例 Created-by: lixiawei Commit-by: lixiawei Merged-by: cann-robot Description: ## 描述 新增matmul_all_reduce_add_rms_norm、matmul_reduce_scatter、matmul_reduce_scatter_v2算子UT用例,增加覆盖率 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: ## 代码检视报告 项目名称:ops-transformer UT 用例检视报告 检视模块:mc2/matmul_all_reduce_add_rms_norm, mc2/matmul_reduce_scatter, mc2/matmul_reduce_scatter_v2 下的 9 个 UT 文件 检视人:Turing Team 检视日期:2026-05-21 提交:8cfaa1ca "add ut case" --- 检视概览 ┌────────────────────────┬──────┐ │ 统计项 │ 数值 │ ├────────────────────────┼──────┤ │ 发现问题总数 │ 0 个 │ ├────────────────────────┼──────┤ │ 严重级(CRITICAL)问题 │ 0 个 │ ├────────────────────────┼──────┤ │ 中等级(MEDIUM)问题 │ 0 个 │ ├────────────────────────┼──────┤ │ 轻微级(LOW)问题 │ 0 个 │ └────────────────────────┴──────┘ 检视类别:C++ 安全编码规范(cpp-secure.md)+ C++ 通用编码规范(cpp-general.md) 核心结论:本次提交全部为 UT 测试代码(op_api / op_host),涉及 matmul_all_reduce_add_rms_norm、matmul_reduce_scatter、matmul_reduce_scatter_v2 三个算子的单元测试补充。经逐条对照 Host 侧红线规范和安全编码规范,未发现需修复的安全问题。 See merge request: cann/ops-transformer!570211 天前
mc2新特性开发 Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !500 merge feature_mc2 into master mc2新特性开发 Created-by: xutianze Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!5005 个月前
MC2算子资料完善 Co-authored-by: lyt_claire<luyitong1@huawei.com> # message auto-generated for no-merge-commit merge: !2997 merge mc2AIDD into master MC2算子资料完善 Created-by: lyt_claire Commit-by: lyt_claire Merged-by: cann-robot Description: ## 描述 修改MC2相关算子资料和示例代码 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [X] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!29972 个月前
README.md

MatmulAllReduceAddRmsNorm

产品支持情况

产品 是否支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品 x
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

  • 算子功能:完成mm + all_reduce + add + rms_norm计算。

  • 计算公式:

  • 情景一:

    mm_out=allReduce(x1@x2+bias)mm\_out = allReduce(x1 @ x2 + bias)

    y=mm_out+residualy = mm\_out + residual

    normOut=yRMS(y)∗gamma,RMS(y)=1d∑i=1dyi2+epsilonnormOut = \frac{y}{RMS(y)} * gamma, RMS(y) = \sqrt{\frac{1}{d} \sum_{i=1}^{d} y_{i}^{2} + epsilon}

  • 情景二:

    mmout=allReduce(dequantscale∗(x1int8@x2int8+biasint32))mm_out = allReduce(dequant_scale * (x1_{int8}@x2_{int8} + bias_{int32}))

    y=mmout+residualy = mm_out + residual

    normOut=yRMS(y)∗gamma,RMS(y)=1d∑i=1dyi2+epsilonnormOut = \frac{y}{RMS(y)} * gamma, RMS(y) = \sqrt{\frac{1}{d} \sum_{i=1}^{d} y_{i}^{2} + epsilon}

  • 情景三:

    mm_out=allReduce(x1@(x2∗antiquantscale+antiquantoffset)+bias)mm\_out = allReduce(x1 @ (x2*antiquant_scale + antiquant_offset) + bias)

    y=mm_out+residualy = mm\_out + residual

    normOut=yRMS(y)∗gamma,RMS(y)=1d∑i=1dyi2+epsilonnormOut = \frac{y}{RMS(y)} * gamma, RMS(y) = \sqrt{\frac{1}{d} \sum_{i=1}^{d} y_{i}^{2} + epsilon}

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x1 输入 MatMul左矩阵,即公式中的输入x1。 FLOAT16、BFLOAT16、INT8 ND
x2 输入 MatMul右矩阵,即公式中的输入x2。 FLOAT16、BFLOAT16、INT8、INT4 ND
bias 可选输入 Matmul计算之后的Add项,即公式中的输入bias。 FLOAT16、BFLOAT16、INT32 ND
residual 输入 AddRmsNorm融合算子的残差输入,即公式中的输入residual。 FLOAT16、BFLOAT16 ND
gamma 输入 AddRmsNorm融合算子的RmsNorm计算输入,即公式中的输入gamma。 FLOAT16、BFLOAT16 ND
antiquant_scale 可选输入 公式中的输入antiquant_scale。 FLOAT16、BFLOAT16 ND
antiquant_offset 可选输入 对x2进行伪量化计算的offset参数,公式中的输入antiquant_offset。 FLOAT16、BFLOAT16 ND
dequant_scale 可选输入 mm计算后的全量化系数,公式中的输入dequant_scale。 FLOAT16、BFLOAT16、UINT64、INT64 ND
y 输出
  • mm + all_reduce + add的结果。
FLOAT16、BFLOAT16 ND
norm_out 输出
  • 公式中的输出norm_out。
  • mm + all_reduce + add + rms_norm的结果。
FLOAT16、BFLOAT16 ND
group 属性
  • 通信域名称。
  • 通过Hccl提供的接口“extern HcclResult HcclGetCommName(HcclComm comm, char* commName);”获取,其中commName即为group。
CHAR*、STRING -
reduceOp 可选属性
  • reduce操作类型。
  • 默认值为"sum"。
CHAR*、STRING -
is_trans_a 可选属性
  • 决定x1是否执行矩阵乘前进行转置。
  • 默认值为false。
BOOL -
is_trans_b 可选属性
  • 决定x2是否执行矩阵乘前进行转置。
  • 默认值为false。
  • BOOL -
    commTurn 可选属性
    • 通信数据切分数,即总数据量/单次通信量。
    • 默认值为0。
    INT64 -
    antiquant_group_size 可选属性
    • 伪量化pergroup模式下,对x2进行反量化计算的groupSize输入。
    • 默认值为0。
    INT64 -
    epsilon 可选属性
    • 用于防止除0错误,即公式中的输入epsilon。
    • epsilon取值满足取值范围(0,1)。
    • 默认值为1e-6。
    DOUBLE -

    约束说明

    • 增量场景不使能MC2,全量场景使能MC2
    • 输入x1可为二维或者三维,其shape为(b, s, k)或者(s, k)。x2必须是二维,其shape为(k, n),轴满足mm算子入参要求,k轴相等,m的范围为[1, 2147483647],k的范围为[1, 65535],n的范围为[0, 65535]。bias若非空,bias为一维,其shape为(n)。bias可选,可为空,非空时当前版本仅支持一维输入。
    • 输入residual必须是三维,其shape为(b, s, n),当x1为二维时,residual的(b*s)等于x1的s,不支持非连续的tensor。输入gamma必须是一维,其shape为(n),不支持非连续的tensor。
    • antiquant_scale满足pertensor场景shape为(1),perchannel场景shape为(1,n)/(n),pergroup场景shape为(ceil(k,antiquant_group_size),n)。antiquant_offset可选,可为空,非空时shape与antiquant_scale一致。
    • dequant_scale的shape在pertensor场景为(1),perchannel场景为(n)/(1, n)。
    • 输出y和normOut的维度和数据类型同residual。bias若非空,shape大小与normOut最后一维相等。
    • bias、residual、gamma、y、normOut计算输入的数据类型要一致。
    • antiquant_group_size在不支持pergroup场景时,传入0,在支持pergroup场景时,传入值的范围为[32, min(k-1,INT_MAX)],且为32的倍数。k取值范围与mm接口保持一致。
    • 支持(b*s)、n为0的空tensor,不支持k为0的空tensor。
    • 只支持x2矩阵转置/不转置,x1矩阵支持不转置场景。
    • 属性reduceOp当前版本仅支持输入"sum"。
    • 属性commTurn当前版本仅支持输入0。
    • 支持1、2、4、8卡,并且仅支持hccs链路all mesh组网。
    • Atlas A2 训练系列产品/Atlas A2 推理系列产品:一个模型中的通算融合MC2算子,仅支持相同通信域。类型要一致。

    调用说明

    调用方式 样例代码 说明
    aclnn接口 test_aclnn_matmul_all_reduce_add_rms_norm.cpp 通过aclnnMatmulAllReduceAddRmsNorm接口方式调用MatmulAllReduceAddRmsNorm算子。