GlobalTensor 编程模型【免费下载链接】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::GlobalTensor用于描述存放在全局内存GM中的张量。它是一个轻量包装包含一个__gm__指针以及一个5 维的 shape 与 stride 描述这些元数据会被TLOAD、TSTORE、MGATHER、MSCATTER等内存类指令消费。除非另有说明本文档中的标识符均对应include/pto/common/pto_tile.hpp中的定义。GlobalTensor 类型template typename Element_, typename Shape_, typename Stride_, pto::Layout Layout_ pto::Layout::ND struct GlobalTensor;Element_GM 中存放的标量元素类型。Shape_pto::Shape...最多 5 维。Stride_pto::Stride...最多 5 个 stride以元素数计。Layout_布局hintND、DN、NZ等用于指导 lowering 与目标相关的 fast path。GM 指针类型是GlobalTensor::DType即__gm__ Element_。Shape 与 Stride5 维PTO 将全局内存张量统一建模为 5 维对象。多数 2 维用法会将高维设为1并用最后两维表示(rows, cols)。pto::Shapepto::ShapeN1, N2, N3, N4, N5保存 5 个整数。每个模板参数要么是编译期常量要么是pto::DYNAMIC-1。静态维度通过Shape::staticShape[dim]体现在类型中。动态维度存放在运行时的Shape::shape[dim]由Shape(...)构造函数填充。构造函数通过static_assert强制“运行时参数个数必须等于动态维度个数”不匹配将导致编译期失败。pto::Stridepto::StrideS1, S2, S3, S4, S5与Shape的模式一致但保存 stridestride 以元素计而不是字节。stride 描述某一维索引加 1 时指针应前进多少个元素。GlobalTensor 构造与访问GlobalTensor存放指针以及动态维度的 shape/strideusing GT pto::GlobalTensorfloat, pto::Shape1,1,1,-1,-1, pto::Stride1,1,1,-1,1, pto::Layout::ND; GT t(ptr, /*shape*/{rows, cols}, /*stride*/{ld}); auto* p t.data(); int cols t.GetShape(pto::GlobalTensorDim::DIM_4); int ld t.GetStride(pto::GlobalTensorDim::DIM_3);对完全静态的张量还可查询编译期值constexpr int cols GT::GetShapepto::GlobalTensorDim::DIM_4();布局 hintpto::LayoutGlobalTensor包含一个布局枚举ND、DN、NZ、SCALE、MX_A_ZZ、MX_A_ND、MX_ADN、MX_B_NN、MX_B_ND、MX_B_DN等。它是一个hint可用于启用目标相关 fast path。其原因在于 GlobalTensor 与 Tile 的布局并不一一对应Tile 布局BLayout/SLayout是二维概念外层与可选内层盒化。GlobalTensor 是 5 维对象用单一“外层内层”对无法覆盖全部场景。因此Layout采用标签化方式表达常见存储模式例如NDvsDN的 minor 2D 排列以及NZ等立方友好打包方式。示例常用的 2D helper2 维张量经常使用两类 helperpto::TileShape2DT, rows, cols, layout生成pto::Shape1,1,1,rows,cols当layout Layout::NZ时会生成 NZ 特化 shape。pto::BaseShape2DT, rows, cols, layout生成适用于 2D 视图的pto::Stride...当layout Layout::NZ时会生成 NZ 特化 stride。pto::TileShape2D、pto::BaseShape2D也支持MX_A_ZZ、MX_A_ND、MX_ADN、MX_B_NN、MX_B_ND、MX_B_DN等布局标签。尽管名称中含 “Shape”BaseShape2D实际上是stridehelper它继承自pto::Stride。地址绑定TASSIGNTASSIGN(globalTensor, ptr)会设置GlobalTensor的 GM 指针。指针类型必须与GlobalTensor::DType匹配由TASSIGN_IMPL内部的static_assert强制。最小示例#include pto/pto-inst.hpp using namespace pto; void example(__gm__ float* in, __gm__ float* out) { using TileT TileTileType::Vec, float, 16, 16; using GShape Shape1, 1, 1, 16, 16; using GStride BaseShape2Dfloat, 16, 16, Layout::ND; using GT GlobalTensorfloat, GShape, GStride, Layout::ND; GT gin(in); GT gout(out); TileT t; TLOAD(t, gin); TSTORE(gout, t); }【免费下载链接】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),仅供参考
PTO-ISA GlobalTensor编程模型
发布时间:2026/7/6 0:18:28
GlobalTensor 编程模型【免费下载链接】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::GlobalTensor用于描述存放在全局内存GM中的张量。它是一个轻量包装包含一个__gm__指针以及一个5 维的 shape 与 stride 描述这些元数据会被TLOAD、TSTORE、MGATHER、MSCATTER等内存类指令消费。除非另有说明本文档中的标识符均对应include/pto/common/pto_tile.hpp中的定义。GlobalTensor 类型template typename Element_, typename Shape_, typename Stride_, pto::Layout Layout_ pto::Layout::ND struct GlobalTensor;Element_GM 中存放的标量元素类型。Shape_pto::Shape...最多 5 维。Stride_pto::Stride...最多 5 个 stride以元素数计。Layout_布局hintND、DN、NZ等用于指导 lowering 与目标相关的 fast path。GM 指针类型是GlobalTensor::DType即__gm__ Element_。Shape 与 Stride5 维PTO 将全局内存张量统一建模为 5 维对象。多数 2 维用法会将高维设为1并用最后两维表示(rows, cols)。pto::Shapepto::ShapeN1, N2, N3, N4, N5保存 5 个整数。每个模板参数要么是编译期常量要么是pto::DYNAMIC-1。静态维度通过Shape::staticShape[dim]体现在类型中。动态维度存放在运行时的Shape::shape[dim]由Shape(...)构造函数填充。构造函数通过static_assert强制“运行时参数个数必须等于动态维度个数”不匹配将导致编译期失败。pto::Stridepto::StrideS1, S2, S3, S4, S5与Shape的模式一致但保存 stridestride 以元素计而不是字节。stride 描述某一维索引加 1 时指针应前进多少个元素。GlobalTensor 构造与访问GlobalTensor存放指针以及动态维度的 shape/strideusing GT pto::GlobalTensorfloat, pto::Shape1,1,1,-1,-1, pto::Stride1,1,1,-1,1, pto::Layout::ND; GT t(ptr, /*shape*/{rows, cols}, /*stride*/{ld}); auto* p t.data(); int cols t.GetShape(pto::GlobalTensorDim::DIM_4); int ld t.GetStride(pto::GlobalTensorDim::DIM_3);对完全静态的张量还可查询编译期值constexpr int cols GT::GetShapepto::GlobalTensorDim::DIM_4();布局 hintpto::LayoutGlobalTensor包含一个布局枚举ND、DN、NZ、SCALE、MX_A_ZZ、MX_A_ND、MX_ADN、MX_B_NN、MX_B_ND、MX_B_DN等。它是一个hint可用于启用目标相关 fast path。其原因在于 GlobalTensor 与 Tile 的布局并不一一对应Tile 布局BLayout/SLayout是二维概念外层与可选内层盒化。GlobalTensor 是 5 维对象用单一“外层内层”对无法覆盖全部场景。因此Layout采用标签化方式表达常见存储模式例如NDvsDN的 minor 2D 排列以及NZ等立方友好打包方式。示例常用的 2D helper2 维张量经常使用两类 helperpto::TileShape2DT, rows, cols, layout生成pto::Shape1,1,1,rows,cols当layout Layout::NZ时会生成 NZ 特化 shape。pto::BaseShape2DT, rows, cols, layout生成适用于 2D 视图的pto::Stride...当layout Layout::NZ时会生成 NZ 特化 stride。pto::TileShape2D、pto::BaseShape2D也支持MX_A_ZZ、MX_A_ND、MX_ADN、MX_B_NN、MX_B_ND、MX_B_DN等布局标签。尽管名称中含 “Shape”BaseShape2D实际上是stridehelper它继承自pto::Stride。地址绑定TASSIGNTASSIGN(globalTensor, ptr)会设置GlobalTensor的 GM 指针。指针类型必须与GlobalTensor::DType匹配由TASSIGN_IMPL内部的static_assert强制。最小示例#include pto/pto-inst.hpp using namespace pto; void example(__gm__ float* in, __gm__ float* out) { using TileT TileTileType::Vec, float, 16, 16; using GShape Shape1, 1, 1, 16, 16; using GStride BaseShape2Dfloat, 16, 16, Layout::ND; using GT GlobalTensorfloat, GShape, GStride, Layout::ND; GT gin(in); GT gout(out); TileT t; TLOAD(t, gin); TSTORE(gout, t); }【免费下载链接】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),仅供参考