news 2026/5/9 23:59:31

CANN pto-isa异步通信指令

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN pto-isa异步通信指令

异步通信指令详解(TPUT_ASYNC / TGET_ASYNC / BuildAsyncSession)

【免费下载链接】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

TPUT_ASYNC — 异步远程写

启动 GM→GM DMA 传输,立即返回AsyncEvent

template <DmaEngine engine = DmaEngine::SDMA, typename GlobalDstData, typename GlobalSrcData, typename... WaitEvents> AsyncEvent TPUT_ASYNC(GlobalDstData &dst, GlobalSrcData &src, const AsyncSession &session, WaitEvents&... events);

TGET_ASYNC — 异步远程读

启动远端 GM→本地 GM DMA 传输。

template <DmaEngine engine = DmaEngine::SDMA, typename GlobalDstData, typename GlobalSrcData, typename... WaitEvents> AsyncEvent TGET_ASYNC(GlobalDstData &dst, GlobalSrcData &src, const AsyncSession &session, WaitEvents&... events);

BuildAsyncSession — 构建异步会话

SDMA 构建(默认)

template <DmaEngine engine = DmaEngine::SDMA, typename ScratchTile> bool BuildAsyncSession(ScratchTile &scratchTile, __gm__ uint8_t *workspace, AsyncSession &session, uint32_t syncId = 0, const sdma::SdmaBaseConfig &baseConfig = {sdma::kDefaultSdmaBlockBytes, 0, 1}, uint32_t channelGroupIdx = sdma::kAutoChannelGroupIdx);
参数说明
scratchTile用于 SDMA 控制元数据的 UB scratch tile(非数据负载),推荐Tile<TileType::Vec, uint8_t, 1, comm::sdma::UB_ALIGN_SIZE>(256B)
workspace由 Host 侧SdmaWorkspaceManager分配的 GM 指针
syncIdMTE3/MTE2 管道同步事件 ID(0-7),避免与 kernel 内其他管道屏障冲突
baseConfig{block_bytes, comm_block_offset, queue_num},默认适用于单队列场景
channelGroupIdxSDMA 通道组索引,默认使用get_block_idx()映射

URMA 构建(仅 Ascend950 / NPU_ARCH 3510)

bool BuildAsyncSession(__gm__ uint8_t *workspace, uint32_t destRankId, AsyncSession &session);

异步约束

  • 仅支持扁平连续的逻辑一维 tensor(非一维返回无效 event)
  • SDMA workspace 必须由 Host 侧SdmaWorkspaceManager分配
  • URMA workspace 必须由 Host 侧UrmaWorkspaceManager分配
  • URMA 需要大页内存(ACL_MEM_MALLOC_HUGE_ONLY),小页分配导致注册失败
  • scratchTile仅用于控制元数据,不是数据暂存缓冲

完成语义(Quiet 语义)

  • event.Wait(session)阻塞直到自上次 Wait 以来所有已发出的异步操作全部完成
  • 多次异步调用后,只需对最后一个AsyncEvent调用一次Wait
  • 类似 shmem 的 quiet 语义

完整示例

// 构建会话 using ScratchTile = Tile<TileType::Vec, uint8_t, 1, comm::sdma::UB_ALIGN_SIZE>; ScratchTile scratchTile; TASSIGN(scratchTile, 0x0); comm::AsyncSession session; if (!comm::BuildAsyncSession<comm::DmaEngine::SDMA>(scratchTile, sdmaWorkspace, session)) { return; } // 批量传输 + 一次 Wait comm::AsyncEvent lastEvent; for (int rank = 0; rank < nranks; ++rank) { GT dstG(remoteDst + rank * size, shape, stride); lastEvent = comm::TPUT_ASYNC(dstG, srcG, session); } (void)lastEvent.Wait(session); // 等待所有 pending 操作完成

【免费下载链接】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 23:59:26

动物森友会存档编辑器NHSE:打造完美岛屿的终极指南

动物森友会存档编辑器NHSE&#xff1a;打造完美岛屿的终极指南 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE 你是否厌倦了在《集合啦&#xff01;动物森友会》中漫长的等待和重复劳动&#xff1…

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

超级个体崛起:一人公司(One-Person Company)的技术栈——软件测试从业者的全能武器库

在AI重构生产关系的2026年&#xff0c;“一人公司”已从概念变为触手可及的商业现实。对于深谙质量保障、逻辑严谨且具备工程化思维的软件测试从业者而言&#xff0c;这不仅是职业发展的备选路径&#xff0c;更是一次将“技术债”转化为“数字资产”的价值跃迁。当“单人成军”…

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

从零构建大语言模型:PyTorch实践指南与Transformer核心实现

1. 从零构建大语言模型&#xff1a;一本真正让你“知其所以然”的实践指南如果你对ChatGPT、Claude这些大语言模型&#xff08;LLM&#xff09;的内部运作机制感到好奇&#xff0c;想知道那些动辄千亿参数的“黑箱”究竟是如何被训练出来的&#xff0c;那么你很可能已经尝试过阅…

作者头像 李华
网站建设 2026/5/9 23:55:06

可解释AI(XAI)技术解析:从原理到行业落地实践

1. 项目概述&#xff1a;为什么我们需要“看得懂”的AI&#xff1f;最近几年&#xff0c;AI模型的能力边界被不断刷新&#xff0c;从能写诗作画的生成式模型&#xff0c;到能精准预测蛋白质结构的AlphaFold&#xff0c;其表现常常令人惊叹。然而&#xff0c;一个越来越突出的矛…

作者头像 李华