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

CANN Ascend C系统同步能力概述

系统同步能力概述

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

在编程中,同步是指协调多个执行单元(如线程、进程等)对共享资源的访问顺序和时机来确保程序的正确性。如果没有同步来严格控制执行顺序,则会出现结果不一致、行为不可预测等多种问题。

AI Core的同步,总共分成3类:核内同步、核间同步、任务间同步。各类同步对应的接口如下。

表1核内同步接口

接口名称功能简述同步类别
SetFlag/WaitFlag(ISASI).md)多流水同步:同一核内不同流水之间的同步指令。SetFlag负责发送通知,WaitFlag负责阻塞直到SetFlag发送通知。硬件同步
PipeBarrier.md)单流水同步:同一核内相同流水之间的同步指令(不支持PIPE_S单流水同步)。硬件同步
DataSyncBarrier.md)阻塞后续的指令执行,直到所有之前的内存访问指令(需要等待的内存位置可通过参数控制)执行结束。硬件同步
Lock/Unlock/Mutex(ISASI).md)用于核内异步流水指令之间的同步处理,其功能类似于传统CPU中的锁机制。通过锁定指定流水再释放流水来完成流水间的同步依赖。硬件同步

表2核间同步接口

接口名称功能简述同步类别
CrossCoreSetFlag.md)/CrossCoreWaitFlag.md)多个AIC或AIV之间的同步控制。CrossCoreSetFlag负责发送通知,CrossCoreWaitFlag负责阻塞直到CrossCoreSetFlag发送通知。
支持以下同步场景:
•同步等待全部AIC或者同步等待全部AIV执行结束。
•单个AI Core内,全部AIV之间的同步。
•单个AI Core内,AIC与全部AIV之间的同步。
硬件同步
IBSet/IBWait被等待核中调用IBSet,通过将值1写入全局内存中某块地址来通知等待核;而等待核中调用IBWait,持续读取全局内存中相应地址块的值,直到其值变为1。软件同步
SyncAll用于多个核之间的同步控制,支持以下同步场景:
•纯Vector算子的全核同步,可参考CrossCoreSetFlag的模式0。
•融合算子的全核同步,一次性实现三个核间同步能力(参考CrossCoreSetFlag的关键特性说明):首先完成单个AI Core内,AIC与全部AIV之间的同步(AIC等AIV);接着完成多个AI Core间,所有AIC的同步;最后完成单个AI Core内,所有AIV与AIC同步(AIV等AIC)。
硬件同步
SyncAll仅支持纯Vector算子的多核(参与同步的核数可通过入参指定)同步。每一个AIV都向全局内存对应位置写入信号值1,接着每一个AIV都持续轮询全局内存中所有AIV对应的信号值,直到所有AIV核对应的信号值都变为1。软件同步
InitDetermineComputeWorkspace/NotifyNextBlock/WaitPreBlock• InitDetermineComputeWorkspace、NotifyNextBlock和WaitPreBlock三个接口必须组合使用,能够确保多个AIV核严格按照blockIdx的升序执行,适用于要求确定性计算的场景。
• InitDetermineComputeWorkspace初始化GM共享内存的值,完成初始化后才可以调用NotifyNextBlock和WaitPreBlock。
• NotifyNextBlock通过写全局内存来通知其他核当前核已执行完成,其他核可以继续往下执行;WaitPreBlock通过读取全局内存,判断当前核是否可以继续往下执行。
软件同步

表3任务间同步接口

接口名称功能简述同步类别
SetNextTaskStart在SuperKernel的子Kernel中调用,调用后的指令可以和后续其他的子Kernel实现并行,提升整体性能。硬件同步
WaitPreTaskEnd在SuperKernel的子Kernel中调用,调用前的指令可以和前序其他的子Kernel实现并行,提升整体性能。硬件同步

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

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

http://www.jsqmd.com/news/1200076/

相关文章:

  • VMware虚拟机安装Ubuntu 22.04服务器版全攻略
  • 《语义标准化系统:从人话到系统话的12层翻译架构》
  • 零基础Python入门网络安全:从环境搭建到实战脚本编写
  • 3个技巧让AI服务稳如老狗:Portkey网关配置实战指南
  • 基于Beetle ESP32-C3的物联网温湿度监测系统开发指南
  • LTX2.3多功能AI视频生成工具:从入门到精通的完整指南
  • 高校科研材料试验机怎么选?摩擦磨损检测要点解析 - 资讯报道
  • Java通过RFC协议高效连接SAP系统实战指南
  • 告别手动砸豆!阴阳师百鬼夜行自动化脚本让AI帮你高效收集式神碎片
  • Arduino实战指南:从零到一的物联网项目开发
  • 昆明黄金回收防骗实测指南:3家正规靠谱门店地址与避坑全攻略 - 观金堂黄金回收
  • AI代码审查革命已至(Claude 4.0审查引擎内参首曝)
  • 《杀戮尖塔2》机器人十大流派玩法深度解析与实战指南
  • 游戏开发中的有限状态机:实现无烧状态牌的三段式设计
  • Kafka Java客户端开发实战与性能优化指南
  • Hotkey Detective:你的Windows热键管理助手,快速解决快捷键冲突
  • 别再手写Selenium了!用AI生成动态页面爬虫脚本,Python自动点击/滚动实战指南
  • Umi-OCR终极解决方案:如何在老旧Windows系统上实现高效离线文字识别?
  • 电源转压电路设计:从LDO到Buck-Boost实战解析
  • 终极MVP模式实战:TLint中Presenter与View层通信机制深度剖析
  • C++构建法律咨询问答平台:从架构设计到性能优化实战
  • 舟山黄金变现攻略:正规回收门店盘点与避雷技巧2026 - 小路路在天舞
  • 遗传算法核心算子:交叉与变异的策略选择与实战调优
  • Citra模拟器终极教程:如何在电脑上完美运行任天堂3DS游戏
  • AI Agent Skills扩展:从原理到实战应用
  • PCB板颜色背后的工程逻辑与选型指南
  • 商丘卖黄金 5 大渠道对比!连锁门店 / 金店 / 银行哪个划算?6 家靠谱实体店整理好 - 不晚生活号
  • Linux包管理实战:RPM与YUM/DNF核心技巧
  • GESP C++三级真题深度解析:从算法思维到实战技巧
  • 基于空间的架构实战:构建高并发Android系统的完整解决方案