SuperKernel开发

SuperKernel是一种算子的二进制融合技术,与源码融合不同,它聚焦于内核函数 (Kernel) 的二进制的调度方案,展开深度优化,于已编译的二进制代码基础上融合创建一个超级Kernel函数(SuperKernel),以调用子函数的方式调用多个其他内核函数,也就是子Kernel。相对于单算子下发,SuperKernel技术可以减少任务调度等待时间和调度开销,同时利用Task间隙资源进一步优化算子头开销。

  • SuperKernel仅适用于静态图场景。
  • SuperKernel适用于如下型号:
    • Atlas A3 训练系列产品 / Atlas A3 推理系列产品
    • Atlas 350 加速卡

自定义算子支持SuperKernel

自定义算子支持SuperKernel与普通算子在开发流程上并无显著差异,但需注意一些特定约束(详见下文)。当前SuperKernel特性仅支持在Pytorch框架使用,所以完成算子入图(GE图)开发开发后,还需要参考PyTorch图模式使用指南(TorchAir)中的自定义算子入图章节,完成Pytorch入图。同时,TorchAir提供标定SuperKernel范围的能力,用户可根据实际业务需求对融合范围内的算子进行标记和优化配置。具体内容请参考PyTorch图模式使用指南(TorchAir)中的“GE图模式 > GE图模式功能 > 图内标定SuperKernel范围章节。

开发时的特定约束说明如下:

性能优化建议