| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
增加UT用例 Co-authored-by: szhexin<shangzhexin@huawei.com> # message auto-generated for no-merge-commit merge: !10242 merge npugpu into master 增加UT用例 Created-by: szhexin Commit-by: szhexin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->补充alpha和beta等于0时的UT ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->Issue #5737 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->UT流水线通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。-->不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10242 | 22 天前 | |
docs: 新增BatchMatMulV3/MatMulV3算子Ascend IR接口文档 Co-authored-by: linzehui2058<2602241040@qq.com> # message auto-generated for no-merge-commit merge: !10433 merge ir_doc into master docs: 新增BatchMatMulV3/MatMulV3算子Ascend IR接口文档 Created-by: linzehui2058 Commit-by: linzehui2058 Merged-by: cann-robot Description: ## 描述 客户需求,希望在nn仓能够方便的查询到常用算子的算子原型IR定义,按照新模板补充IR资料 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5957 ## 测试 无 ## 文档更新 matmul/batch_mat_mul_v3/docs/ascendir_BatchMatMulV3.md matmul/mat_mul_v3/docs/ascendir_MatMulV3.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10433 | 15 天前 | |
support add_all_module_source支持一个算子 只配置一个CMakeList.txt Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !8380 merge master into master support add_all_module_source支持一个算子 只配置一个CMakeList.txt Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: 此 PR 引入了新的 CMake 宏 add_all_modules_sources 作为算子顶层 CMakeLists.txt 的统一编译入口,旨在简化算子构建配置。同时,底层函数 add_kernel_sources 和 AddOpTestCase 也进行了适配,支持从算子顶层目录调用,替代原先必须在特定子目录(如 op_kernel、tests/ut/op_kernel)内调用的限制。整体改动通过自适应目录位置、收编 UT 源收集逻辑,提升构建系统的灵活性和可维护性。 主要改动 新增 add_all_modules_sources 宏:在 cmake/func.cmake 中新增统一入口宏,支持 OPTYPE、ACLNNTYPE、DEPENDENCIES、COMPUTE_UNIT、TILING_DIR、DISABLE_IN_OPP 等参数;自动适配 op_api 目录在算子根或 op_host 子目录下的两种布局,内部复用 add_modules_sources 并触发 add_all_ut_sources 收集 UT 源。 新增 add_all_ut_sources 宏:在 cmake/func.cmake 中新增 UT 源收集宏,根据 UT_TEST_ALL、OP_API_UT、OP_HOST_UT、OP_GRAPH_UT 等条件分别收集 tests/ut/op_api、tests/ut/op_host、tests/ut/op_graph 下的测试源文件,并兼容历史布局 tests/ut/op_host/op_api。 add_kernel_sources 适配新调用位置:当 CMAKE_CURRENT_SOURCE_DIR 不以 /op_kernel 结尾时,自动将 SOURCE_DIR 拼接 /op_kernel 子目录,使该函数支持从算子顶层目录被调用。 AddOpTestCase 支持自定义 UT 源目录:新增 UT_SRC_DIR 参数用于指定 UT 源文件所在目录;_tiling_def.h 的 include 路径和 *.cpp 测试用例文件的 file(GLOB) 扫描路径均改用 _ut_src_dir 变量,替代原先硬编码的 CMAKE_CURRENT_SOURCE_DIR。 AddOpTestCase 优化算子目录推导:优先使用 add_op_subdirectory 设置的全局变量 OP_DIR 确定算子根目录,当该变量未定义或为空时才回退到原有的三级父目录推导逻辑(tests/ut/op_kernel 内部调用方式),增强了从算子顶层调用的兼容性。 See merge request: cann/ops-nn!8380 | 1 个月前 | |
【整改】删除含有非constexpr调用的constexpr Co-authored-by: wuzhengrun<wuzhengrun@huawei.com> # message auto-generated for no-merge-commit merge: !10212 merge fix-constexpr into master 【整改】删除含有非constexpr调用的constexpr Created-by: qq_45068396 Commit-by: wuzhengrun Merged-by: cann-robot Description: ## 描述 由于客户侧算子问题,编译器需要新增非兼容修改 constexpr不能调用非constexpr的函数(背景在SIMT 爆栈问题讨论群里),筛选到nn仓中有这几个文件需要修改,具体的修改方案是删掉调用函数的constexpr 对代码本身没有影响,因为之前的constexpr也是不起作用的。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述:非兼容变更 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10212 | 15 天前 | |
fix convert weight to int4 pack error Co-authored-by: zhangquanxin<zhangquanxin7@h-partners.com> # message auto-generated for no-merge-commit merge: !10538 merge convert_int4pack_example_fix into master fix convert weight to int4 pack error Created-by: zhangquanxin Commit-by: zhangquanxin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 该 PR 修复了 test_aclnn_convert_weight_to_int4_pack.cpp 示例在 Ascend950 上跑不通的问题:将原先 NZ/转置场景的写法改为 ND 格式下的标准流程(n 改为 16 保证 INT4 打包内轴为偶数),并把 CreateAclTensorInt4 合并进 CreateAclTensor(按 hostData 实际字节数申请内存,天然兼容 INT4 打包),删除了 CEIL_DIV/CEIL_ALIGN 宏及死代码分支,保留 unique_ptr 资源管理。同时修正了文档 aclnnConvertWeightToINT4Pack.md 中 Ascend 950 段两个示例:NZ 场景的 matmul 调用由 aclnnWeightQuantBatchMatmulV2 改为 950 专用的 aclnnWeightQuantBatchMatmulNz 接口,按示例风格重构并统一 unique_ptr 管理,附带修复 FLOAT 示例中 fp8_e8m0 scale 初值错误(1 改为 0b01111111)。 修复了A8W4 NZ场景下, 日志输出的shape两边没有括号问题。 修复了AntiQuantMatmulFusionPass融合日志缺少约束问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> issue https://gitcode.com/cann/ops-nn/issues/5143 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ut验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> matmul/convert_weight_to_int4_pack/docs/aclnnConvertWeightToINT4Pack.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10538 | 15 天前 | |
修复matmul目录下L2_DFX_PHASE_1宏DFX_IN缺失参数或顺序不符问题 Co-authored-by: ztj0209<zhangtianjiao6@huawei.com> # message auto-generated for no-merge-commit merge: !10408 merge fix_dfx_in_matmul_5526 into master 修复matmul目录下L2_DFX_PHASE_1宏DFX_IN缺失参数或顺序不符问题 Created-by: ztj0209 Commit-by: ztj0209 Merged-by: cann-robot Description: ## 概述 修复 issue #5526 中 matmul 目录下的 10 处 L2_DFX_PHASE_1 宏 DFX_IN 缺失参数或顺序不符问题(issue 中其余目录问题已由其他 PR 修复,本 PR 处理遗留的 matmul 部分): | 算子接口 | 修复内容 | |---|---| | aclnnDualLevelQuantMatmulWeightNz | 补充 transposeX1/transposeX2/level0GroupSize/level1GroupSize | | aclnnMatmulCompressDequant | 补充 offsetW | | aclnnQuantMatmulV3 | 补充 transposeX1/transposeX2 | | aclnnQuantMatmulV4 | 补充 transposeX1/transposeX2 | | aclnnQuantMatmulReduceSumWeightNz | 补充 yScale/x1Offset/x2Offset/yOffset/bias/transposeX1/transposeX2/groupSize/dims/keepDims | | aclnnRotateQuant | 补充 axis/roundMode/scaleAlg/dstTypeMax/trans | | aclnnWeightQuantBatchMatmul | DFX_IN 参数顺序与接口参数顺序对齐 | | aclnnWeightQuantBatchMatmulV2 | 补充 antiquantGroupSize | | aclnnWeightQuantBatchMatmulV3 | 补充 antiquantGroupSize/innerPrecise | | aclnnWeightQuantBatchMatmulNz | 补充 antiquantGroupSize | ## 验证 - 所有改动文件已通过 clang-format v18.1.8 --style=file 全文件检查 - 仅修改 DFX_IN 宏参数列表,不涉及任何功能逻辑变更 ## 关联的Issue fixes #5526 See merge request: cann/ops-nn!10408 | 18 天前 | |
fix(flat_quant/rotate_quant): 修复host侧空指针解引用、除零、workspace未初始化及shape校验缺陷 Co-authored-by: yushan-kite<zhangyushan11@huawei.com> # message auto-generated for no-merge-commit merge: !9708 merge debug into master fix(flat_quant/rotate_quant): 修复host侧空指针解引用、除零、workspace未初始化及shape校验缺陷 Created-by: yushan-kite Commit-by: yushan-kite Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 针对FlatQuant和RotateQuant算子修复空指针、shape校验缺陷、workspace未初始化等缺陷。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5666 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> aclnnFuzz测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9708 | 22 天前 | |
[Fix] fix mis-matched dtype in aclrtMemcpy of aclnnFusedLinearCrossEntropyLossGrad examples Co-authored-by: jisihuai<jisihuai@h-partners.com> # message auto-generated for no-merge-commit merge: !10010 merge test into master [Fix] fix mis-matched dtype in aclrtMemcpy of aclnnFusedLinearCrossEntropyLossGrad examples Created-by: jisihuai Commit-by: jisihuai Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决aclnnFusedLinearCrossEntropyLossGrad examples/markdown中float32与bf16类型冲突问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> example样例编译运行成功 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10010 | 24 天前 | |
docs: 修正 IndexFill/ScatterNd/FusedLinearOnlineMaxSum/WeightQuantBatchMatmulV2/LSTM 文档示例笔误 Co-authored-by: weike<weike13@huawei.com> # message auto-generated for no-merge-commit merge: !10123 merge codex/pr-37ebcb4-docs-fix into master docs: 修正 IndexFill/ScatterNd/FusedLinearOnlineMaxSum/WeightQuantBatchMatmulV2/LSTM 文档示例笔误 Created-by: m0_55003149 Commit-by: weike Merged-by: cann-robot Description: ## 描述 修正 5 个算子文档示例中的笔误(对应本地提交 37ebcb4cb): - aclnnInplaceIndexFill:示例中日志打印的函数名由 aclnnIndexFill 改为 aclnnInplaceIndexFill; - aclnnScatterNd:示例注释由 aclnnAdd 改为 aclnnScatterNd; - aclnnFusedLinearOnlineMaxSum:示例中变量名 tatgetDeviceAddr 拼写修正为 targetDeviceAddr; - aclnnWeightQuantBatchMatmulV2:示例中 LOG_PRINT 的 aclnnCast2 修正为 aclnnCast; - aclnnLSTM:公式中隐藏状态向量符号 h_i 修正为 h_t。 ## 关联的Issue (https://gitcode.com/cann/ops-nn/issues/5704) ## 测试 纯文档修改,无代码逻辑变更,不需要运行测试。 ## 文档更新 本次改动仅涉及 5 个算子 .md 文档的示例/描述修正。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10123 | 24 天前 | |
fix: sc告警整改:IsCapableForMultiMul魔鬼数字具名化;恢复FusedMatMulBatchAswBasic GetTilingDataProcess重载并用using声明显式引入基类重载族,消除同名隐藏告警 Co-authored-by: yushan-kite<zhangyushan11@huawei.com> # message auto-generated for no-merge-commit merge: !10571 merge sc into master fix: sc告警整改:IsCapableForMultiMul魔鬼数字具名化;恢复FusedMatMulBatchAswBasic GetTilingDataProcess重载并用using声明显式引入基类重载族,消除同名隐藏告警 Created-by: yushan-kite Commit-by: yushan-kite Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> IsCapableForMultiMul魔鬼数字具名化;恢复FusedMatMulBatchAswBasic GetTilingDataProcess重载并用using声明显式引入基类重载族,消除同名隐藏告警 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5903 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> UT ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10571 | 15 天前 | |
matmul算子添加ut,提升ut覆盖率 Co-authored-by: wangwei_mayday<wangwei1183@huawei.com> # message auto-generated for no-merge-commit merge: !10210 merge ut_test_new into master matmul算子添加ut,提升ut覆盖率 Created-by: wangwei_mayday Commit-by: wangwei_mayday Merged-by: cann-robot Description: ## 描述 当前matmul算子行覆盖率和函数覆盖率较低,对matmul算子中的tbmm,tqbmm,matmulv3,bmm等算子增加ut,全面覆盖 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->关联Issue [#4993](https://gitcode.com/cann/ops-nn/issues/4993) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ x ] 其他,请描述:添加测试用例 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ x ] AI辅助编写 See merge request: cann/ops-nn!10210 | 21 天前 | |
AI意见修改 Co-authored-by: szhexin<shangzhexin@huawei.com> # message auto-generated for no-merge-commit merge: !9630 merge gemmziliao into master AI意见修改 Created-by: szhexin Commit-by: szhexin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->对 matmul 系列算子(addmv、fused_matmul、gemm)的 host 侧接口代码进行健壮性加固与逻辑整理 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->Issue #5481 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->冒烟测试通过,资料整改 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> matmul/gemm/docs/aclnnGemm.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9630 | 30 天前 | |
log_fix Co-authored-by: Alpha123_<202230091296@mail.scut.edu.cn> # message auto-generated for no-merge-commit merge: !8828 merge master into master log_fix Created-by: Alpha123_ Commit-by: Alpha123_ Merged-by: cann-robot Description: ## 描述 算子的信息中存在拼写错误,且日志中存在中文、缺失度量等问题,影响日志可读性和易用性 整改issue ## 关联的Issue [https://gitcode.com/cann/ops-nn/issues/4864](url) ## 文档更新 [https://gitcode.com/cann/ops-nn/tree/master/matmul/addmv](url) [https://gitcode.com/cann/ops-nn/tree/master/matmul/batch_mat_mul_v3](url) [https://gitcode.com/cann/ops-nn/tree/master/matmul/common](url) [https://gitcode.com/cann/ops-nn/tree/master/matmul/fused_mat_mul](url) [https://gitcode.com/cann/ops-nn/tree/master/matmul/gemm_v2](url) [https://gitcode.com/cann/ops-nn/tree/master/matmul/gemm_v3](url) [https://gitcode.com/cann/ops-nn/tree/master/matmul/mat_mul_v3](url) [https://gitcode.com/cann/ops-nn/tree/master/matmul/matmul_v2_compress_dequant](url) [https://gitcode.com/cann/ops-nn/tree/master/matmul/mv](url) [https://gitcode.com/cann/ops-nn/tree/master/matmul/rotate_quant](url) [https://gitcode.com/cann/ops-nn/tree/master/matmul/transpose_batch_mat_mul](url) [https://gitcode.com/cann/ops-nn/tree/master/matmul/transpose_quant_batch_mat_mul](url) ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8828 | 1 个月前 | |
master:gemmV3修复数组越界访问,添加维度检查 Co-authored-by: AlbertYoung192<yangtao363@huawei.com> # message auto-generated for no-merge-commit merge: !10068 merge master into master master:gemmV3修复数组越界访问,添加维度检查 Created-by: AlbertYoung192 Commit-by: AlbertYoung192 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> gemmV3存在数组越界访问问题,需要添加维度检查 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5787 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 二级冒烟、本地自验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10068 | 22 天前 | |
fix(mat_mul_v3): workspaceSize参数类型统一为uint64_t Co-authored-by: linzehui2058<2602241040@qq.com> # message auto-generated for no-merge-commit merge: !10490 merge fix_sizet_to_uint64 into master fix(mat_mul_v3): workspaceSize参数类型统一为uint64_t Created-by: linzehui2058 Commit-by: linzehui2058 Merged-by: cann-robot Description: ## 描述 检视发现worksapce使用的数据类型和定义的类型有size_t和uint64两种,在绝大部分情况下无影响,考虑极端情况,进行类型统一,并同步修复worksapce注释名称问题 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5959 ## 文档更新 matmul/mat_mul_v3/op_host/op_api/aclnn_matmul.cpp matmul/mat_mul_v3/op_host/op_api/aclnn_matmul.h matmul/mat_mul_v3/op_host/op_api/aclnn_mm.cpp ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:类型统一 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10490 | 15 天前 | |
修改matmul算子aclnn文档及示例代码已知问题 Co-authored-by: ztj0209<zhangtianjiao6@huawei.com> # message auto-generated for no-merge-commit merge: !10002 merge fix_matmul_docs_910b into master 修改matmul算子aclnn文档及示例代码已知问题 Created-by: ztj0209 Commit-by: ztj0209 Merged-by: cann-robot Description: ## 修改说明 根据文档易用性问题清单,修改 matmul 算子 aclnn 文档资料问题,并同步修改 910B(Atlas A2)/310P 相关示例代码,共 13 个文件(10 md + 3 cpp)。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5689 ### 文档资料修改 - **aclnnAddmm&aclnnInplaceAddmm**:修正 InplaceAddmm 参数表 mat1/mat2 的 Reduce 维度描述;Addmm 的 out 描述补充完整公式语义 - **aclnnAddmmWeightNz**:shape 描述全角括号统一为半角方括号 - **aclnnQuantMatmulV2**:迁移说明函数名 aclnnTransQuantParamV2 修正为 aclnnTransQuantParam,与示例代码一致 - **aclnnMatmulCompress / aclnnMatmulCompressDequant**:msModelSlim 示例补充 weight_path 定义;bias 数据类型描述 INT8 修正为 INT32(与参数表及示例一致);注明 export 产物路径 ### 910B 示例代码修改(资料与接口同步) - **aclnnBaddbmm/aclnnInplaceBaddbmm**:示例调用 alpha/beta 参数顺序修正为与函数原型一致(beta 在前) - **aclnnMatmulWeightNz**:0x3C00 注释语义修正为 float16 的 1.0;950PR 示例 cubeMathType 修正为 0 并使用 ACL_FORMAT_FRACTAL_NZ 枚举替代魔法数字 29 - **aclnnWeightQuantBatchMatmul**:示例改为调用 aclnnTransQuantParam 生成 deqScale,修复原示例手动循环填充导致 deqScale 全 0、输出错误的问题;creat→create - **aclnnFusedQuantMatmulWeightNz**:groupSizeOptional 描述由传入nullptr修正为建议传入0 - **aclnnFusedQuantMatmul**:示例注释 [M]/[N] 统一为小写 [m]/[n] - **aclnnMatmulCompressDequant**:LOG_PRINT 的 %s 传 std::string 修正为 c_str() ### 验证 910B3(Atlas A2)实机验证,CANN 9.2.0-beta.1,以下用例全部编译运行通过: - aclnnBaddbmm / aclnnInplaceBaddbmm:两接口输出结果一致(验证 alpha/beta 顺序修正正确) - aclnnBatchMatMulWeightNz(arch22,aclnnTransMatmulWeight 权重转换流程)、aclnnMatmulWeightNz、aclnnFusedQuantMatmul、aclnnFusedQuantMatmulWeightNz:输出结果均正常 - aclnnWeightQuantBatchMatmul:deqScale 由 aclnnTransQuantParam 生成,输出不再全 0,结果与修复前验证一致 See merge request: cann/ops-nn!10002 | 23 天前 | |
【整改】删除含有非constexpr调用的constexpr Co-authored-by: wuzhengrun<wuzhengrun@huawei.com> # message auto-generated for no-merge-commit merge: !10212 merge fix-constexpr into master 【整改】删除含有非constexpr调用的constexpr Created-by: qq_45068396 Commit-by: wuzhengrun Merged-by: cann-robot Description: ## 描述 由于客户侧算子问题,编译器需要新增非兼容修改 constexpr不能调用非constexpr的函数(背景在SIMT 爆栈问题讨论群里),筛选到nn仓中有这几个文件需要修改,具体的修改方案是删掉调用函数的constexpr 对代码本身没有影响,因为之前的constexpr也是不起作用的。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述:非兼容变更 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10212 | 15 天前 | |
修复matmul目录下L2_DFX_PHASE_1宏DFX_IN缺失参数或顺序不符问题 Co-authored-by: ztj0209<zhangtianjiao6@huawei.com> # message auto-generated for no-merge-commit merge: !10408 merge fix_dfx_in_matmul_5526 into master 修复matmul目录下L2_DFX_PHASE_1宏DFX_IN缺失参数或顺序不符问题 Created-by: ztj0209 Commit-by: ztj0209 Merged-by: cann-robot Description: ## 概述 修复 issue #5526 中 matmul 目录下的 10 处 L2_DFX_PHASE_1 宏 DFX_IN 缺失参数或顺序不符问题(issue 中其余目录问题已由其他 PR 修复,本 PR 处理遗留的 matmul 部分): | 算子接口 | 修复内容 | |---|---| | aclnnDualLevelQuantMatmulWeightNz | 补充 transposeX1/transposeX2/level0GroupSize/level1GroupSize | | aclnnMatmulCompressDequant | 补充 offsetW | | aclnnQuantMatmulV3 | 补充 transposeX1/transposeX2 | | aclnnQuantMatmulV4 | 补充 transposeX1/transposeX2 | | aclnnQuantMatmulReduceSumWeightNz | 补充 yScale/x1Offset/x2Offset/yOffset/bias/transposeX1/transposeX2/groupSize/dims/keepDims | | aclnnRotateQuant | 补充 axis/roundMode/scaleAlg/dstTypeMax/trans | | aclnnWeightQuantBatchMatmul | DFX_IN 参数顺序与接口参数顺序对齐 | | aclnnWeightQuantBatchMatmulV2 | 补充 antiquantGroupSize | | aclnnWeightQuantBatchMatmulV3 | 补充 antiquantGroupSize/innerPrecise | | aclnnWeightQuantBatchMatmulNz | 补充 antiquantGroupSize | ## 验证 - 所有改动文件已通过 clang-format v18.1.8 --style=file 全文件检查 - 仅修改 DFX_IN 宏参数列表,不涉及任何功能逻辑变更 ## 关联的Issue fixes #5526 See merge request: cann/ops-nn!10408 | 18 天前 | |
aclnn_einsum.cpp文件整改 Co-authored-by: wangwei_mayday<wangwei1183@huawei.com> # message auto-generated for no-merge-commit merge: !9204 merge master into master aclnn_einsum.cpp文件整改 Created-by: wangwei_mayday Commit-by: wangwei_mayday Merged-by: cann-robot Description: ## 描述 当前matmul/batch_mat_mul_v3/op_host/op_api/aclnn_einsum.cpp下面存在以下这些问题: 1.HandleAxB2AB 缺少空指针检查导致段错误,函数中leftMatrix,rightMatrix和result这三个参数军缺乏空指针校验 2.UniqueExecutor 析构时 561102 警告导致内部状态损坏,HandleABCDxABCED2ABCE 和 HandleAxB2AB的OP_CHECK_WRONG_DIMENSION判断在uniqueExecutor构造之后析构之前,OP_CHECK_WRONG_DIMENSION 宏在维度检查失败时直接 return ACLNN_ERR_PARAM_INVALID,此时 uniqueExecutor 尚未调用 ReleaseTo(executor),触发析构函数输出 561102 警告,析构函数在清理中间资源时可能损坏了全局内部状态(如 op executor 的内存池),导致后续 API 调用访问已释放的内存。 3.HandleAxB2AB 缺少 output shape 校验,HandleABCDxABCED2ABCE做了校验 4.equation 空指针内部使用 561103 而非 161001,CheckNotNull 返回 false 后,CheckParams 通过 CHECK_RET(CheckNotNull(...), ACLNN_ERR_PARAM_NULLPTR) 转换,最终 aclnnEinsumGetWorkspaceSize 返回 161001 给调用方。因此错误码验证通过,但日志中的 561103 与文档不一致。 以及matmul/mat_mul_v3/op_host/op_tiling/arch35/matmul_v3_common_advanced.h中存在的问题: 已存在全局变量constexpr uint64_t NUM_THREE = 3UL;,无需重复定义constexpr uint64_t THREE_DIM_NUM = 3; 引用到THREE_DIM_NUM的代码都需要做出修改 对以上问题做出整改 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->关联Issue [#5153](https://gitcode.com/cann/ops-nn/issues/5153) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ x ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ x ] AI辅助编写 See merge request: cann/ops-nn!9204 | 1 个月前 | |
fix(matmul): 修复 NZ 空输出和 A4W4I 调度,修正 yRef 文档标记 Co-authored-by: smdbha<panzhijie2@huawei.com> # message auto-generated for no-merge-commit merge: !10659 merge backup into master fix(matmul): 修复 NZ 空输出和 A4W4I 调度,修正 yRef 文档标记 Created-by: smdbha Commit-by: smdbha Merged-by: cann-robot Description: ## 描述 本次修改修复量化矩阵乘的 NZ 空输出处理和 A4W4I 调度,并修正 InplaceAdd 接口资料中的 yRef 非连续 Tensor 标记。 - DAV_3510 全量化场景下,x2 为 NZ 格式且 n=0 时,统一通过 M/N 判定返回空 Tensor,返回成功且 workspace 为 0;保留原有 m=0 支持、公共接口签名和伪量化分流。 - arch35 A4W4I 预处理包含 SyncAll<false>。ASW 的 PostTiling 根据 context 输入描述保留的原始 INT4 类型,在 !supportMmadS8S4 时设置 SetScheduleMode(1),避免 IsCapable 将内部类型改为 INT8 后漏判需要批调度的路径。 - 将 aclnnQuantBatchMatmulInplaceAdd 参数表中 yRef 的非连续 Tensor 栏标为 -。该算子的实现和测试保持原有行为。 ## 关联的Issue 关联 Issue [#5950](https://gitcode.com/cann/ops-nn/issues/5950)。 ## 测试 - git diff --check upstream/master...backup 通过;修正提交的 pre-commit 检查通过,包括 clang-format 和 OAT。 - 补充 V3、V4、WeightNz 的 NZ n=0 回归用例;WeightNz 覆盖转置、batch、scale 长度 0/1、workspace=0,以及非 DAV_3510 和 k=0 非空输出的拒绝场景。 - 已核对 InplaceAdd 的代码、UT 和 ST 与 upstream/master 一致,仅保留接口文档修正。 ## 文档更新 - 更新 aclnnQuantMatmulV3.md、aclnnQuantMatmulV4.md 和 aclnnQuantMatmulWeightNz.md 的空 Tensor 支持条件及错误码说明。 - 将 aclnnQuantBatchMatmulInplaceAdd.md 中 yRef 的非连续 Tensor 栏标为 -。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10659 | 15 天前 | |
fix convert weight to int4 pack error Co-authored-by: zhangquanxin<zhangquanxin7@h-partners.com> # message auto-generated for no-merge-commit merge: !10538 merge convert_int4pack_example_fix into master fix convert weight to int4 pack error Created-by: zhangquanxin Commit-by: zhangquanxin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 该 PR 修复了 test_aclnn_convert_weight_to_int4_pack.cpp 示例在 Ascend950 上跑不通的问题:将原先 NZ/转置场景的写法改为 ND 格式下的标准流程(n 改为 16 保证 INT4 打包内轴为偶数),并把 CreateAclTensorInt4 合并进 CreateAclTensor(按 hostData 实际字节数申请内存,天然兼容 INT4 打包),删除了 CEIL_DIV/CEIL_ALIGN 宏及死代码分支,保留 unique_ptr 资源管理。同时修正了文档 aclnnConvertWeightToINT4Pack.md 中 Ascend 950 段两个示例:NZ 场景的 matmul 调用由 aclnnWeightQuantBatchMatmulV2 改为 950 专用的 aclnnWeightQuantBatchMatmulNz 接口,按示例风格重构并统一 unique_ptr 管理,附带修复 FLOAT 示例中 fp8_e8m0 scale 初值错误(1 改为 0b01111111)。 修复了A8W4 NZ场景下, 日志输出的shape两边没有括号问题。 修复了AntiQuantMatmulFusionPass融合日志缺少约束问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> issue https://gitcode.com/cann/ops-nn/issues/5143 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ut验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> matmul/convert_weight_to_int4_pack/docs/aclnnConvertWeightToINT4Pack.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10538 | 15 天前 | |
Fix UT coverage issue Co-authored-by: liyinghao10<liyinghao10@h-partners.com> # message auto-generated for no-merge-commit merge: !9737 merge ut_coverage into master Fix UT coverage issue Created-by: liyinghao10 Commit-by: liyinghao10 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 补足QuantBatchMatmulV3算子的UT覆盖率 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> #5248 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9737 | 16 天前 | |
修改matmul算子aclnn文档及示例代码已知问题 Co-authored-by: ztj0209<zhangtianjiao6@huawei.com> # message auto-generated for no-merge-commit merge: !10002 merge fix_matmul_docs_910b into master 修改matmul算子aclnn文档及示例代码已知问题 Created-by: ztj0209 Commit-by: ztj0209 Merged-by: cann-robot Description: ## 修改说明 根据文档易用性问题清单,修改 matmul 算子 aclnn 文档资料问题,并同步修改 910B(Atlas A2)/310P 相关示例代码,共 13 个文件(10 md + 3 cpp)。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5689 ### 文档资料修改 - **aclnnAddmm&aclnnInplaceAddmm**:修正 InplaceAddmm 参数表 mat1/mat2 的 Reduce 维度描述;Addmm 的 out 描述补充完整公式语义 - **aclnnAddmmWeightNz**:shape 描述全角括号统一为半角方括号 - **aclnnQuantMatmulV2**:迁移说明函数名 aclnnTransQuantParamV2 修正为 aclnnTransQuantParam,与示例代码一致 - **aclnnMatmulCompress / aclnnMatmulCompressDequant**:msModelSlim 示例补充 weight_path 定义;bias 数据类型描述 INT8 修正为 INT32(与参数表及示例一致);注明 export 产物路径 ### 910B 示例代码修改(资料与接口同步) - **aclnnBaddbmm/aclnnInplaceBaddbmm**:示例调用 alpha/beta 参数顺序修正为与函数原型一致(beta 在前) - **aclnnMatmulWeightNz**:0x3C00 注释语义修正为 float16 的 1.0;950PR 示例 cubeMathType 修正为 0 并使用 ACL_FORMAT_FRACTAL_NZ 枚举替代魔法数字 29 - **aclnnWeightQuantBatchMatmul**:示例改为调用 aclnnTransQuantParam 生成 deqScale,修复原示例手动循环填充导致 deqScale 全 0、输出错误的问题;creat→create - **aclnnFusedQuantMatmulWeightNz**:groupSizeOptional 描述由传入nullptr修正为建议传入0 - **aclnnFusedQuantMatmul**:示例注释 [M]/[N] 统一为小写 [m]/[n] - **aclnnMatmulCompressDequant**:LOG_PRINT 的 %s 传 std::string 修正为 c_str() ### 验证 910B3(Atlas A2)实机验证,CANN 9.2.0-beta.1,以下用例全部编译运行通过: - aclnnBaddbmm / aclnnInplaceBaddbmm:两接口输出结果一致(验证 alpha/beta 顺序修正正确) - aclnnBatchMatMulWeightNz(arch22,aclnnTransMatmulWeight 权重转换流程)、aclnnMatmulWeightNz、aclnnFusedQuantMatmul、aclnnFusedQuantMatmulWeightNz:输出结果均正常 - aclnnWeightQuantBatchMatmul:deqScale 由 aclnnTransQuantParam 生成,输出不再全 0,结果与修复前验证一致 See merge request: cann/ops-nn!10002 | 23 天前 | |
fix QuantMatmulActivationQuant bug Co-authored-by: yuechenyao_huawei<yuechenyao@h-partners.com> # message auto-generated for no-merge-commit merge: !9739 merge merge_add_fp4 into master fix QuantMatmulActivationQuant bug Created-by: yuechenyao_huawei Commit-by: yuechenyao_huawei Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 一、变更概览 | 文件 | 变更行数 | 变更类型 | |------|----------|----------| | aclnnQuantMatmulActivationQuant.md | 138行 | 文档修复 | | aclnnQuantMatmulActivationQuantWeightNz.md | 214行 | 文档修复 | | torchapi_quant_matmul_activation_quant.md | 60行 | 文档修复 | | test_aclnn_quant_matmul_activation_quant.cpp | 111行 | 测试修复 | | test_aclnn_quant_matmul_activation_quant_nd.cpp | 34行 | 测试修复 | | aclnn_quant_matmul_activation_quant.cpp | 16行 | API 修复 | | aclnn_quant_matmul_activation_quant.h | 6行 | API 修复 | | aclnn_quant_matmul_activation_quant_weight_nz.cpp | 27行 | API 修复 | | aclnn_quant_matmul_activation_quant_weight_nz.h | 12行 | API 修复 | | quant_matmul_activation_quant.cpp | 32行 | 核心逻辑修复 | | quant_matmul_activation_quant_check.cpp | 11行 | 检查逻辑修复 | | quant_matmul_activation_quant_check.h | 2行 | 头文件修复 | | quant_matmul_activation_quant_util.h | 146行 | 工具函数重构 | | quant_matmul_activation_quant_proto.h | 4行 | 文档修复 | | quant_matmul_activation_quant_helper.cpp | 60行 | Tiling 辅助修复 | | quant_matmul_activation_quant_helper.h | 4行 | Tiling 头文件修复 | | quant_matmul_activation_quant_mx_tiling.cpp | 7行 | MX Tiling 修复 | | quant_matmul_activation_quant.py | 79行 | Torch 扩展修复 | | **合计** | **967行** | - | ## 二、核心 Bug 修复 ### 2.1 Scale 形状校验修复(x1/x2 独立校验) **问题**:x1Scale 和 x2Scale 的 batch 维度校验错误地使用了 x1 的 batch 维度 **修复前**: cpp // x1Scale 和 x2Scale 都用 x1BatchDimNum 校验 size_t expectedScaleDimNum = MX_X1_SCALE_DIM + x1BatchDimNum; // ... x1ScaleExpectShape.AppendDim(x1BatchDim); x2ScaleExpectShape.AppendDim(x1BatchDim); // ❌ 错误:应使用 x2BatchDim **修复后**: cpp // x1Scale 使用 x1BatchDimNum,x2Scale 使用 x2BatchDimNum int64_t expectedX1ScaleDimNum = x1BatchDimNum + MX_X1_SCALE_DIM; int64_t expectedX2ScaleDimNum = x2BatchDimNum + MX_X2_SCALE_DIM; // ... x1ScaleExpectShape.AppendDim(x1View.GetDim(i)); // x1 的 batch 维 x2ScaleExpectShape.AppendDim(x2View.GetDim(i)); // x2 的 batch 维 **影响文件**: - quant_matmul_activation_quant_util.h L208-228 - quant_matmul_activation_quant_helper.cpp L500-555 - quant_matmul_activation_quant_helper.h L53-58 ### 2.2 NZ 格式 K/N 维度校验位置修复 **问题**:NZ 格式下 x2 的 K/N 维度校验在错误的位置(CheckWeightNzParamsDAV3510 中) **修复前**: cpp // 在 CheckWeightNzParamsDAV3510 中校验 static aclnnStatus CheckWeightNzParamsDAV3510(const aclTensor* x1, const aclTensor* x2) { // ... // NZ情况下,x2的k和n不能为1 if (x2->GetViewShape().GetDim(dim2) == 1 || x2->GetViewShape().GetDim(dim1) == 1) { // ❌ 位置错误,应在校验 shape 后 } } **修复后**: cpp // 在 CheckShape 中校验(正确位置) static aclnnStatus CheckShape(const QuantMatmulActivationQuantWeightNzParams& params, ...) { // ... // NZ情况下,x2的k和n不能为1(移到此处) if (params.x2->GetViewShape().GetDim(dim2) == 1 || params.x2->GetViewShape().GetDim(dim1) == 1) { // ✅ 正确位置,且错误信息支持 transposeX2 OP_LOGE(..., params.transposeX2 ? "x2 N, x2 K" : "x2 K, x2 N", ...); } } **影响文件**:aclnn_quant_matmul_activation_quant_weight_nz.cpp L122-145 ### 2.3 Output Shape 广播逻辑修复 **问题**:Output shape 计算未正确处理 batch 维度广播 **修复前**: cpp op::Shape yOutShape = x1Shape; // ❌ 直接使用 x1Shape auto yOutDim0 = transposeX1 ? x1->GetViewShape().GetDim(...) : ...; yOutShape.SetDim(x1DimNum - LAST_SECOND_DIM_INDEX, yOutDim0); **修复后**: cpp // 正确计算 batch 维度广播 op::Shape yOutShape = (x1DimNum >= x2DimNum) ? x1Shape : x2Shape; size_t batchDimNum = std::max(x1BatchCount, x2BatchCount); for (size_t i = 0; i < batchDimNum; ++i) { // 广播校验 if (x1Dim != x2Dim && x1Dim != 1 && x2Dim != 1) { OP_LOGE(ACLNN_ERR_PARAM_INVALID, "batch dims are not broadcastable: x1=%ld, x2=%ld", x1Dim, x2Dim); return {nullptr, nullptr}; } yOutShape.SetDim(i, std::max(x1Dim, x2Dim)); } **影响文件**:quant_matmul_activation_quant.cpp L39-75 ### 2.4 InputPreProcessA4W4 返回值修复 **问题**:InputPreProcessA4W4 函数返回 void,无法传递错误 **修复前**: cpp void InputPreProcessA4W4(const aclTensor*& x1, const aclTensor*& x2, aclOpExecutor* executor) { if (x2->GetDataType() == DataType::DT_INT32) { x2 = ConvertTensorToInt4(x2, executor); // ❌ 无返回值检查 } } **修复后**: cpp aclnnStatus InputPreProcessA4W4(const aclTensor*& x1, const aclTensor*& x2, aclOpExecutor* executor) { if (x2->GetDataType() == DataType::DT_INT32) { x2 = ConvertTensorToInt4(x2, executor); CHECK_RET(x2 != nullptr, ACLNN_ERR_INNER_NULLPTR); // ✅ 检查返回值 } return ACLNN_SUCCESS; } **影响文件**: - quant_matmul_activation_quant_check.cpp L169-180 - quant_matmul_activation_quant_check.h L82 ### 2.5 API 参数类型修复(const char* → char*) **问题**:activationType、quantMode、roundMode 参数类型错误 **修复前**: cpp aclnnStatus aclnnQuantMatmulActivationQuantGetWorkspaceSize( ..., const char* activationType, const char* quantMode, const char* roundMode, ...); **修复后**: cpp aclnnStatus aclnnQuantMatmulActivationQuantGetWorkspaceSize( ..., char* activationType, char* quantMode, char* roundMode, ...); **影响文件**: - aclnn_quant_matmul_activation_quant.cpp L298-304 - aclnn_quant_matmul_activation_quant.h L43-48 - aclnn_quant_matmul_activation_quant_weight_nz.cpp L327-330 - aclnn_quant_matmul_activation_quant_weight_nz.h L30-35 ### 2.6 DAV_3510 平台支持校验修复 **问题**:非 DAV_3510 平台未返回错误 **修复前**: cpp static aclnnStatus CheckWeightNdParamsDAV3510(const aclTensor* x1, const aclTensor* x2) { if (op::GetCurrentPlatformInfo().GetCurNpuArch() != NpuArch::DAV_3510) { return ACLNN_SUCCESS; // ❌ 应返回不支持错误 } } **修复后**: cpp static aclnnStatus CheckWeightNdParamsDAV3510(const aclTensor* x1, const aclTensor* x2) { if (op::GetCurrentPlatformInfo().GetCurNpuArch() != NpuArch::DAV_3510) { SocVersion socVersion = op::GetCurrentPlatformInfo().GetSocVersion(); OP_LOGE(ACLNN_ERR_RUNTIME_ERROR, "support for %s is not implemented", op::ToString(socVersion).GetString()); return ACLNN_ERR_RUNTIME_ERROR; // ✅ 返回不支持错误 } } **影响文件**:aclnn_quant_matmul_activation_quant.cpp L94-100 ### 2.7 IsCapable AIC:AIC=1:2 校验修复 **问题**:IsCapable 未校验 AIC:AIV 比例 **修复前**: cpp bool QuantMatmulActivationQuantMXBasicAPITiling::IsCapable() { return IsMxQuant() && AdaptiveSlidingWindowMXBasicAPITiling::IsCapable(); } **修复后**: cpp bool QuantMatmulActivationQuantMXBasicAPITiling::IsCapable() { if (compileInfo_.aicNum == 0 || compileInfo_.aivNum != compileInfo_.aicNum * 2) { CUBE_INNER_ERR_REPORT(..., "QuantMatmulActivationQuantMX is only supported for aicNum:aivNum=1:2, ..."); return false; } return IsMxQuant() && AdaptiveSlidingWindowMXBasicAPITiling::IsCapable(); } **影响文件**:quant_matmul_activation_quant_mx_tiling.cpp L41-48 ## 三、代码重构 ### 3.1 删除冗余函数 | 函数 | 说明 | |------|------| | isA8W4Float | 未使用,已删除 | | CheckMxfp8DtypeValid | 合并到 CheckDtype | | CheckMxfp4DtypeValid | 合并到 CheckDtype | | Fp8E4M3ToFloat | 测试文件中未使用,已删除 | | Fp8E8M0ToFloat | 测试文件中未使用,已删除 | | Fp4E4M3ToFloat | 测试文件中未使用,已删除 | | Fp4E8M0ToFloat | 测试文件中未使用,已删除 | ### 3.2 CheckDtype 函数重构 **重构前**:分别调用 CheckMxfp8DtypeValid 和 CheckMxfp4DtypeValid **重构后**:统一在 CheckDtype 中处理 MxFP8 和 MxFP4 校验 ### 3.3 GetExpectedScaleShape 重构 **重构前**:x1Scale 和 x2Scale 共用 batch 维度 **重构后**:x1Scale 和 x2Scale 独立计算 batch 维度 ## 四、Torch 扩展修复 ### 4.1 FP4 转置检测 新增 _is_transpose_last_two_dims 函数检测 FP4 输入的转置状态 ### 4.2 M/N 维度计算 **修复前**: python # 尝试多种匹配方式 if x1_b == x2_a: m = x1_a; n = x2_b elif x1_b == x2_b: m = x1_a; n = x2_a # ... **修复后**: python # FP4 特殊处理 if isMXFP4: trans_x1 = _is_transpose_last_two_dims(x1) trans_x2 = _is_transpose_last_two_dims(x2) m = x1_a if not trans_x1 else x1_a * FP4_IN_INT8 n = x2_b if trans_x2 else x2_b * FP4_IN_INT8 else: m = x1_a; n = x2_b ### 4.3 输出类型支持 **修复前**:仅支持 FLOAT4_E2M1/E1M2 **修复后**:支持 FLOAT8_E5M2、FLOAT8_E4M3FN、FLOAT4_E2M1 ## 五、文档修复 ### 5.1 quant_dtype → quant_mode diff -* @li quant_dtype: An optional string. Declare the quant mode.Support mx, pertoken, pertensor and perchannel. +* @li quant_mode: An optional string. Declare the quant mode.Support mx. Defaults to "mx". ### 5.2 blocksize 说明 diff +* - blocksize is 32. ### 5.3 注释拼写修复 diff -* @brief aclnnQuantMatmulActivatiionQuant的第二段接口 +* @brief aclnnQuantMatmulActivationQuant的第二段接口 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5767 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 泛化验证,广播shape验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了aclnnQuantMatmulActivationQuant.md,aclnnQuantMatmulActivationQuantWeightNz.md,torchapi_quant_matmul_activation_quant.md ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9739 | 19 天前 | |
Fix misspelled executor parameter in aclnn API doxygen comment. Co-authored-by: void_ptr<baochaojun@huawei.com> # message auto-generated for no-merge-commit merge: !9690 merge pr/fix_issue_5350 into master Fix misspelled executor parameter in aclnn API doxygen comment. Created-by: void_ptr Commit-by: void_ptr Merged-by: cann-robot Description: ## 描述 修复多个两段式 aclnn 接口头文件注释参数名拼写错误 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5350 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9690 | 29 天前 | |
fix(matmul): 清理头文件自包含和魔鬼数字告警 Co-authored-by: smdbha<panzhijie2@huawei.com> # message auto-generated for no-merge-commit merge: !10486 merge backup into master fix(matmul): 清理头文件自包含和魔鬼数字告警 Created-by: smdbha Commit-by: smdbha Merged-by: cann-robot Description: ## 描述 清理 Matmul 相关代码中的编译和代码规范告警。 主要修改: - 为 QuantBatchMatmulV3 的三个 tiling 头文件补充 gert、ge 和 NpuArch 类型的直接依赖,避免依赖传递包含; - 调整两个实现文件的 include 顺序,优先包含自身头文件; - 将 QuantMatmulReduceSum 示例中的输出数量魔鬼数字提取为 kMaxPrintedElements; - 为相关 if 语句补充大括号。 本次修改不改变算子运行时逻辑。 ## 关联的Issue - #5875 ## 测试 - 三个目标头文件分别执行 g++ -std=c++17 -fsyntax-only,均通过; - pre-commit 全部通过,包括 clang-format、codespell 和 OAT; - git diff --check upstream/master...backup 通过; - git merge-tree --write-tree upstream/master backup 通过; ## 文档更新 不涉及文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10486 | 17 天前 | |
修复matmul目录下L2_DFX_PHASE_1宏DFX_IN缺失参数或顺序不符问题 Co-authored-by: ztj0209<zhangtianjiao6@huawei.com> # message auto-generated for no-merge-commit merge: !10408 merge fix_dfx_in_matmul_5526 into master 修复matmul目录下L2_DFX_PHASE_1宏DFX_IN缺失参数或顺序不符问题 Created-by: ztj0209 Commit-by: ztj0209 Merged-by: cann-robot Description: ## 概述 修复 issue #5526 中 matmul 目录下的 10 处 L2_DFX_PHASE_1 宏 DFX_IN 缺失参数或顺序不符问题(issue 中其余目录问题已由其他 PR 修复,本 PR 处理遗留的 matmul 部分): | 算子接口 | 修复内容 | |---|---| | aclnnDualLevelQuantMatmulWeightNz | 补充 transposeX1/transposeX2/level0GroupSize/level1GroupSize | | aclnnMatmulCompressDequant | 补充 offsetW | | aclnnQuantMatmulV3 | 补充 transposeX1/transposeX2 | | aclnnQuantMatmulV4 | 补充 transposeX1/transposeX2 | | aclnnQuantMatmulReduceSumWeightNz | 补充 yScale/x1Offset/x2Offset/yOffset/bias/transposeX1/transposeX2/groupSize/dims/keepDims | | aclnnRotateQuant | 补充 axis/roundMode/scaleAlg/dstTypeMax/trans | | aclnnWeightQuantBatchMatmul | DFX_IN 参数顺序与接口参数顺序对齐 | | aclnnWeightQuantBatchMatmulV2 | 补充 antiquantGroupSize | | aclnnWeightQuantBatchMatmulV3 | 补充 antiquantGroupSize/innerPrecise | | aclnnWeightQuantBatchMatmulNz | 补充 antiquantGroupSize | ## 验证 - 所有改动文件已通过 clang-format v18.1.8 --style=file 全文件检查 - 仅修改 DFX_IN 宏参数列表,不涉及任何功能逻辑变更 ## 关联的Issue fixes #5526 See merge request: cann/ops-nn!10408 | 18 天前 | |
Fix misspelled executor parameter in aclnn API doxygen comment. Co-authored-by: void_ptr<baochaojun@huawei.com> # message auto-generated for no-merge-commit merge: !9690 merge pr/fix_issue_5350 into master Fix misspelled executor parameter in aclnn API doxygen comment. Created-by: void_ptr Commit-by: void_ptr Merged-by: cann-robot Description: ## 描述 修复多个两段式 aclnn 接口头文件注释参数名拼写错误 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5350 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9690 | 29 天前 | |
fix: sparse_tensor_dense_mat_mul Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !9959 merge fix into master fix: sparse_tensor_dense_mat_mul Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 修复目标为 sparse_tensor_dense_mat_mul(稀疏张量与稠密矩阵相乘)Cmake配置问题。 ## 关联的Issue [#5638](https://gitcode.com/cann/ops-nn/issues/5638) ## 测试 算子执行成功 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9959 | 25 天前 | |
matmul算子添加ut,提升ut覆盖率 Co-authored-by: wangwei_mayday<wangwei1183@huawei.com> # message auto-generated for no-merge-commit merge: !10210 merge ut_test_new into master matmul算子添加ut,提升ut覆盖率 Created-by: wangwei_mayday Commit-by: wangwei_mayday Merged-by: cann-robot Description: ## 描述 当前matmul算子行覆盖率和函数覆盖率较低,对matmul算子中的tbmm,tqbmm,matmulv3,bmm等算子增加ut,全面覆盖 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->关联Issue [#4993](https://gitcode.com/cann/ops-nn/issues/4993) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ x ] 其他,请描述:添加测试用例 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ x ] AI辅助编写 See merge request: cann/ops-nn!10210 | 21 天前 | |
补充TQBMM aclnn接口数据类型 Co-authored-by: justsozl<zhaolun3@hisilicon.com> # message auto-generated for no-merge-commit merge: !10297 merge master into master 补充TQBMM aclnn接口数据类型 Created-by: justsozl Commit-by: justsozl Merged-by: cann-robot Description: ## 描述 补充TQBMM aclnn接口参数支持的数据类型 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5785 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> aclnn_transpose_quant_batch_mat_mul.h ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10297 | 21 天前 | |
修复matmul目录下L2_DFX_PHASE_1宏DFX_IN缺失参数或顺序不符问题 Co-authored-by: ztj0209<zhangtianjiao6@huawei.com> # message auto-generated for no-merge-commit merge: !10408 merge fix_dfx_in_matmul_5526 into master 修复matmul目录下L2_DFX_PHASE_1宏DFX_IN缺失参数或顺序不符问题 Created-by: ztj0209 Commit-by: ztj0209 Merged-by: cann-robot Description: ## 概述 修复 issue #5526 中 matmul 目录下的 10 处 L2_DFX_PHASE_1 宏 DFX_IN 缺失参数或顺序不符问题(issue 中其余目录问题已由其他 PR 修复,本 PR 处理遗留的 matmul 部分): | 算子接口 | 修复内容 | |---|---| | aclnnDualLevelQuantMatmulWeightNz | 补充 transposeX1/transposeX2/level0GroupSize/level1GroupSize | | aclnnMatmulCompressDequant | 补充 offsetW | | aclnnQuantMatmulV3 | 补充 transposeX1/transposeX2 | | aclnnQuantMatmulV4 | 补充 transposeX1/transposeX2 | | aclnnQuantMatmulReduceSumWeightNz | 补充 yScale/x1Offset/x2Offset/yOffset/bias/transposeX1/transposeX2/groupSize/dims/keepDims | | aclnnRotateQuant | 补充 axis/roundMode/scaleAlg/dstTypeMax/trans | | aclnnWeightQuantBatchMatmul | DFX_IN 参数顺序与接口参数顺序对齐 | | aclnnWeightQuantBatchMatmulV2 | 补充 antiquantGroupSize | | aclnnWeightQuantBatchMatmulV3 | 补充 antiquantGroupSize/innerPrecise | | aclnnWeightQuantBatchMatmulNz | 补充 antiquantGroupSize | ## 验证 - 所有改动文件已通过 clang-format v18.1.8 --style=file 全文件检查 - 仅修改 DFX_IN 宏参数列表,不涉及任何功能逻辑变更 ## 关联的Issue fixes #5526 See merge request: cann/ops-nn!10408 | 18 天前 | |
fix convert weight to int4 pack error Co-authored-by: zhangquanxin<zhangquanxin7@h-partners.com> # message auto-generated for no-merge-commit merge: !10538 merge convert_int4pack_example_fix into master fix convert weight to int4 pack error Created-by: zhangquanxin Commit-by: zhangquanxin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 该 PR 修复了 test_aclnn_convert_weight_to_int4_pack.cpp 示例在 Ascend950 上跑不通的问题:将原先 NZ/转置场景的写法改为 ND 格式下的标准流程(n 改为 16 保证 INT4 打包内轴为偶数),并把 CreateAclTensorInt4 合并进 CreateAclTensor(按 hostData 实际字节数申请内存,天然兼容 INT4 打包),删除了 CEIL_DIV/CEIL_ALIGN 宏及死代码分支,保留 unique_ptr 资源管理。同时修正了文档 aclnnConvertWeightToINT4Pack.md 中 Ascend 950 段两个示例:NZ 场景的 matmul 调用由 aclnnWeightQuantBatchMatmulV2 改为 950 专用的 aclnnWeightQuantBatchMatmulNz 接口,按示例风格重构并统一 unique_ptr 管理,附带修复 FLOAT 示例中 fp8_e8m0 scale 初值错误(1 改为 0b01111111)。 修复了A8W4 NZ场景下, 日志输出的shape两边没有括号问题。 修复了AntiQuantMatmulFusionPass融合日志缺少约束问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> issue https://gitcode.com/cann/ops-nn/issues/5143 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ut验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> matmul/convert_weight_to_int4_pack/docs/aclnnConvertWeightToINT4Pack.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10538 | 15 天前 | |
Format update: Adjusted the license description format in all relevant files. Co-authored-by: jiangqi<jiangqi47@h-partners.com> # message auto-generated for no-merge-commit merge: !403 merge license7 into master Format update: Adjusted the license description format in all relevant files. Created-by: jiangqi2025 Commit-by: jiangqi Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!403 | 9 个月前 | |
transpose_quant_batch_mat_mul(TQBMM)算子新增 MXFP4(DT_FLOAT4_E2M1)精度模式支持 Co-authored-by: huangkejie1647<huangkejie3@huawei.com> # message auto-generated for no-merge-commit merge: !8472 merge tqbmm-nn into master transpose_quant_batch_mat_mul(TQBMM)算子新增 MXFP4(DT_FLOAT4_E2M1)精度模式支持 Created-by: huangkejie1647 Commit-by: huangkejie1647 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 此 PR 为 transpose_quant_batch_mat_mul(TQBMM)算子新增 MXFP4(DT_FLOAT4_E2M1)精度模式支持,并重构了 MX 系列精度(MXFP8/MXFP4)的 Kernel 实现路径。主要工作包括:在类型校验与 tiling 层引入 MXFP4 数据类型;新增 TQBMMPrecisionMode::PRECISION_MODE_MXFP4 枚举值及其对应的模板参数组合;使用 Blaze 框架的 QuantBatchMatmulV3BasicAPITilingData 统一 MXFP8 和 MXFP4 的 tiling 数据传递;新增基于 Blaze 的 TqbmmMxTensorApiKernel 内核实现。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#5171](https://gitcode.com/cann/ops-nn/issues/5171) [#5244](https://gitcode.com/cann/ops-nn/issues/5244) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本地验证通过,二级冒烟无异常,ut,和文档已补充 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> matmul/transpose_quant_batch_mat_mul/docs/aclnnTransposeQuantBatchMatMul.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8472 | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 22 天前 | ||
| 15 天前 | ||
| 1 个月前 | ||
| 15 天前 | ||
| 15 天前 | ||
| 18 天前 | ||
| 22 天前 | ||
| 24 天前 | ||
| 24 天前 | ||
| 15 天前 | ||
| 21 天前 | ||
| 30 天前 | ||
| 1 个月前 | ||
| 22 天前 | ||
| 15 天前 | ||
| 23 天前 | ||
| 15 天前 | ||
| 18 天前 | ||
| 1 个月前 | ||
| 15 天前 | ||
| 15 天前 | ||
| 16 天前 | ||
| 23 天前 | ||
| 19 天前 | ||
| 29 天前 | ||
| 17 天前 | ||
| 18 天前 | ||
| 29 天前 | ||
| 25 天前 | ||
| 21 天前 | ||
| 21 天前 | ||
| 18 天前 | ||
| 15 天前 | ||
| 9 个月前 | ||
| 1 个月前 |