Graph-autofusion super_kernel极简示例

📅 2026/7/14 22:00:56 👁️ 阅读次数 📝 编程学习
Graph-autofusion super_kernel极简示例

super_kernel极简sample

【免费下载链接】graph-autofusionGraph-autofusion 是一个面向昇腾(Ascend)芯片的轻量级、解耦式组件集合,旨在通过自动融合技术加速模型执行。 目前已开源 SuperKernel 组件,未来将持续开放更多自动融合相关模块。项目地址: https://gitcode.com/cann/graph-autofusion

用例功能:

该sample展示了如何使用super_kernel完成算子融合,包括算子融合的定义、编译、执行等。 核心特点:

  • 依赖简单,仅依赖AscendC与runtime环境。
  • 使用python封装底层c接口,简化开发流程。

目录结构

├── super_kernel_runtime_ascendc_only # 目录 └── superkernel_runtime_ascendc_basic.py # 主入口,流程上包含子kernel编译、superkernel编译、内存分配、加载执行等 └── compile_sk.py # 编译sub_kernel、super_kernel算子 └── utils.py # 工具函数

用例介绍

该用例通过编译时依赖ascendc,执行时依赖runtime,展示了super_kernel的基本功能。主要分为几步:

    1. 初始化
    1. 编译sub_kernel,编译super_kernel,设置super kernel中子kernel的topo关系,便于内存分配
    1. 内存分配,输入数据构造
    1. kernel加载
    1. launch执行,包含args排布等
    1. 打印输出, 输出结果校验
    1. 资源清理释放,包括内存、kernel、stream等

解释说明:

  1. 子kernel的拓扑关系,通过字符串表示,比如pow的输出是isinf的输入,则pow的output与isinf的input使用相同字符串表示
  2. 分配内存时通过字符串来表达内存相同的内存地址
  3. launch args时,按照[pow_in1, pow_in2, pow_ws, isinf_in1, isinf_out1, isinf_ws]排布

执行命令

python3 superkernel_runtime_ascendc_basic.py

预期执行结果

执行后打印显示success

execute sample success

【免费下载链接】graph-autofusionGraph-autofusion 是一个面向昇腾(Ascend)芯片的轻量级、解耦式组件集合,旨在通过自动融合技术加速模型执行。 目前已开源 SuperKernel 组件,未来将持续开放更多自动融合相关模块。项目地址: https://gitcode.com/cann/graph-autofusion

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