news 2026/5/9 22:51:19

PTO Tile Intrinsics 编程模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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-isa

PTO 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 元数据;被TLOADTSTORE等内存类指令消费。参见:docs/coding/GlobalTensor_zh.md
  • Scalar:用于参数化指令的立即数与枚举(舍入模式、比较模式、原子模式等)。参见:docs/coding/Scalar_zh.md
  • Event:显式的依赖 token,用于在不引入全局屏障的情况下表达流水线类之间的顺序约束。参见:docs/coding/Event_zh.md

两种开发风格

PTO-Auto

PTO-Auto 面向希望获得简单、可移植体验的开发者:

  • 编译器/运行时选择内存放置与地址绑定策略。
  • 编译器插入必需的同步。
  • 编译器调度操作并在可能时做融合。

该模式适合作为正确性与可移植性的起点。

PTO-Manual

PTO-Manual 面向需要完全控制以进行性能调优的开发者:

  • 开发者控制内存放置与绑定(例如通过TASSIGN)。
  • 开发者显式表达顺序(events 和/或TSYNC)。
  • 开发者控制操作调度与流水线结构。

该模式使关键内核能够进行专家级优化,同时仍复用同一套 Tile/GlobalTensor 抽象。

执行模型:SPMD 与 MPMD

PTO 支持SPMDMPMD两种执行模型。

这两种模型描述的是工作如何映射到核心;它们与Auto vs Manual开发风格是正交的(可以写 SPMD-Auto、SPMD-Manual、MPMD-Auto 或 MPMD-Manual)。

SPMD(Single Program, Multiple Data)

在 SPMD 中,所有参与的核心运行同一入口函数,每个核心使用自身的运行时身份(例如block_idx)选择其数据区域。

当存在 sub-block 分解时,可以构造稳定的“虚拟 id”:

auto cid = get_block_idx(); auto vid = get_block_idx() * get_subblockdim() + get_subblockid();

SPMD 适合规则的张量 tiling(GEMM、按行 softmax、逐元素算子等)。

MPMD(Multiple 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 22:51:18

数据库性能优化的两大基石

数据库性能优化是一个永恒的话题,DBA们似乎永远在讨论它。究其原因,性能问题是最终用户抱怨最多的一类技术问题——没有之一。如果DBA能迅速解决性能瓶颈,他们就是团队里的英雄;如果迟迟无法定位问题,再好的架构设计也…

作者头像 李华
网站建设 2026/5/9 22:50:46

Python 爬虫高级实战:百亿级数据爬虫架构优化

前言 随着互联网公开数据源体量呈指数级增长,普通分布式爬虫架构在面对百亿级网页、接口、结构化数据采集场景时,暴露出队列阻塞、节点扩容瓶颈、存储写入瓶颈、去重效率低下、资源开销失控、任务调度混乱等一系列问题。常规多线程、多进程单机爬虫仅能…

作者头像 李华
网站建设 2026/5/9 22:49:30

IT66353:3 进 1 出 HDMI2.0 18Gbps 重定时器切换芯片方案

标签:# 嵌入式硬件 #HDMI 切换器 #4K 高清 #音视频方案 #ITE 芯片一、前言多设备共享显示场景中,机顶盒、游戏主机、电脑、笔记本等多信号源切换需求日益普遍,传统 HDMI 切换器存在长线传输信号衰减、4K60Hz 画面抖动、切换黑屏、兼容性差、外…

作者头像 李华
网站建设 2026/5/9 22:37:36

RAG-查询前处理

**“**查询前处理是在用户提问之后,RAG系统去做检索查询之前做的事情。为了系统能够给出最精确的回答,需要在查询的过程做些优化。” 前面文章我们介绍了向量数据库,Text2SQL查询MySQL的知识内容。了解了在RAG系统中会存在多个不同的数据库。…

作者头像 李华
网站建设 2026/5/9 22:33:08

在NPU环境上适配HunyuanImage-3.0模型的推理

在NPU环境上适配HunyuanImage-3.0模型的推理 【免费下载链接】cann-recipes-infer 本项目针对LLM与多模态模型推理业务中的典型模型、加速算法,提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-infer 概述 HunyuanImage-3.0是…

作者头像 李华
网站建设 2026/5/9 22:32:19

Web 3.0技术内核:区块链、AI与边缘计算的融合挑战与实践路径

1. 项目概述:Web 3.0的技术内核与融合挑战最近几年,Web 3.0从一个技术圈的热词,逐渐演变为一个被广泛讨论的下一代互联网愿景。作为一名长期关注分布式系统和网络架构的从业者,我观察到很多人对Web 3.0的理解还停留在“去中心化金…

作者头像 李华