术语表#

术语/缩略语

含义

PyPTO

PyPTO是CANN采用PTO编程范式的高性能编程框架,旨在简化算子开发流程,同时保留高性能计算的能力。

PTO

PTO(Parallel Tensor/Tile Operation)是一种基于Tensor的编程范式,核心思想是将Tensor作为数据的基本表达方式,通过一系列对Tensor的基本运算来描述并组装完整的计算流程(或计算图)。

Operation

PyPTO中描述计算图中基本运算的单元。每个Operation定义了一个具体的计算逻辑,能够处理输入Tensor并生成输出Tensor。通过组合不同的Operation,可以实现复杂的计算逻辑。

计算图

PyPTO程序从抽象计算描述到硬件执行的完整编译流程。

Tensor Graph

Tensor Graph由Tensor和Operation节点构成,用于描述用户定义的计算流程。该图不涉及Tile展开与内存层级等底层语义,仅作为高层计算逻辑的表达。基于Tensor Graph的优化主要集中在与硬件无关的通用图优化技术上,例如冗余节点消除、常量折叠等。

Tile Graph

Tile Graph由Tile和TileOp构成。Tensor Graph根据TileShape展开,将Tensor分解为Tile,将Operation分解为TileOp。Tile Graph依据TileOp信息以及目标硬件的内存层级,自动推导Tile的存储位置,并在必要时插入内存搬运节点,确保数据在不同内存层级之间正确传输。

Block Graph

Block Graph通过将Tile Graph切分为多个子图,使得每个子图可以调度运行在单个AI Core上。Block Graph用于硬件相关的优化,包括指令编排、片上内存分配、同步操作插入等,从而提升硬件执行效率。

Execute Graph

Execute Graph是编译流程的最终产物,整合了所有优化结果,精确描述各Block Graph之间的依赖关系,用于设备调度器的调度执行。

泳道图

泳道图用于直观展示计算图的实际调度与执行过程。通过IDE的可视化界面,开发者可以观察数据流动路径、操作间的依赖关系以及可能的性能瓶颈,从而更高效地分析和优化算子的执行性能。

TileShape

PyPTO中用于定义张量分块(Tiling)形状的参数,决定了操作在硬件上的并行粒度与数据划分模式。通过合理配置TileShape,可以优化内存使用与计算效率,使计算过程更好地适配硬件特性。

Pass

PyPTO中用于编译优化计算图的阶段,以提升计算图的执行效率和硬件利用率。每个Pass可以对计算图进行特定的优化操作,例如图简化、算子融合、调度优化等。

合图

将计算图中多个逻辑上独立的Operation合并为一个逻辑子图,并由该子图最终生成一个物理计算内核(Kernel)的过程,主要分为深度方向合图和广度方向合图两类。

同构子图

在计算图中,拓扑结构、算子类型完全一致的局部片段。

同构子图组

互为同构子图的片段,形成的集合被称为同构子图组。在广度方向合图 Pass 处理过程中,会为每一组同构子图生成一个唯一的特征标识,即 hashorder。

stitch

打破多个loop循环的边界,将没有依赖关系的多个leaf function执行任务缝合成一个大任务统一下发,减少同步开销,提升调度性能。