CANN/catlass基础矩阵乘法TLA访问器

CANN/catlass基础矩阵乘法TLA访问器 Basic Matmul TLA Visitor【免费下载链接】catlass本项目是CANN的算子模板库提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass代码路径include/catlass/gemm/kernel/basic_matmul_tla_visitor.hpp功能说明这是当前 EVG 在 GM workspace 路径上的 kernel 入口。执行方式为AIC 先完成 MMAD把中间结果写到 GM workspaceAIV 等待跨核同步标志AIV 调用BlockEpilogue执行 EVG适合普通的 EVG 场景也是当前仓内多数 EVG 样例采用的入口。模板参数template class BlockMmad_, class BlockEpilogue_, class BlockScheduler_ class BasicMatmulTlaVisitor;BlockMmad_GEMM 主循环实现BlockEpilogue_EVG 专用尾处理一般是BlockEpilogueEpilogueVisitorfalse, ...BlockScheduler_Block 调度器Arguments 关键字段struct Arguments { GemmCoord problemShape; GM_ADDR ptrA; LayoutA layoutA; GM_ADDR ptrB; LayoutB layoutB; GM_ADDR ptrC; LayoutC layoutC; GM_ADDR ptrBias{nullptr}; typename BlockEpilogue::EVG::Arguments evg_args; };其中ptrC/layoutC仍保留在公开Arguments中evg_args是 EVG 图的参数需要注意当前 visitor kernel 的ToUnderlyingArguments()实现并不消费ptrC/layoutC最终写回地址由evg_args中的VisitorAuxStore决定。Workspace 规则GetWorkspaceSize()返回sizeof(ElementC) * M * N EVG::get_workspace_size(...)前一部分用于保存 MMAD 结果后一部分用于 EVG 自身节点可能需要的 workspace。适用条件BlockEpilogue::USE_UB_WORKSPACE对应false适用于先把 MMAD 结果落到 GM 再做尾处理的场景【免费下载链接】catlass本项目是CANN的算子模板库提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考