TileMmad / TileMmadTlaTile 层 Mmad 计算【免费下载链接】catlass本项目是CANN的算子模板库提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass代码位置[TOC]概述Tile 层 Mmad 模块完成 L0A × L0B → L0C 的矩阵乘加C A * B直接调用AscendC::Mmad硬件指令。L0A/L0B/L0C 数据排布固定为 zZ / nZ / zN。提供非 TLATileMmad和 TLATileMmadTla两套风格。API 清单API风格支持 BiasL0 Batch自动维度架构说明TileMmad非 TLA✓——AtlasA2 Ascend950直接操作 AscendC::LocalTensorTileMmadTlaTLA✓✓✓AtlasA2 Ascend950tla::Tensor 封装自动维度提取功能对比特性TileMmadTileMmadTla操作数类型AscendC::LocalTensorTtla::TensorLocalTensorT, ...无 Bias mmad✓✓带 Bias mmad✓✓L0 Batch mmad—✓自动维度提取—✓模式 4unitFlag 并行搬运✓✓kDirectionAlignAtlasA2 float nZ L1A同左GEMV 模式控制Ascend950disableGemvAscend950disableGemvGEMV 自动规避—AtlasA2 M1→M16模式 4调用示例非 TLA#include catlass/gemm/tile/tile_mmad.hpp using MmadOp Tile::TileMmadArch::AtlasA2, Gemm::GemmTypehalf, layout::zZ, Gemm::GemmTypehalf, layout::nZ, void; MmadOp mmadOp; mmadOp(l0CTensor, l0ATensor, l0BTensor, 64, 64, 32);TLA推荐#include catlass/gemm/tile/tile_mmad.hpp #include tla/tensor.hpp auto l0cTensor tla::MakeTensor(l0c, l0cLayout, Arch::PositionL0C{}); auto l0aTensor tla::MakeTensor(l0a, l0aLayout, Arch::PositionL0A{}); auto l0bTensor tla::MakeTensor(l0b, l0bLayout, Arch::PositionL0B{}); Tile::TileMmadTlaArch::AtlasA2, half, layout::zN mmadOp; mmadOp(l0cTensor, l0aTensor, l0bTensor); // 自动提取 m/n/k模板选择指南场景推荐传统 blockMmad 组装TileMmadTLA 风格 kernelPackedTileCopyTla 配合TileMmadTla模式 1 或 4需要 Bias 累加TileMmadTla模式 2FlashAttention L0 BatchTileMmadTla模式 3追求代码简洁TileMmadTla模式 4 自动提取【免费下载链接】catlass本项目是CANN的算子模板库提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考