ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

PTO 虚拟 ISA 核心术语表解读:Tile、有效区域与事件同步的精确定义

PTO 虚拟 ISA 核心术语表解读:Tile、有效区域与事件同步的精确定义 PTO 虚拟 ISA 核心术语表解读Tile、有效区域与事件同步的精确定义【免费下载链接】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本篇技术指南对 CANN pto-isa 仓库《附录 A. 术语表》中的全部核心术语进行逐一展开解读。文章以术语为骨架将每个概念与 PTO-Virtual-ISA-Manual 手册正文执行模型、状态与类型、同步、内存顺序等章节、ISA 通用约定 以及include/pto/下的公共头文件相互印证帮助读者在阅读单条指令文档或编写 Tile 内核前先建立准确、无歧义的架构概念基础。读完本文你将能正确理解Rv/Cv有效区域、Location位置意图、Block/Sub-block 并行粒度、流水线与event synchronization在 PTO 架构中的精确含义并掌握它们在指令语义中的用法。术语表在 PTO 架构体系中的位置《附录 A. 术语表》docs/mkdocs/src/manual/appendix-a-glossary_zh.md是 PTO 虚拟指令集架构手册英文原版手册索引见 index_zh.md的收尾章节。它不是孤立的名词罗列而是整部手册阅读的地基手册正文各章节执行模型、状态与类型、Tile 与 GlobalTensor、同步、指令族契约 等大量复用这些术语而 docs/isa/ 下的逐条指令文档同样以这些概念为语义前提。因此本术语表具备三重作用消除歧义为架构定义与实现定义划定边界例如有效区域之外的值是未指定而非清零统一记号确立[Rv, Cv]、block_idx、subblockid等标准写法衔接实现术语与include/pto/common/pto_tile.hpp、include/pto/common/pto_instr.hpp等公共头文件中的类型一一对应。Tile片上二维操作数术语定义Tile 是片上二维操作数包含类型、形状、布局与有效区域等元数据。从架构角度看Tile 是 PTO 计算类指令的一等公民。手册 状态与类型 章指出PTO 虚拟 ISA 将 Tile 类值表示为!pto.tile...其合法性受元素类型dtype、形状与有效区域兼容性、位置-意图角色以及布局/对齐约束四个维度共同约束。从实现角度看概念上 Tile 位于片上 Tile 存储类似寄存器文件或 SRAM 的存储区并通过TLOAD/TSTORE在全局内存GM与片上之间搬运在 CPU 仿真后端中Tile 存放在主机内存但保持相同的形状/布局/有效区域规则以便验证合法性与语义一致性见 docs/coding/Tile_zh.md。其 C 类型定义在 include/pto/common/pto_tile.hpp。理解 Tile 需要区分两组容易混淆的概念物理形状与有效形状Rows/Cols描述 Tile 的物理存储形状GetValidRow()/GetValidCol()描述参与计算的有效区域修改有效形状不会改变物理步长。以 ISA 通用约定 中的例子说明A5 上int64_t/uint64_t的 RowMajor 输出物理形状为[64,4]、有效形状为[64,1]时物理行步长仍为 4 个元素32 字节把有效列数 1 误当成物理行步长会导致行间结果错位。域domain与语义作用域指令的语义域可能以目标 Tile 或源 Tile 的有效区域定义具体以 docs/isa/ 各指令页为准。例如TSTORE写入的元素范围由有效区域与指令约束共同决定。GlobalTensor全局内存的带类型视图术语定义GlobalTensor 是对全局内存GM的带类型视图包含形状/步幅等元数据通常用于TLOAD/TSTORE。手册 Tile 与 GlobalTensor 章将其与 Tile 并列构成 PTO 数据模型的另一半。GlobalTensor或等价内存视图在 IR 中写作!pto.memref...或等价类的架构可见契约包括与相关 Tile 操作兼容的元素类型内存指令要求的地址与步长解释在顺序约束下的可见性行为。TLOAD与TSTORE指令族是 GM 与 Tile 之间的主要桥接一致性实现必须保持有效域内的元素映射语义、在 event synchronization 与内存模型约束下的顺序保证以及量化/缩放等模式属性的已记录行为。C 侧的类型位于include/pto/common目录其编程模型类型、布局、枚举、约束等可参考 docs/coding/GlobalTensor_zh.md。有效区域valid region[Rv, Cv]术语定义有效区域是 Tile 中在某个操作下具有语义定义的元素子集常写作[Rv, Cv]。这是 PTO 架构中最重要的一等语义。手册 状态与类型 章明确了三条规则语义定义仅作用于声明的有效域索引即0 i Rv且0 j Cv有效域之外的值在未明确说明时为未指定unspecified不要假设一定清零或保持不变多输入操作必须定义域兼容规则。ISA 通用约定 进一步细化指令页中对有效区域内的每个元素(i, j)默认指valid_row dst.GetValidRow()、valid_col dst.GetValidCol()除非指令显式定义不同的迭代域。实现层面Tile 的有效区域可以是静态的RowValid_ Rows_且ColValid_ Cols_完全静态也可以是动态的其一为pto::DYNAMIC-1时有效值存储在 Tile 对象中通过GetValidRow()/GetValidCol()查询且总是连续前缀见 docs/coding/Tile_zh.md。PadValue是编译期策略用于部分实现处理有效区域外元素如 select/copy/pad其效果依赖指令与后端。有效区域还直接约束内存搬运搬运/布局类操作extract/insert/reshape/transpose 等必须定义索引空间映射、有效域映射、部分覆盖域行为以及存在硬件差异时的实现定义约束域外行为要么显式定义如 pad/fill要么声明为未指定见 4.5/4.6 节。位置LocationTile 的存储类别与意图术语定义位置是 Tile 的存储类别/意图例如Vec、Mat、Left、Right、Acc等。位置-意图模型是 PTO 区别于通用 GPU ISA 的特征之一见 总览。手册将Mat/Left/Right/Acc/Bias/Scale等角色提升为参与合法性约束的一等对象一个 Tile 属于哪一类逻辑 Tile 存储例如向量 vs 矩阵/立方寄存器类决定了它能出现在哪些指令的哪些操作数位置。例如矩阵运算族TMATMUL*与TGEMV*的契约必须定义累加域、操作数角色合法性与精度模式交互见 指令族契约 6.5.5 节。位置、dtype、layout、shape 共同构成 Tile 合法性的四个维度非法组合应由后端画像给出确定性拒绝。Block 与 Sub-block并行粒度术语定义Block并行工作的基本单元通常由block_idx标识Sub-blockBlock 内部的细分单元在适用平台上可由subblockid标识。这两个术语定义了 PTO 程序的并行组织方式。手册 执行模型 章描述了三层执行代理Host machine准备负载、提交执行、管理全局资源、Device machine在执行资源间调度 Tile 程序、Core machine执行 Tile/标量指令和同步原语。Block/Sub-block 是 Core machine 侧并行执行的基本组织粒度。调度策略属于实现定义但受架构规则约束独立工作可以乱序并行执行有依赖的工作必须满足要求的 happens-before 关系后端/运行时可以采用 SPMD、MPMD 或混合派发模型。需要注意的是调度启发策略、流水线占用与发射细节等属于实现定义且必须在后端画像中说明但这些实现差异不得改变架构定义的语义。流水线Pipeline阶段重叠调度术语定义流水线是对 load/transform/compute/store 等阶段的重叠调度并通过同步机制协调阶段间依赖。流水线是 PTO 性能编程的核心模式。典型的数据流为TLOADGM - Tile→ 变换/计算 →TSTORETile - GM多个 Tile 程序可以在不同阶段之间重叠执行。手册 执行模型 明确指出PTO 程序以 Tile 粒度运行执行单元可以并发处理相互独立的 Tile 程序可见顺序必须遵循数据依赖与显式同步语义。手册 同步 章列出了流水线交接中必须处理的四类冒险读后写RAW依赖资源复用时的写后读WAR交互写后写WAW顺序约束跨流水线交接冒险内存/向量/矩阵域。事件模型必须提供确定性依赖关系以支持生产者与消费者指令组之间的流水线交接、Tile 与内存资源的安全复用以及在等价程序顺序与依赖描述下可复现执行。可移植且性能良好的模式包括显式且域安全的 tiling 与有效区域管理、通过事件/event synchronization 建立清晰的生产-消费边界见 编程模型契约。event synchronization阶段间的顺序点术语定义event synchronization 用于在阶段类别之间建立顺序关系的同步指令/抽象。事件同步是 PTO 顺序语义的显式载体。手册 同步 章给出的契约是顺序点之前的操作结果按照内存模型对顺序点之后的消费者可见优化与降层过程必须保持同步语义不支持的同步形式必须以确定性诊断拒绝。在 Auto 模式下编译器/运行时应当自动插入合法同步在 Manual 模式下当依赖无法自然保证时程序员必须提供显式同步工具链不得删除必要的用户显式同步除非能证明存在等价的顺序保持。ISA 通用约定 中给出了典型的编码形态某些指令序列需要建立内存与向量流水线之间的顺序关系示例中出现的事件例如set_flag(...)/wait_flag(...)用于表达后端需要满足的顺序约束。事件模型的完整介绍见 docs/coding/Event_zh.md。event synchronization 与内存模型的关系事件同步与内存可见性紧密耦合。手册 内存顺序与一致性 章定义基线模型为依赖有序一致性数据依赖与显式同步定义必须满足的可见顺序相互独立操作在内部可以重排必需同步点必须建立定义的可见性关系。一致性实现必须保证在必需同步/顺序点之后生产者写入对依赖消费者可见显式依赖链中的内存操作保持链路顺序event synchronization 与事件依赖定义的顺序在内存可见性上得到体现。相应地程序应当在生产者/消费者边界使用显式同步、在无定义依赖时避免假设隐式全局顺序、避免依赖未指定域外值。术语速查与深入学习指引术语一句话要点权威依据Tile片上二维操作数含类型/形状/布局/有效区域docs/coding/Tile_zh.md、include/pto/common/pto_tile.hppGlobalTensor全局内存的带类型视图服务于TLOAD/TSTOREdocs/coding/GlobalTensor_zh.md有效区域[Rv, Cv]语义有定义的元素子集域外值未指定docs/isa/conventions_zh.md位置LocationTile 的存储类别/意图参与合法性约束docs/mkdocs/src/manual/03-state-and-types_zh.mdBlock / Sub-block并行工作基本单元及内部细分docs/mkdocs/src/manual/02-machine-model_zh.md流水线load/transform/compute/store 阶段重叠调度docs/mkdocs/src/manual/02-machine-model_zh.mdevent synchronization阶段类别之间建立顺序关系的同步抽象docs/coding/Event_zh.md术语表在手册中起到锚点作用后续章节如附录 B 指令契约模板、附录 D 指令族矩阵均以本表术语为书写语言。建议的阅读路径是先通读本术语表建立概念框架再按 手册索引 顺序阅读正文各章遇到单条指令语义时回到 docs/isa/ 对照逐条指令页若需在代码中验证概念可同时查阅 include/pto/common 下的公共头文件如pto_instr.hpp、pto_tile.hpp它们与术语表、ISA 约定及指令文档共同构成了可交叉验证的完整契约体系。【免费下载链接】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),仅供参考
返回列表