用途:面向 Ascend C Matmul 族单算子(GEMM/BMM/量化 matmul/matmul+bias/mxfp8 matmul)的直调生成,走 Blaze/tensor_api 路径,处理 API 约束确认、三模板选型、工程模板复用、SWAT/全载 Tiling 改造、流水与排错。代码或讨论出现 tensor_api、blaze 信号时使用;提到 Blaze 时必须使用本技能。
主要能力:三模板为纯AIC(通用默认,已交付)、StreamK(MN 欠并行且长 K≥4096,设计文档状态)、FixpOpti(AIC/AIV 流水重叠、可定制 epilogue,已交付)。三者共享 references/matmul_custom/(common/、tiling/、scheduler/、utils/),FixpOpti 另有 matmul_fixpopti.cpp、matmul_kernel_fused.h、epilogue/。纯AIC 支持 mode 切换(NO_FULL/A_FULL/B_FULL_LOAD),A_FULL_LOAD_MODE 已落地(matmul_block_mmad_a_full_load.h + MatmulTilingAFullLoad,3 行 diff 切换)。
使用方式:阅读顺序为先 tensor_api_user_guide.md 了解 API,再用 matmul_pattern.md §10 选模板,纯AIC 路径继续 §0 选 mode、§0.5 复制改造,共享基础见 §1–§9 及专属深度文档。实现从 references/matmul_custom/matmul_custom.cpp(纯AIC)或 matmul_fixpopti.cpp(FixpOpti)起手,按 [MODIFY] 标记改造;FixpOpti 需替换启动器、将 CopyL0C2GM 改为 CopyL0C2UB+SPLIT_M Trait、新增 matmul_kernel_fused.h 与 epilogue 文件。首次使用 matmul_custom/ 需拉取 tensor_api/ 外部依赖,步骤见 matmul_pattern.md §0.5.0。适用于 Architect/Developer/Reviewer 各阶段,与 CANNBot 的 Step 2/3/4 集成。
限制:架构验证范围 DAV_3510,其他架构须在 DESIGN.md 说明差异并给出适配方案。B_FULL_LOAD_MODE 仅有设计草案,仓库中无对应常量、特化、selector、Tiling 类与头文件,需自行镜像补齐,不能套用 §0.5.3 切换 diff。Vector 逐元素/归约算子、matmul+eltwise 深度融合、matmul+softmax 不在模板直接覆盖范围内,epilogue 需自行扩展。伪代码不等于可编译实现,API 签名需查 tensor_api_user_guide.md 或官方文档,不猜测。