Tiling下沉

在静态图模式下,可以通过整图下沉优化调度性能。将完整的计算图一次性下发至Device侧,后续执行则无需Host参与,由Device自主完成计算,从而减少Host-Device交互开销,提升执行效率。部分算子的Tiling计算依赖运行时输入的具体数值(Tiling值依赖),需在执行时动态计算Tiling参数。针对该场景,可采用Tiling下沉优化方案:将Tiling计算下沉至Device侧的AI CPU上执行,从而实现计算全程在Device侧高效完成。

  • 基于新版本CANN包(支持Tiling下沉特性)编译生成的Tiling下沉算子,不兼容旧版CANN(不支持Tiling下沉特性)运行环境。
  • 当前仅融合算子(矢量计算和矩阵计算融合)支持进行Tiling下沉。
  • Tiling下沉功能仅支持如下产品型号:
    • Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件

Tiling下沉场景下,算子工程的op_host目录结构如下,将Tiling实现文件单独放在在一个cpp文件中,示例中为add_custom_tiling.cpp。

├── op_host
│   ├── add_custom.cpp // 算子原型定义、InferShape、InferDataType实现
│   ├── add_custom_tiling.cpp // Tiling函数实现
│   ├── add_custom_tiling.h // TilingData结构体定义、Tiling函数声明
│   └── CMakeLists.txt

以AddCustom算子为例,讲解关键代码文件的具体实现方法如下: