| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(dynamic_mx_quant/quant_update_scatter): 修复示例代码及文档中的数据初始化、类型不匹配、注释错误及 aclrtMemcpy 逻辑缺陷 Co-authored-by: yuanbin_22<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !9454 merge fix/dual-axis-mx-quant-example-fix into master fix(dynamic_mx_quant/quant_update_scatter): 修复示例代码及文档中的数据初始化、类型不匹配、注释错误及 aclrtMemcpy 逻辑缺陷 Created-by: yuanbin_22 Commit-by: yuanbin_22 Merged-by: cann-robot Description: ## 描述 本 PR 修复 dynamic_mx_quant 和 quant_update_scatter 系列算子的示例代码和接口文档中存在的多类问题,涵盖数据初始化方式错误、数据类型不匹配、注释错误、aclrtMemcpy 逻辑缺陷、版权头不规范及 dtype 拼写错误。 ### 涉及文件 | 文件 | 变更类型 | +行 | -行 | |------|----------|-----|-----| | index/quant_update_scatter/docs/aclnnInplaceQuantScatter.md | 文档修复 | +4 | -4 | | index/quant_update_scatter/docs/aclnnInplaceQuantScatterV2.md | 文档修复 | +9 | -9 | | index/quant_update_scatter/examples/test_aclnn_inplace_quant_scatter.cpp | 示例修复 | +5 | -5 | | quant/dynamic_mx_quant/docs/aclnnDynamicMxQuant.md | 文档修复 | +2 | -2 | | quant/dynamic_mx_quant/docs/aclnnDynamicMxQuantV2.md | 文档修复 | +2 | -2 | | quant/dynamic_mx_quant/docs/aclnnDynamicMxQuantV3.md | 文档修复 | +2 | -2 | | quant/dynamic_mx_quant/examples/arch35/test_aclnn_dynamic_mx_quant.cpp | 示例修复 | +12 | -13 | | quant/dynamic_mx_quant/examples/arch35/test_aclnn_dynamic_mx_quant_v3.cpp | 示例修复 | +6 | -7 | | quant/dynamic_mx_quant_with_dual_axis/docs/aclnnDynamicMxQuantWithDualAxis.md | 文档修复 | +8 | -6 | | quant/dynamic_mx_quant_with_dual_axis/docs/aclnnDynamicMxQuantWithDualAxisV2.md | 文档修复 | +8 | -6 | | quant/dynamic_mx_quant_with_dual_axis/examples/arch35/test_aclnn_dynamic_mx_quant_with_dual_axis.cpp | 示例修复 | +14 | -15 | ### 变更内容 #### 1. 数据初始化方式修复({count, value} → (count, value)) quant_update_scatter 的示例代码和文档中,std::vector 使用初始化列表语法 {32, 0} 构造,实际创建的是包含两个元素 [32, 0] 的向量,而非32个0。修复为使用构造函数语法 (32, 0) 创建32个值为0的元素。 同时修复 updatesHostData 的数据类型:从 std::vector<float> 改为 std::vector<uint16_t>(FP16),值为 15360(即 FP16 编码的 1.0 = 0x3C00),与 updates 张量声明的 FP16 数据类型匹配。quantZeroPointsHostData 从 float 改为 int32_t,值为 0,与 dtype 声明匹配。 涉及文件:aclnnInplaceQuantScatter.md、aclnnInplaceQuantScatterV2.md、test_aclnn_inplace_quant_scatter.cpp #### 2. mxscaleOutHostData 多余花括号修复 dynamic_mx_quant 系列示例中 std::vector<uint8_t> mxscaleOutHostData = {{128, 0}} 存在多余花括号,虽不报错但不规范,修复为 {128, 0}。 涉及文件:aclnnDynamicMxQuant.md、aclnnDynamicMxQuantV2.md、aclnnDynamicMxQuantV3.md、test_aclnn_dynamic_mx_quant.cpp、test_aclnn_dynamic_mx_quant_v3.cpp #### 3. 注释错误修复(fp4 → fp8) dynamic_mx_quant 系列示例中,输出数据为 float8_e4m3 类型,但注释写为「C语言中无法直接打印fp4的数据」,修复为「fp8」。 涉及文件:上述所有 dynamic_mx_quant 和 dynamic_mx_quant_with_dual_axis 相关文件 #### 4. aclrtMemcpy 逻辑缺陷修复 dynamic_mx_quant_with_dual_axis 系列示例中,两个 aclrtMemcpy(y1Out 和 y2Out)使用 && 运算符连接,导致 y1Out 的拷贝结果被隐式转换为 bool 与 y2Out 的拷贝结果做逻辑与,只返回最终的 bool 结果。此外若 y1Out 拷贝失败,y2Out 拷贝仍会执行,且错误信息合并为一条。 修复为分步执行:先执行 y1Out 拷贝并立即 CHECK_RET 校验,再执行 y2Out 拷贝并单独 CHECK_RET 校验,错误信息分别输出。 涉及文件:aclnnDynamicMxQuantWithDualAxis.md、aclnnDynamicMxQuantWithDualAxisV2.md、test_aclnn_dynamic_mx_quant_with_dual_axis.cpp #### 5. y2OutHostData 期望值修复 dynamic_mx_quant_with_dual_axis 系列示例中,y2OutHostData 的期望值为 {0, 0, 0, 0},与实际计算结果不符。修复为 {0, 120, 120, 120}。 涉及文件:上述 dynamic_mx_quant_with_dual_axis 相关文件 #### 6. dtype 拼写错误修复 aclnnInplaceQuantScatterV2.md 中,dtype 组合表中 FLOAT_E5M2 应为 FLOAT8_E5M2(缺少 8),修复为正确名称。 #### 7. 版权头规范化 dynamic_mx_quant 系列示例代码的版权头将 This program is free software... 放在 Copyright 之前,且多行文本排版不规范。修复为将 Copyright 放在首行,统一许可证文本格式。 涉及文件:test_aclnn_dynamic_mx_quant.cpp、test_aclnn_dynamic_mx_quant_v3.cpp、test_aclnn_dynamic_mx_quant_with_dual_axis.cpp #### 8. 文件末尾换行符补充 多个示例文件末尾缺少换行符,统一补充 \n。 涉及文件:test_aclnn_inplace_quant_scatter.cpp、test_aclnn_dynamic_mx_quant.cpp、test_aclnn_dynamic_mx_quant_with_dual_axis.cpp ## 关联的Issue 关联Issue #5300 ## 测试 - 示例代码编译通过,无类型不匹配告警 - quant_update_scatter 示例数据初始化正确,运行结果符合预期 - dynamic_mx_quant_with_dual_axis aclrtMemcpy 分步校验,错误可独立定位 - 期望值与实际计算结果一致 ## 文档更新 - aclnnInplaceQuantScatter.md、aclnnInplaceQuantScatterV2.md:修复示例代码数据初始化 - aclnnDynamicMxQuant.md、aclnnDynamicMxQuantV2.md、aclnnDynamicMxQuantV3.md:修复注释和花括号 - aclnnDynamicMxQuantWithDualAxis.md、aclnnDynamicMxQuantWithDualAxisV2.md:修复 aclrtMemcpy 逻辑、注释和期望值 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9454 | 15 天前 | |
fix(dynamic_mx_quant/quant_update_scatter): 修复示例代码及文档中的数据初始化、类型不匹配、注释错误及 aclrtMemcpy 逻辑缺陷 Co-authored-by: yuanbin_22<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !9454 merge fix/dual-axis-mx-quant-example-fix into master fix(dynamic_mx_quant/quant_update_scatter): 修复示例代码及文档中的数据初始化、类型不匹配、注释错误及 aclrtMemcpy 逻辑缺陷 Created-by: yuanbin_22 Commit-by: yuanbin_22 Merged-by: cann-robot Description: ## 描述 本 PR 修复 dynamic_mx_quant 和 quant_update_scatter 系列算子的示例代码和接口文档中存在的多类问题,涵盖数据初始化方式错误、数据类型不匹配、注释错误、aclrtMemcpy 逻辑缺陷、版权头不规范及 dtype 拼写错误。 ### 涉及文件 | 文件 | 变更类型 | +行 | -行 | |------|----------|-----|-----| | index/quant_update_scatter/docs/aclnnInplaceQuantScatter.md | 文档修复 | +4 | -4 | | index/quant_update_scatter/docs/aclnnInplaceQuantScatterV2.md | 文档修复 | +9 | -9 | | index/quant_update_scatter/examples/test_aclnn_inplace_quant_scatter.cpp | 示例修复 | +5 | -5 | | quant/dynamic_mx_quant/docs/aclnnDynamicMxQuant.md | 文档修复 | +2 | -2 | | quant/dynamic_mx_quant/docs/aclnnDynamicMxQuantV2.md | 文档修复 | +2 | -2 | | quant/dynamic_mx_quant/docs/aclnnDynamicMxQuantV3.md | 文档修复 | +2 | -2 | | quant/dynamic_mx_quant/examples/arch35/test_aclnn_dynamic_mx_quant.cpp | 示例修复 | +12 | -13 | | quant/dynamic_mx_quant/examples/arch35/test_aclnn_dynamic_mx_quant_v3.cpp | 示例修复 | +6 | -7 | | quant/dynamic_mx_quant_with_dual_axis/docs/aclnnDynamicMxQuantWithDualAxis.md | 文档修复 | +8 | -6 | | quant/dynamic_mx_quant_with_dual_axis/docs/aclnnDynamicMxQuantWithDualAxisV2.md | 文档修复 | +8 | -6 | | quant/dynamic_mx_quant_with_dual_axis/examples/arch35/test_aclnn_dynamic_mx_quant_with_dual_axis.cpp | 示例修复 | +14 | -15 | ### 变更内容 #### 1. 数据初始化方式修复({count, value} → (count, value)) quant_update_scatter 的示例代码和文档中,std::vector 使用初始化列表语法 {32, 0} 构造,实际创建的是包含两个元素 [32, 0] 的向量,而非32个0。修复为使用构造函数语法 (32, 0) 创建32个值为0的元素。 同时修复 updatesHostData 的数据类型:从 std::vector<float> 改为 std::vector<uint16_t>(FP16),值为 15360(即 FP16 编码的 1.0 = 0x3C00),与 updates 张量声明的 FP16 数据类型匹配。quantZeroPointsHostData 从 float 改为 int32_t,值为 0,与 dtype 声明匹配。 涉及文件:aclnnInplaceQuantScatter.md、aclnnInplaceQuantScatterV2.md、test_aclnn_inplace_quant_scatter.cpp #### 2. mxscaleOutHostData 多余花括号修复 dynamic_mx_quant 系列示例中 std::vector<uint8_t> mxscaleOutHostData = {{128, 0}} 存在多余花括号,虽不报错但不规范,修复为 {128, 0}。 涉及文件:aclnnDynamicMxQuant.md、aclnnDynamicMxQuantV2.md、aclnnDynamicMxQuantV3.md、test_aclnn_dynamic_mx_quant.cpp、test_aclnn_dynamic_mx_quant_v3.cpp #### 3. 注释错误修复(fp4 → fp8) dynamic_mx_quant 系列示例中,输出数据为 float8_e4m3 类型,但注释写为「C语言中无法直接打印fp4的数据」,修复为「fp8」。 涉及文件:上述所有 dynamic_mx_quant 和 dynamic_mx_quant_with_dual_axis 相关文件 #### 4. aclrtMemcpy 逻辑缺陷修复 dynamic_mx_quant_with_dual_axis 系列示例中,两个 aclrtMemcpy(y1Out 和 y2Out)使用 && 运算符连接,导致 y1Out 的拷贝结果被隐式转换为 bool 与 y2Out 的拷贝结果做逻辑与,只返回最终的 bool 结果。此外若 y1Out 拷贝失败,y2Out 拷贝仍会执行,且错误信息合并为一条。 修复为分步执行:先执行 y1Out 拷贝并立即 CHECK_RET 校验,再执行 y2Out 拷贝并单独 CHECK_RET 校验,错误信息分别输出。 涉及文件:aclnnDynamicMxQuantWithDualAxis.md、aclnnDynamicMxQuantWithDualAxisV2.md、test_aclnn_dynamic_mx_quant_with_dual_axis.cpp #### 5. y2OutHostData 期望值修复 dynamic_mx_quant_with_dual_axis 系列示例中,y2OutHostData 的期望值为 {0, 0, 0, 0},与实际计算结果不符。修复为 {0, 120, 120, 120}。 涉及文件:上述 dynamic_mx_quant_with_dual_axis 相关文件 #### 6. dtype 拼写错误修复 aclnnInplaceQuantScatterV2.md 中,dtype 组合表中 FLOAT_E5M2 应为 FLOAT8_E5M2(缺少 8),修复为正确名称。 #### 7. 版权头规范化 dynamic_mx_quant 系列示例代码的版权头将 This program is free software... 放在 Copyright 之前,且多行文本排版不规范。修复为将 Copyright 放在首行,统一许可证文本格式。 涉及文件:test_aclnn_dynamic_mx_quant.cpp、test_aclnn_dynamic_mx_quant_v3.cpp、test_aclnn_dynamic_mx_quant_with_dual_axis.cpp #### 8. 文件末尾换行符补充 多个示例文件末尾缺少换行符,统一补充 \n。 涉及文件:test_aclnn_inplace_quant_scatter.cpp、test_aclnn_dynamic_mx_quant.cpp、test_aclnn_dynamic_mx_quant_with_dual_axis.cpp ## 关联的Issue 关联Issue #5300 ## 测试 - 示例代码编译通过,无类型不匹配告警 - quant_update_scatter 示例数据初始化正确,运行结果符合预期 - dynamic_mx_quant_with_dual_axis aclrtMemcpy 分步校验,错误可独立定位 - 期望值与实际计算结果一致 ## 文档更新 - aclnnInplaceQuantScatter.md、aclnnInplaceQuantScatterV2.md:修复示例代码数据初始化 - aclnnDynamicMxQuant.md、aclnnDynamicMxQuantV2.md、aclnnDynamicMxQuantV3.md:修复注释和花括号 - aclnnDynamicMxQuantWithDualAxis.md、aclnnDynamicMxQuantWithDualAxisV2.md:修复 aclrtMemcpy 逻辑、注释和期望值 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9454 | 15 天前 | |
重命名mxquant相关变量 Co-authored-by: ji-jun1<jijun1@huawei.com> # message auto-generated for no-merge-commit merge: !9285 merge rename_mx into master 重命名mxquant相关变量 Created-by: ji-jun1 Commit-by: ji-jun1 Merged-by: cann-robot Description: ## 描述 重命名mxquant相关变量,包括原型和md中的说明 ## 关联的Issue #5420 ## 测试 已通过st测试 ## 文档更新 更新了 quant/dynamic_mx_quant_with_dual_axis/README.md quant/dynamic_mx_quant_with_dual_axis/aclnnDynamicMxQuantWithDualAxis.md quant/dynamic_mx_quant_with_dual_axis/aclnnDynamicMxQuantWithDualAxisV2.md quant/grouped_dynamic_mx_quant_with_dual_axis/docs/aclnnGroupedDynamicMxQuantWithDualAxis.md ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9285 | 14 天前 | |
fix: softmax_grad_ext fusion pass 代码审查修复(memcpy_s 安全函数)、quant_update_scatter 原型重构、leaky_relu mask 调整、tiling 告警消除及 classify_rule 测试分类调整 Co-authored-by: yuanbin_22<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !9190 merge fix/softmax-grad-ext-code-review into master fix: softmax_grad_ext fusion pass 代码审查修复(memcpy_s 安全函数)、quant_update_scatter 原型重构、leaky_relu mask 调整、tiling 告警消除及 classify_rule 测试分类调整 Created-by: yuanbin_22 Commit-by: yuanbin_22 Merged-by: cann-robot Description: ## 描述 本 PR 涵盖 softmax_grad_ext fusion pass 代码审查问题修复、quant_update_scatter 算子原型重构、leaky_relu arch35 内核 mask 计算调整、tiling prepare 函数未使用参数告警消除、以及 classify_rule.yaml 测试分类规则调整。共涉及 6 个文件(+150 -94 行)。 ### 涉及文件 | 文件 | 变更类型 | +行 | -行 | |------|----------|-----|-----| | activation/softmax_grad_ext/op_graph/fusion_pass/softmax_grad_ext_fusion_pass.cpp | 代码修复 | +49 | -28 | | classify_rule.yaml | 配置调整 | +45 | -88 | | index/quant_update_scatter/op_host/quant_update_scatter_def.cpp | 重构 | +46 | -63 | | quant/dynamic_block_quant/op_host/dynamic_block_quant_tiling.cpp | 告警修复 | +4 | -1 | | quant/dynamic_mx_quant/op_host/arch35/dynamic_mx_quant_tiling_arch35.cpp | 告警修复 | +4 | -1 | | activation/leaky_relu/op_kernel/arch35/leaky_relu_dag.h | 内核调整 | +2 | -3 | ### 变更内容 #### 1. softmax_grad_ext fusion pass 代码审查修复 - **严格别名违规修复**:GetAxisFromReduceSum 中 reinterpret_cast 直接解引用改为 memcpy_s(安全函数)拷贝到本地变量,并使用 OP_LOGE_IF 检查 memcpy_s 返回值是否为 EOK - **新增 #include "securec.h"**:引入 memcpy_s/EOK 定义 - **格式符修复**:axis_value(int64_t)的格式符从 %ld 改为 %lld - **返回值校验**:AddEdgeAndUpdatePeerDesc 调用使用 ES_ASSERT_GRAPH_SUCCESS 宏包装 - **魔法数字消除**:新增 9 个命名常量替换硬编码值(kUnknownShapeDim、kReduceLastAxis、kAxesShapeDim、kPatternV2VariantCount、kBinaryInputX1Idx、kBinaryInputX2Idx、kReduceSumInputXIdx、kNodeOutputIdx、kTargetSocVersion) - **日志增强**:平台不支持日志中的 Ascend950 改为引用 kTargetSocVersion 常量 #### 2. quant_update_scatter 算子原型重构 将 QuantUpdateScatter 类中各输入/输出的内联 DataType/Format/UnknownShapeFormat 向量提取为文件级 static const 命名向量(varDataType、indicesDataType、updatesDataType、quantScalesDataType、quantZeroPointsDataType、inputAndOutputFormat),消除重复代码,提升可维护性。 #### 3. leaky_relu arch35 内核 mask 计算调整 - 移除局部 constexpr uint64_t VECTOR_REG_WIDTH = 256UL(使用全局定义) - 将 Reg::UpdateMask 从循环外移入循环内,确保每次迭代 mask 与实际剩余元素匹配,避免最后一次循环处理越界 #### 4. tiling prepare 函数未使用参数告警消除 dynamic_block_quant 和 dynamic_mx_quant 的 TilingPrepare 函数中 context 参数未使用,添加 [[maybe_unused]] 属性消除编译告警,并格式化函数体。 #### 5. classify_rule.yaml 测试分类调整 将以下算子的测试代码从 activation-c@ops-nn(已发布分类)移至 VC1@ops-nn(未发布分类),并取消原 VC1 中的注释标记: - elu、elu_grad_v2、fast_gelu、fast_gelu_grad - ge_glu_grad_v2、ge_glu_v2、gelu、gelu_grad、gelu_grad_v2、gelu_quant、gelu_v2 - hardtanh_grad、leaky_relu、leaky_relu_grad、p_relu、relu、relu_grad - sigmoid、sigmoid_grad、silu_grad、swi_glu_grad、swish、swish_grad - ascend_quant ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/1323 ## 测试 - softmax_grad_ext fusion pass 功能验证通过 - quant_update_scatter 算子原型注册行为不受影响 - leaky_relu FP16/BF16/FP32 各 dtype 功能验证通过 - tiling 函数编译无新增告警 - classify_rule 分类调整后 CI 流水线通过(ci-pipeline-passed) ## 文档更新 不涉及 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9190 | 15 天前 | |
重命名mxquant相关变量 Co-authored-by: ji-jun1<jijun1@huawei.com> # message auto-generated for no-merge-commit merge: !9285 merge rename_mx into master 重命名mxquant相关变量 Created-by: ji-jun1 Commit-by: ji-jun1 Merged-by: cann-robot Description: ## 描述 重命名mxquant相关变量,包括原型和md中的说明 ## 关联的Issue #5420 ## 测试 已通过st测试 ## 文档更新 更新了 quant/dynamic_mx_quant_with_dual_axis/README.md quant/dynamic_mx_quant_with_dual_axis/aclnnDynamicMxQuantWithDualAxis.md quant/dynamic_mx_quant_with_dual_axis/aclnnDynamicMxQuantWithDualAxisV2.md quant/grouped_dynamic_mx_quant_with_dual_axis/docs/aclnnGroupedDynamicMxQuantWithDualAxis.md ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9285 | 14 天前 | |
新增算子st用例 Co-authored-by: hw-zhangpanpan<zhangpanpan5@huawei.com> Co-authored-by: yu_qinfei<yuqinfei1@h-partners.com> Co-authored-by: ligen<ligen75@h-partners.com> Co-authored-by: yefeicoding<yefei25@huawei.com> # message auto-generated for no-merge-commit merge: !7825 merge st into master 新增算子st用例 Created-by: yefeicoding Commit-by: yefeicoding;yu_qinfei;hw-zhangpanpan;李根;ligen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4269 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:补充st ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7825 | 1 个月前 | |
Arch编码更新 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !1116 merge ut_test into master Arch编码更新 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 Arch编码更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1116 | 7 个月前 | |
add dynamic_mx_quant aclnn test Co-authored-by: luo-yongqing<luoyongqing4@h-partners.com> # message auto-generated for no-merge-commit merge: !3369 merge master into master add dynamic_mx_quant aclnn test Created-by: luo-yong-qing Commit-by: luo-yongqing Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 添加examples文件 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/1864 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 测试文件以本地验证通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了dynamic_mx_quant README.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!3369 | 5 个月前 |
DynamicMxQuant
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | × |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | × |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
功能说明
- 算子功能:在给定的轴axis上,根据每blocksize个数,计算出这组数对应的量化尺度mxscale,然后对这组数每一个除以mxscale,根据round_mode转换到对应的dst_type,得到量化结果y。在dst_type为FLOAT8_E4M3FN、FLOAT8_E5M2时,根据scale_alg的取值来指定计算mxscale的不同算法。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 待量化数据。 | FLOAT16、BFLOAT16 | ND |
| axis | 输入 | 量化发生的轴 | INT64 | ND |
| round_mode | 可选属性 | 数据转换的模式 | STRING | ND |
| dst_type | 输入 | 指定数据转换后y的类型 | INT64 | ND |
| blocksize | 输入 | 每次量化的元素个数 | INT64 | ND |
| scale_alg | 输入 | mxscale的计算方法 | INT64 | ND |
| y | 输出 | 输入x量化后的对应结果 | FLOAT4_E2M1、FLOAT4_E1M2、FLOAT8_E4M3FN、FLOAT8_E5M2 | ND |
| mxscale | 输出 | 每个分组对应的量化尺度 | FLOAT8_E8M0 | ND |
约束说明
- 关于x、mxscale的shape约束说明如下:
- rank(mxscale) = rank(x) + 1。
- axis_change = axis if axis >= 0 else axis + rank(x)。
- mxscale.shape[axis_change] = (ceil(x.shape[axis] / blocksize) + 2 - 1) / 2。
- mxscale.shape[-1] = 2。
- 其他维度与输入x一致。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_dynamic_mx_quant | 通过aclnnDynamicMxQuant接口方式调用DynamicMxQuant算子。 |