ConvTile 编程模型【免费下载链接】pto-isaParallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms.项目地址: https://gitcode.com/cann/pto-isaPTO Lib 程序可基于ConvTile编写卷积相关算子。ConvTile是固定容量的 2D 到 6D 缓冲对象也是 PTO 卷积类操作中的主要计算单元和数据搬运单元。从概念上说ConvTile驻留在片上 Tile 存储中类似寄存器文件或片上 SRAM并通过TLOAD/TSTORE与全局内存GM之间搬运数据。本文档说明include/pto/common/pto_tile.hpp中的 CConvTile类型及其布局和形状约束。ConvTile 表示什么一个ConvTile主要由以下几类属性定义位置Location该 Tile 所属的逻辑存储类别如矩阵/立方寄存器等。元素类型Element type标量元素类型如float、half、int8_t等。缓冲区大小Buffer sizeConvTile的静态缓冲容量。布局Layout如NCHW、NHWC、NC1HWC0等用于指导 lowering 和目标相关优化路径。形状Shapepto::ConvTileShape...支持最多 6 个维度。pto::ConvTile类型ConvTile通过 C 模板类型声明pto::ConvTile pto::TileType Loc_, Element_, BufferSize_, pto::Layout_ layout, pto::ConvTileShape Shape_ ;位置TileTypeTileType表示 Tile 的逻辑/物理存储类别同时参与重载选择和编译期检查。常见位置包括TileType::Vec向量 Tile 存储UB / 向量流水线。TileType::Mat通用矩阵 Tile 存储矩阵 L1。每条指令允许使用哪些位置应以docs/isa/下对应指令文档为准。容量BufferSize_BufferSize_定义了 Tile 对象的静态容量。多数指令要求 Tile 具备静态形状以便在编译期进行特化和优化。布局pto::LayoutConvTile包含一个布局枚举如NCHWNHWCNC1HWC0FRACTAL_ZFRACTAL_Z_S16S8布局信息会影响后端实现、lowering 路径以及特定目标上的快速路径选择。形状pto::ConvTileShapepto::ConvTileShape...Shapes支持 1 到 6 个整型模板参数。每个维度既可以是编译期常量也可以是pto::DYNAMIC即-1。静态维度保存在类型信息中可通过ConvTileShape::staticShape[dim]获取。动态维度保存在运行时对象ConvTileShape::shape[dim]中并由ConvTileShape(...)构造函数赋值。构造函数会通过static_assert检查“运行时传入参数个数是否与动态维度数量一致”因此若构造参数不匹配会在编译期报错。地址绑定TASSIGN在手动放置流程中TASSIGN(tile, addr)用于把一个ConvTile对象绑定到实现定义的地址。在自动模式中TASSIGN(tile, addr)可能根据构建配置被处理为 no-op。具体约束请参考docs/isa/TASSIGN.md。最小示例#include pto/pto-inst.hpp using namespace pto; void example(__gm__ half* in, __gm__ half* out) { using TileT ConvTileTileType::Mat, half, 4096, Layout::NC1HWC0, pto::ConvTileShape1, 1, 16, 16, 16; using GShape Shape1, 1, 16, 16, 16; using GStride Stride1 * 16* 16* 16, 16* 16* 16, 16 * 16, 16, 1; using GT GlobalTensorhalf, GShape, GStride, Layout::NC1HWC0; GT gin(in); TileT tile5d; TASSIGN(tile5d, 0x0); TLOAD(tile5d, gin); }【免费下载链接】pto-isaParallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms.项目地址: https://gitcode.com/cann/pto-isa创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
CANN PTO ConvTile编程模型
发布时间:2026/7/14 16:47:28
ConvTile 编程模型【免费下载链接】pto-isaParallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms.项目地址: https://gitcode.com/cann/pto-isaPTO Lib 程序可基于ConvTile编写卷积相关算子。ConvTile是固定容量的 2D 到 6D 缓冲对象也是 PTO 卷积类操作中的主要计算单元和数据搬运单元。从概念上说ConvTile驻留在片上 Tile 存储中类似寄存器文件或片上 SRAM并通过TLOAD/TSTORE与全局内存GM之间搬运数据。本文档说明include/pto/common/pto_tile.hpp中的 CConvTile类型及其布局和形状约束。ConvTile 表示什么一个ConvTile主要由以下几类属性定义位置Location该 Tile 所属的逻辑存储类别如矩阵/立方寄存器等。元素类型Element type标量元素类型如float、half、int8_t等。缓冲区大小Buffer sizeConvTile的静态缓冲容量。布局Layout如NCHW、NHWC、NC1HWC0等用于指导 lowering 和目标相关优化路径。形状Shapepto::ConvTileShape...支持最多 6 个维度。pto::ConvTile类型ConvTile通过 C 模板类型声明pto::ConvTile pto::TileType Loc_, Element_, BufferSize_, pto::Layout_ layout, pto::ConvTileShape Shape_ ;位置TileTypeTileType表示 Tile 的逻辑/物理存储类别同时参与重载选择和编译期检查。常见位置包括TileType::Vec向量 Tile 存储UB / 向量流水线。TileType::Mat通用矩阵 Tile 存储矩阵 L1。每条指令允许使用哪些位置应以docs/isa/下对应指令文档为准。容量BufferSize_BufferSize_定义了 Tile 对象的静态容量。多数指令要求 Tile 具备静态形状以便在编译期进行特化和优化。布局pto::LayoutConvTile包含一个布局枚举如NCHWNHWCNC1HWC0FRACTAL_ZFRACTAL_Z_S16S8布局信息会影响后端实现、lowering 路径以及特定目标上的快速路径选择。形状pto::ConvTileShapepto::ConvTileShape...Shapes支持 1 到 6 个整型模板参数。每个维度既可以是编译期常量也可以是pto::DYNAMIC即-1。静态维度保存在类型信息中可通过ConvTileShape::staticShape[dim]获取。动态维度保存在运行时对象ConvTileShape::shape[dim]中并由ConvTileShape(...)构造函数赋值。构造函数会通过static_assert检查“运行时传入参数个数是否与动态维度数量一致”因此若构造参数不匹配会在编译期报错。地址绑定TASSIGN在手动放置流程中TASSIGN(tile, addr)用于把一个ConvTile对象绑定到实现定义的地址。在自动模式中TASSIGN(tile, addr)可能根据构建配置被处理为 no-op。具体约束请参考docs/isa/TASSIGN.md。最小示例#include pto/pto-inst.hpp using namespace pto; void example(__gm__ half* in, __gm__ half* out) { using TileT ConvTileTileType::Mat, half, 4096, Layout::NC1HWC0, pto::ConvTileShape1, 1, 16, 16, 16; using GShape Shape1, 1, 16, 16, 16; using GStride Stride1 * 16* 16* 16, 16* 16* 16, 16 * 16, 16, 1; using GT GlobalTensorhalf, GShape, GStride, Layout::NC1HWC0; GT gin(in); TileT tile5d; TASSIGN(tile5d, 0x0); TLOAD(tile5d, gin); }【免费下载链接】pto-isaParallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms.项目地址: https://gitcode.com/cann/pto-isa创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考