当前位置: 首页 > news >正文

CANN/catlass: Block Epilogue Visitor 偏特化

Block Epilogue Visitor 偏特化

【免费下载链接】catlass本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass

代码位置:include/catlass/epilogue/block/block_epilogue_visitor.hpp

功能说明

这是 EVG 使用的BlockEpilogue偏特化实现。

它负责把一个 block 的结果继续切成更小的 tile,并按LOAD -> COMPUTE -> STORE的顺序驱动 EVG 在每个 tile 上执行,同时通过两套 callbacks 组织双缓冲流水。

对应模板形态

EVG 使用的BlockEpilogue形态如下:

using BlockEpilogue = Epilogue::Block::BlockEpilogue< Epilogue::EpilogueVisitor<false>, ArchTag, Int<computeLength>, EVG, ElementC >;

或:

using BlockEpilogue = Epilogue::Block::BlockEpilogue< Epilogue::EpilogueVisitor<true>, ArchTag, Int<computeLength>, EVG, ElementC >;

对应的偏特化模板为:

template < bool USE_UB_WORKSPACE_, class ArchTag_, class ComputeLength_, class EVG_, class ElementC_ > class BlockEpilogue< EpilogueVisitor<USE_UB_WORKSPACE_>, ArchTag_, ComputeLength_, EVG_, ElementC_ >;

关键职责

  • 接收EVG::Params
  • 把 block 结果切成 tile
  • 为 EVG 分配两套 callbacks
  • LOAD -> COMPUTE -> STORE顺序驱动每个 tile
  • 用事件同步实现双缓冲

关键参数

  • EpilogueVisitor<false>:从 GM workspace 读取 MMAD 结果
  • EpilogueVisitor<true>:直接从 UB 读取 MMAD 结果
  • ComputeLength:单次 tile 处理元素数,要求满足对齐约束
  • EVG:完整的尾处理图
  • ElementC:MMAD 输出类型

执行要点

  • USE_UB_WORKSPACE == false时,EVG 从 GM workspace 读取C
  • USE_UB_WORKSPACE == true时,EVG 直接使用 UB 中的 MMAD 结果
  • 内部会按当前 tile 宽度自动选择“多行整列处理”或“逐行分列处理”
  • 两套 callbacks 会交替工作,用来形成 tile 级的双缓冲流水

相关文档

  • block_epilogue
  • fusion/README
  • evg_api

【免费下载链接】catlass本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/783813/

相关文章:

  • LLM 模型图模式改造指南
  • 基于Wechaty与OpenAI API构建智能微信机器人的完整实践指南
  • AGC020D 学习笔记
  • 3步解锁高效工作流:KeymouseGo终极鼠标键盘自动化指南
  • SAP与PLM系统BOM集成实战:如何用ABAP函数CSAP_MAT_BOM_MAINTAIN实现‘增量更新’与ECN管理
  • AI预测癌症药物不良反应:效能评估、技术原理与临床落地挑战
  • 2026年山西精准获客与本地门店引流完全指南:GEO优化、短视频代运营五大服务商深度横评 - 优质企业观察收录
  • 【2026最新】11个免费音乐素材网站推荐|无版权BGM下载,商用可用! - 拾光而行
  • 为Hermes Agent配置自定义Provider并接入Taotoken多模型服务
  • 3步搞定百度网盘提取码:从新手到高手的完整进阶指南
  • 保定奥迪维修保养推荐,专业服务值得关注 - 品牌排行榜
  • CANN/ops-cv双线性抗锯齿上采样反向算子
  • AzurLaneAutoScript深度解析:碧蓝航线自动化脚本的技术架构与实践应用
  • Linux内核编译踩坑记:手把手教你解决-Werror和-Wunused-variable报错(附Makefile修改)
  • 惊!AI竟染上“冰瘾”,还能自主交易,是觉醒还是另有隐情?
  • 机器人视觉运动策略的泛化能力提升方案
  • CANN PTO自动模式总览
  • CANN学习中心GitCode环境体验指南
  • 3个关键步骤:用MouseTester精准诊断鼠标性能瓶颈
  • CANN/asc-devkit Arange API文档
  • 2026年广东二手PCB设备买卖市场深度横评与选购指南 - 年度推荐企业名录
  • 可靠的东莞市短视频推广公司,广东易搜网络科技有限公司值得信赖,短视频制作/短视频运营推广/短视频推广,短视频团队哪家专业 - 品牌推荐师
  • CANN基础算子贡献指南
  • CANN PyPTO并行Tensor编程框架
  • CANN/ATVC ReluWithReduceSum样例
  • AI智能体驱动的修仙世界模拟器:规则与LLM融合的自主演化系统
  • 收藏!程序员必备:从传统开发转向AI Agent开发的核心能力跃迁指南
  • 2026数字化展厅策划设计施工运维一站式公司解析 - 品牌排行榜
  • 2026年立式锯床厂家推荐排行榜:金属切割、精密、数控、液压、全自动立式锯床优质品牌之选! - 速递信息
  • Balena Etcher:极致安全的跨平台镜像烧录工具深度解析