| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
QuantBatchMatmulV3算子CUBE和VECTOR混合模板支持960平台 Co-authored-by: lifei265<lifei265@h-partners.com> # message auto-generated for no-merge-commit merge: !11410 merge master-a6-huihe into master QuantBatchMatmulV3算子CUBE和VECTOR混合模板支持960平台 Created-by: lifei265 Commit-by: lifei265 Merged-by: cann-robot Description: ## 描述 ### 背景 QuantBatchMatmulV3 算子的 CUBE+VECTOR 混合模板(mix / perblock / pertile / basic-api cmct)此前仅支持 DAV_3510(Ascend950/350),本 PR 将其扩展适配至 960 平台(DAV_9201/960DT、DAV_9202/960PR)。960 相对 3510 存在三项关键硬件差异,本 PR 的改动围绕其展开: 1. AIC:AIV 核数比由 1:2 变为 1:1; 2. UB bank 布局不同:按地址交错划分为 4 个 bank(起始间隔 256B),跨 bank 访问 stride 为 1KB; 3. ASW(自适应滑动窗口)调度器的窗口长度不再固定为 4,需按核数自适应(960 上为 8)。 ### 主要改动 **1. 平台注册与 tiling 策略适配** - mix(AdaptiveSlidingWindowMixTiling)、perblock(AdaptiveSlidingWindowPerblockBasicAPITiling)tiling 的 supportedNpuArch 与 platform_util.h 的 AdvancedArch 纳入 DAV_9201/9202; - tiling strategy 新增 dav9201Priorities(相比 dav3510Priorities 去掉 MIX_BASIC_API_ASW); - CheckDtype/CheckShape 中 9201/9202 复用 3510 的 checker,dtype/shape 约束保持一致。 **2. Cube/Vector 1:1 核数比适配** - host 侧新增 GetAivNumPerAic()(3510→2,9201/9202→1),mix/perblock tiling 的 CheckCoreNum() 按架构校验核数配比; - kernel 侧新增 QBMMV3_MIX_AIC_RATION 宏(ASCENDC_TPL_MIX_AIC_1_1 / _1_2)切换 mix 模板 task type; - qbmm_mix_online_dynamic(_al1_full_load) 改用 AscendC::GetTaskRation() 按实际 AIV 数均分 M 维(替换硬编码 CV_RATIO=2); - 核间同步模式 QBMM_AIC_SYNC_AIV_MODE/AIC_SYNC_AIV_MODE 由 4 改为 2,并精简双 flag 通知机制。 **3. ASW 窗口长度 windowLen 参数化** - DequantBmm::SlidingWindowParams 新增 windowLen/reserved 字段,v3 / inplace_add / v4 三个算子布局同步(整块 memcpy / 指针按 v3 结构解析,sizeof 一致为硬性约束); - host 侧新增 GetAswWindowLen(npuArch, aicNum):9201/9202 取不超过 sqrt(aicNum) 的最大核数因子(如 64 核→8),其他架构固定为 4,随 tiling data 下发; - kernel 侧调度器(qbmm_asw_block / cmct BlockSchedulerQuantBatchMatmulV3)消费下发的 windowLen,为 0 时回退默认值 4,避免 mCoreNum=0 导致 mainRow 计算除零。 **4. 960 专用 4-UB-bank epilogue** - 新增 cmct/epilogue/block_epilogue_pertile_4_ub_bank.h:按 960 UB 4-bank 交错布局编排 pertile 路径 L0C→UB 的 fixpipe 输出与 vector 侧读取; - qbmm_mix_pertile_cmct.h 按 __NPU_ARCH__ 条件编译切换 BlockEpilogue 类型(9201/9202 用 BlockEpiloguePertile4UbBank,其余保持 BlockEpiloguePertile); - block_mmad_pertile.h 中 1:1 配比时 fixpipe 采用 UB_FOUR_BANK_STRIDE(1KB)跨 bank 布局且不拆 nd。 **5. 960 基块策略** - 新增 BaseBlockMode::LOAD_BALANCE 与 base_block_load_balance_calculator.cpp(对齐 ops-nn-dev SocVersion 版实现):mix 模板在 960 上按 SoC 规格(HBM/L2 带宽、频率、单核算力)做 baseM/baseN 均衡搜索,perblock 模板固定 128×128×128 基块; - pertoken 场景限制 baseM×baseN ≤ 128×256(960 上 pertoken 结果由单 AIV 一次产出); - ComputeBaseBlockDefault 改为 ComputeBaseBlockPlain(基本块自适应 l0cSize),并同步更新 UT 断言。 ## 关联的Issue [#6739](https://gitcode.com/cann/ops-nn/issues/6739) ## 测试 - op_host / op_kernel UT golden 数据全量更新:既有用例期望序列化串末尾追加 windowLen=4, reserved=0 两个新字段,验证 3510 平台回归不变性; - test_quant_batch_matmul_v3_tiling.cpp 同步适配基块计算(ComputeBaseBlockPlain)变化后的断言; - 960(DAV_9201/9202)行为验证依赖门禁 CI 流水线。 ## 文档更新 无需更新,不涉及对外 API 变化。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11410 | 5 天前 | |
fix antiquant fusion pass symbol problem Co-authored-by: zhangquanxin<zhangquanxin7@h-partners.com> # message auto-generated for no-merge-commit merge: !11086 merge fix_antiquant_problem into master fix antiquant fusion pass symbol problem Created-by: zhangquanxin Commit-by: zhangquanxin Merged-by: cann-robot Description: ## 描述 修复 AntiQuantMatMulFusionPass 在旧版本运行时(如 9.0.1 toolkit)加载 libopgraph_nn.so 时找不到符号的问题。 融合 pass 调用的 ge::fusion::SubgraphRewriter::Replace(boundary, replacement, passContext) 3 参数重载仅在 GE 9.1.0+ 的运行时库中存在(该重载自 9.1.0 引入,替换时自动执行可融合检查与融合结果上报)。当 ops 包以 9.2.0 头文件编译、而运行环境使用 9.0.1 toolkit 时,该符号在运行时库中不存在,作为 GLOBAL 未定义引用导致 dlopen 失败、所有融合 pass 无法注册。 ## 关联的Issue Fixes #6154 ## 测试 二级冒烟 ## 文档更新 无 ## 类型标签 - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-nn!11086 | 30 天前 | |
fix(matmul): 校验WeightNz接口mat2的view stride,拒绝不可判定布局 Co-authored-by: void_ptr<baochaojun@huawei.com> # message auto-generated for no-merge-commit merge: !11048 merge fix_issue_6020 into master fix(matmul): 校验WeightNz接口mat2的view stride,拒绝不可判定布局 Created-by: void_ptr Commit-by: void_ptr Merged-by: cann-robot Description: ## 描述 mat2为FRACTAL_NZ时仅支持[1,K](转置)与[N,1](非转置)两种标准ND view stride。非标准stride(如列主序切片[1,K_full],K_full≠K)会被GetTransposeAttrValue静默判为非转置,导致按错误布局直读storage,可能产生静默错误结果。 - matmul_util新增公共校验CheckWeightNzViewStrideValid,仅接受上述两种布局 - aclnnMatmulWeightNz与aclnnAddmmWeightNz在入参校验阶段调用该校验 - 修正GetTransposeAttrValue中非转置布局的注释([K,1]->[N,1]) - 补充UT:非标准stride拒绝(含k1==n1场景)及标准布局正例 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11048 | 26 天前 | |
addgemmgolden Co-authored-by: szhexin<shangzhexin@huawei.com> # message auto-generated for no-merge-commit merge: !11175 merge gemm into master addgemmgolden Created-by: szhexin Commit-by: szhexin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->新增gemm的golden,matmul对于空tensor的golden处理,gelu+bias以及alphabeat不为1的rdv用例 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->Issue [#6280](https://gitcode.com/cann/ops-nn/issues/6280) ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。-->不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11175 | 25 天前 |