当前位置: 首页 > news >正文

CANN/pto-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

PTO Tile Lib 支持显式事件(event)模型,用于表达操作之间的依赖关系,而不必为每条指令都引入全局屏障。

本文档描述include/pto/common/pto_instr.hppinclude/pto/common/event.hpp中使用的 C++ 事件类型。

注意:具体的pto::Event<SrcOp, DstOp>类型仅在设备构建(__CCE_AICORE__)中定义。CPU 仿真后端通常将TSYNC视为 no-op,并依赖单线程的普通程序顺序来验证语义。

关键类型

pto::Op

pto::Op是类似 opcode 的枚举,用于对操作分类。每个Op映射到一个硬件流水线(PIPE_VPIPE_MTE2等)。

pto::RecordEvent

许多内建接口(例如TADDTLOADTSTORE)会返回pto::RecordEvent。它是一个标记值,可赋给Event<SrcOp, DstOp>,用于在该 op 结束后记录一个 token。

pto::Event<SrcOp, DstOp>(仅设备)

在设备构建(__CCE_AICORE__)中,include/pto/common/event.hpp定义:

template <Op SrcOp, Op DstOp> struct Event { void Wait(); void Record(); Event& operator=(RecordEvent); };
  • Wait():阻塞直到 producer 侧 token 满足。
  • Record():在 producer 流水线上设置 token。
  • evt = OP(...):从RecordEvent赋值会自动记录 token。

模板参数编码 producer/consumer 的 opcode,用于选择正确的流水线对。

TSYNC<OpCode>()(单流水线屏障)

TSYNC<OpCode>()是单 op 的屏障形式,由TSYNC_IMPL<OpCode>()实现:

  • 在设备上,当前实现将单 op 形式限制在向量流水线 op(PIPE_V)上。
  • 在 CPU 仿真后端(__CPU_SIM)中,TSYNC_IMPL为 no-op。

内建接口中的WaitEvents&...机制

include/pto/common/pto_instr.hpp中多数内建接口在参数末尾带有WaitEvents&... events可变参包,模式为:

  • 内建接口调用TSYNC(events...)
  • TSYNC(events...)调用WaitAllEvents(events...),对每个 event 调用events.Wait()
  • 指令执行后,内建接口返回RecordEvent

这支持一种“SSA 风格”的 C++ 写法:

  1. 将 event token 作为 C++ 变量保存。
  2. 将它们传给下一条 op 以表达顺序约束。
  3. 将 op 返回的RecordEvent赋给 event 变量以记录新 token。

抽象层面的顺序建议

事件主要用于表达流水线类之间的顺序(例如“内存加载完成后向量计算才能消费该 Tile”)。

  • 没有显式数据或事件依赖的操作,在设备上可能乱序执行。
  • 通过事件建立依赖链的操作,必须满足Wait()/Record()所隐含的顺序。

当顺序对正确性有影响时,docs/isa/指令页会说明相关约束(中文参考页参见docs/isa/README_zh.md)。

最小示例

#include <pto/pto-inst.hpp> using namespace pto; void pipeline(__gm__ float* in0, __gm__ float* in1, __gm__ float* out) { using TileT = Tile<TileType::Vec, float, 16, 16>; using GShape = Shape<1, 1, 1, 16, 16>; using GStride = BaseShape2D<float, 16, 16, Layout::ND>; using GT = GlobalTensor<float, GShape, GStride, Layout::ND>; GT gin0(in0), gin1(in1), gout(out); TileT a, b, c; Event<Op::TLOAD, Op::TADD> e0; Event<Op::TLOAD, Op::TADD> e1; Event<Op::TADD, Op::TSTORE_VEC> e2; e0 = TLOAD(a, gin0); e1 = TLOAD(b, gin1); e2 = TADD(c, a, b, e0, e1); TSTORE(gout, c, e2); }

【免费下载链接】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.jsqmd.com/news/785605/

相关文章:

  • 成都螺纹钢供应商|专注西南建筑钢材一站式批发|获取盛世钢联免费钢筋报价 - 四川盛世钢联营销中心
  • 高频脉冲电源生产厂家选择:优质供应商评估标准深度解析
  • 如何自定义一个 Codex Skill:用 myskill-global 搭建父子工作流
  • AI开发中的邪恶问题:从技术难题到系统治理的实践指南
  • CANN KV缓存选择算子
  • 可见性、有序性、原子性
  • 计算机网络参考模型——OIS和TCP/IP(图解与核心知识点)华为数通认证必备知识点笔记
  • Android类加载
  • 2026交调系统厂家靠谱推荐,广州聚杰芯科,全链条自主可控 - 品牌速递
  • CANN Qwen3-next推理优化
  • 观察Taotoken用量看板如何帮助个人开发者优化Token消耗
  • 成都钢板经销商|专注西南板材一站式批发|获取盛世钢联免费钢板报价 - 四川盛世钢联营销中心
  • VibeVoice实现90分钟、多角色播客生成,拓展语音合成新边界 - ace-
  • C++内存模型
  • 清洁度分析仪究竟哪家靠谱?2026 AI液冷清洁度分析仪选型避坑指南 - 工业干货社
  • CANN模型推理并行策略分析
  • 前后端分离作业管理系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • 基于Swin-UNETR的AI冠状动脉钙化自动评分系统开发与临床验证
  • 2026交调系统哪家好?广州聚杰芯科交调系统,质量好、信得过 - 品牌速递
  • 成都螺纹钢代理商|专注西南建筑钢材一站式批发|获取盛世钢联免费钢筋报价 - 四川盛世钢联营销中心
  • 设计模式的原则和策略
  • 厂家直供更划算!2026广州聚杰芯科交通流量调查系统,品质靠谱售后有保障 - 品牌速递
  • 生成式AI开发中的法律风险:从数据爬取到模型部署的合规指南
  • 第 9 章:泛型、Trait 与宏
  • KNN模型准确率低?数据标准化与中心化是关键
  • AtCoder Beginner Contest 457 ABCDE 题目解析
  • 坑道钻机核心技术解析与2025年优质厂家选购全攻略 - 品牌策略师
  • 基于Claude AI与MCP的智能体架构:自动化竞争情报分析实战
  • CANN/community安全设计指南
  • 老药丸闲置别乱处理,北京记录者商行专业上门回收,合规安心变现 - 品牌排行榜单