news 2026/7/11 12:40:54

CANN Runtime内存语义同步指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN Runtime内存语义同步指南

内存语义同步

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

内存语义同步机制允许用户基于通用Device内存实现同步。与Event/Notify同步机制不同,基于内存语义的同步机制还支持算子作为同步参与方,即算子可以在执行过程中与另一条流进行同步。

下图展示了在算子执行过程中与另一条流之间的同步过程:

内存语义同步相关接口的调用代码示例如下,不可以直接拷贝编译运行,仅供参考:

  • Device示例代码(算子核函数实现代码)

    extern "C" __global__ __aicore__ void myKernel1(GM_ADDR syncMem) { // 算子逻辑 ...... // 向syncMem所指向内存写1 __gm__ uint64_t* flag = reinterpret_cast<__gm__ uint64_t*>(syncMem); *flag = 1; dcci(flag, 0, 2); // 算子逻辑 ...... } extern "C" __global__ __aicore__ void myKernel2(GM_ADDR syncMem) { // 算子逻辑 ... // 轮询阻塞直到syncMem所指向内存值为2 __gm__ volatile uint64_t* flag = reinterpret_cast<__gm__ uint64_t*>(syncMem); dcci(flag, 0, 2); while (*flag != 2) { dcci(flag, 0, 2); } // 算子逻辑 ...... }
  • Host示例代码

    // 创建Stream aclrtStream stream1; aclrtStream stream2; aclrtCreateStream(&stream1); aclrtCreateStream(&stream2); // 申请Device内存 void* syncMem; aclrtMalloc(&syncMem, sizeof(uint64_t), ACL_MEM_MALLOC_NORMAL_ONLY); // 在stream1上下发wait任务,该任务阻塞等待直到syncMem所指向内存中的值为1 aclrtValueWait(syncMem, 1, ACL_STREAM_WAIT_VALUE_EQ, stream1); // 在stream2上下发myKernel1,该kernel内部向syncMem所指向内存写1,从而解除stream1上wait任务的阻塞状态 myKernel1<<<numBlocks, nullptr, stream2>>>(syncMem); // 在stream1上下发myKernel2,该kernel内部轮询等待直到syncMem所指向内存的值为2 myKernel2<<<numBlocks, nullptr, stream1>>>(syncMem); // 在stream2上下发write任务,该任务往syncMem所指向内存写为2,从而解除stream1上myKernel2的阻塞状态 aclrtValueWrite(syncMem, 2, 0, stream2);

说明:因为内存语义同步机制是基于通用Device内存实现,所以可以通过aclrtMemset/aclrtMemsetAsync初始化和清除同步所用的内存。

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

终极Windows界面定制指南:用ExplorerPatcher深度恢复经典工作流

终极Windows界面定制指南&#xff1a;用ExplorerPatcher深度恢复经典工作流 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher ExplorerPatcher是…

作者头像 李华
网站建设 2026/7/11 12:36:31

终极指南:让老款Mac免费升级到最新macOS的完整解决方案

终极指南&#xff1a;让老款Mac免费升级到最新macOS的完整解决方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为你的老款Mac无法安装最新macOS而烦恼…

作者头像 李华
网站建设 2026/7/11 12:35:46

强化企业顶层设计,合规股权治理规避经营风险

股权架构与顶层治理是民营企业的发展根基&#xff0c;直接决定企业控制权稳定性、合伙人协作效率与长期发展格局。当下多数中小民企初创阶段股权规划随意、架构设计粗放&#xff0c;缺乏专业化顶层布局&#xff0c;随着企业规模扩张、合伙人增多、团队壮大&#xff0c;股权纠纷…

作者头像 李华
网站建设 2026/7/11 12:35:32

MAX77654与PIC18F45K22的低功耗电源管理方案

1. 项目背景与核心需求在嵌入式系统开发中&#xff0c;电源管理一直是决定产品可靠性和续航能力的关键因素。最近我在一个工业物联网终端项目中遇到了典型的电源挑战——需要在极低功耗状态下维持系统基本运行&#xff0c;同时保证突发任务时的快速响应能力。这促使我深入研究基…

作者头像 李华
网站建设 2026/7/11 12:35:29

League Akari:英雄联盟终极本地化工具完全指南

League Akari&#xff1a;英雄联盟终极本地化工具完全指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari 是一款基于英雄联盟官…

作者头像 李华