Catlass 后处理Epilogue组件清单【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills导航新架构文档已建立 → 设计时优先阅读 architecture/02-block-layer.md §2.3 BlockEpilogue 部分和 kernels/epilogue-patterns.md。本文档作为 catlass 内置组件索引补充。若下表无所需运算先走 custom-epilogue.md设计确认 catlass 是否已有 Tile → 无则先设计自定义 Tile再在 codegen 中落盘op_kernel/custom_epilogue/。Epilogue 组件分为Tile 级单 tile 内操作和Block 级协调多个 tile两层按功能分为以下类别。Tile 级组件类别可选组件说明激活函数TileElemWiseGelu,TileElemWiseSiluGELU、SILU 激活无现成TileElemWiseTanh时在自定义 Tile 中用Exp/Muls/Adds/Div实现 (\tanh)与 Silu 同双缓冲范式或评估AscendC::Tanh与固定COMPUTE_LENGTH、小 (M\times N) 的运行期 UB 风险逐元素运算TileElemWiseAdd,TileElemWiseMul,TileElemWiseMuls加法、乘法、标量乘广播运算TileBroadcastAdd,TileBroadcastMul,TileBroadcastInplaceByColumn,TileBroadcastInplaceByRow广播加/乘、按列/行原地广播数据搬运TileCopy含CopyGMToUB、CopyUBToGM变体GM ↔ UB 搬运类型转换TileCast精度转换数据重排TileSwizzle内存布局重排量化反量化TileRowBroadcastMul,TileBroadcastOneBlk,TileOneBlkColumnBroadcastMul,TilePerTokenDequant行广播乘、单块广播、列广播乘、per-token 反量化Block 级组件类别可选组件说明通用后处理BlockEpilogue组合 Tile 组件的标准流水单源逐元素BlockEpilogueElemwiseOneSource带一个额外输入如加偏置无源逐元素BlockEpilogueElemwiseNoSource无额外输入的后处理SoftmaxBlockEpilogueOnlineSoftmaxNoMask在线 Softmax量化反量化BlockEpiloguePerTokenDequant,BlockEpilogueW4A4PerTokenPerChannelDequant,BlockEpilogueDequant反量化量化反量化激活BlockEpilogue组合 dequant tiles TileElemWiseGelu量化乘 反量化 激活融合GEMM/GEMVBlockEpilogueGEMM,BlockEpilogueGEMVGEMM/GEMV 专用Flash AttentionBlockEpilogueFARescaleO,BlockEpilogueFASoftmaxFA 后处理MLABlockEpilogueMLARescaleO,BlockEpilogueMLASoftmax等MLA 后处理组装模式BlockEpilogue将多个 Tile 组件组合为后处理流水线典型模式模式流水线典型用例纯矩阵乘无 EpilogueBlockEpilogue void基础 Matmul激活函数Copy入 → GELU/SILU → Copy出Matmul GELU加偏置Copy入 → Add(额外源) → Copy出Matmul Bias加偏置激活Copy入 → Add → GELU → Copy出Matmul Bias GELU广播运算Copy入 → BroadcastAdd → Mul → Copy出融合后处理量化反量化TileRowBroadcastMul → TileBroadcastOneBlk → TileOneBlkColumnBroadcastMul → TileCopyW8A8 量化乘 per-token 反量化量化反量化激活TileRowBroadcastMul → TileBroadcastOneBlk → TileOneBlkColumnBroadcastMul → TileElemWiseGelu → TileCopyW8A8 量化乘 反量化 GELU选型原则按需组合只选需要的环节不要全部引入Tile 组件按序排列Copy入 → 计算 → Copy出Block 组件接收 Tile 列表BlockEpilogueDispatchPolicy, InType, OutType, Tile...无后处理时设BlockEpilogue void【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考