PTO Tile Intrinsics 编程模型
PTO Tile Intrinsics 编程模型【免费下载链接】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 Tile Lib 提供以Tile 粒度为核心的 C 内建接口intrinsics并可映射到 PTO ISA。该模型的设计目标是跨设备代际的可移植性硬件细节可能变化指令细节、存储布局、调度约束等但编程模型保持稳定。接近硬件的性能表达能力Tile 与 GlobalTensor 足够底层可表达高效的数据搬运与计算。覆盖两类开发者偏“编译器做重活”的高效编程方式以及偏“显式控制放置与同步”的专家调优方式。抽象执行模型core/device/host参见docs/machine/abstract-machine_zh.md。核心概念Tile固定容量的二维片上缓冲区概念上类似 tile 寄存器 / SRAM 块也是大多数 PTO 指令的主要计算单元。参见docs/coding/Tile_zh.md。GlobalTensor全局内存GM的轻量级视图带 5 维 shape/stride/layout 元数据被TLOAD、TSTORE等内存类指令消费。参见docs/coding/GlobalTensor_zh.md。Scalar用于参数化指令的立即数与枚举舍入模式、比较模式、原子模式等。参见docs/coding/Scalar_zh.md。Event显式的依赖 token用于在不引入全局屏障的情况下表达流水线类之间的顺序约束。参见docs/coding/Event_zh.md。两种开发风格PTO-AutoPTO-Auto 面向希望获得简单、可移植体验的开发者编译器/运行时选择内存放置与地址绑定策略。编译器插入必需的同步。编译器调度操作并在可能时做融合。该模式适合作为正确性与可移植性的起点。PTO-ManualPTO-Manual 面向需要完全控制以进行性能调优的开发者开发者控制内存放置与绑定例如通过TASSIGN。开发者显式表达顺序events 和/或TSYNC。开发者控制操作调度与流水线结构。该模式使关键内核能够进行专家级优化同时仍复用同一套 Tile/GlobalTensor 抽象。执行模型SPMD 与 MPMDPTO 支持SPMD与MPMD两种执行模型。这两种模型描述的是工作如何映射到核心它们与Auto vs Manual开发风格是正交的可以写 SPMD-Auto、SPMD-Manual、MPMD-Auto 或 MPMD-Manual。SPMDSingle Program, Multiple Data在 SPMD 中所有参与的核心运行同一入口函数每个核心使用自身的运行时身份例如block_idx选择其数据区域。当存在 sub-block 分解时可以构造稳定的“虚拟 id”auto cid get_block_idx(); auto vid get_block_idx() * get_subblockdim() get_subblockid();SPMD 适合规则的张量 tilingGEMM、按行 softmax、逐元素算子等。MPMDMultiple Program, Multiple Data在 MPMD 中不同核心或核心组可以在同一 tile 图中执行不同的 tile 程序。概念上由Device Machine 调度器决定某个核心运行哪段“程序”。一种可移植写法是调度器提供一个task id给内核入口函数在内核中按 task 分派__global__ __aicore__ void KernelMPMD(__gm__ float* out, __gm__ const float* in, uint32_t task_id) { switch (task_id) { case 0: return ProducerStage(out, in); case 1: return ConsumerStage(out, in); default: return; } }说明task_id的获取机制依赖平台/运行时抽象模型只要求 Device Machine 能将不同 tile block 调度到可用核心。也可以用多个入口点多个 kernel替代单个入口点 switch的形式。【免费下载链接】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),仅供参考
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2598876.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!