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

CANN/Ascend C原子比较交换API

AtomicCas

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

产品支持情况

产品

是否支持

Ascend 950PR/Ascend 950DT

Atlas A3 训练系列产品 / Atlas A3 推理系列产品

x

Atlas A2 训练系列产品 / Atlas A2 推理系列产品

x

功能说明

调用该接口后,可在指定GM地址上进行原子比较,如果和value1相等,则把value2的值赋值到GM上;如果和value1不相等,则GM上的值不变。

函数原型

template <typename T> __aicore__ inline T AtomicCas(__gm__ T *address, T value1, T value2)

参数说明

表 1模板参数说明

参数名

描述

T

操作数数据类型。

Ascend 950PR/Ascend 950DT,支持的数据类型为:uint32_t/uint64_t

表 2参数说明

参数名

输入/输出

描述

address

输入

输入GM的地址。

value1/value2

输入

标量值,支持数据类型和address指向的数据类型保持一致。

返回值说明

GM地址上做原子操作前的数据。

约束说明

原子操作涉及标量计算,如果标量计算单元和搬运单元(MTE2/MTE3)在读写GM时存在数据依赖,开发者需要根据实际情况插入同步。

调用示例

extern "C" __global__ __aicore__ void atomic_simple_kernel(__gm__ uint8_t* dst, uint32_t dataSize) { // ... dst_global.SetGlobalBuffer(reinterpret_cast<__gm__ T *>(dst_gm), dataSize); LocalTensor<T> dstLocal = inQueueX.AllocTensor<T>(); uint32_t value1 = 1; uint32_t value2 = 2; uint32_t a = AscendC::AtomicCas(reinterpret_cast<__gm__ int32_t *>(dst), value1, value2); // 先执行完原子操作之后才能进行搬运操作,有数据依赖,需要手动插入MTE2等待Scalar的同步 event_t eventIdSToMte2 = static_cast<event_t>(GetTPipePtr()->AllocEventID<HardEvent::S_MTE2>()); SetFlag<HardEvent::S_MTE2>(eventIdSToMte2); WaitFlag<HardEvent::S_MTE2>(eventIdSToMte2); DataCopy(dstLocal, dst_global, dataSize); // ... }

假设上述函数在3个核上执行,核1、核2、核3依次调度,结果示例如下:

原GM数据dst: [1,1,1,1,1,...,1] 核1: 原子计算后GM数据dst: [2,1,1,1,1,...,1] 返回值 a: 1 核2: 原子计算后GM数据dst: [2,1,1,1,1,...,1] 返回值 a: 2 核3: 原子计算后GM数据dst: [2,1,1,1,1,...,1] 返回值 a: 2

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

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

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

相关文章:

  • 短视频在线解析去水印怎么做?多种解析方法与2026最新工具实测推荐 - 爱上科技热点
  • 2026年再生塑料颗粒回收公司最新推荐榜:PE再生颗粒/农膜再生颗粒/改性塑料颗粒/管道专用颗粒回收 - 海棠依旧大
  • 如何3步免费将网易云NCM音乐文件转换为MP3格式:终极解决方案
  • 观察Taotoken平台账单明细实现精准的API成本管理
  • 2026年性价比之选:啄木鸟漆业包砂/水包砂实力厂家 - 奔跑123
  • 佛山黄金回收不压价?收的顶本地深耕更懂市民需求 - 奢侈品回收测评
  • SwiftUI Pro Agent Skill:提升AI生成代码质量的专业技能包
  • LeetCode 单词搜索题解
  • 即梦怎么去除水印?即梦去除水印教程+方法汇总,2026最新实测有效 - 爱上科技热点
  • 区块链与AI融合构建社会DAO:性勒索协同治理网络的技术架构与实践
  • 2026年重庆公司注册避坑指南:这5家服务商谁才是性价比之王! - 果果1998
  • CANN 填充梯度算子
  • 即梦视频怎样去水印?手机版使用方法和工具推荐|2026最新 实测教程 - 爱上科技热点
  • AI赋能教育:构建个性化自适应学习系统的技术架构与实战
  • 基于GPT的Python 2到3代码迁移:原理、实践与避坑指南
  • 华为CANN/opbase OP_OUTSHAPE宏
  • 2026卖家精灵优惠折扣码更新 跨境新手必看帮你少走弯路 - 李先生sir
  • 企业级AI决策系统实战:从知识图谱到多智能体协作的架构演进
  • 智能游戏助手:解放星穹铁道日常任务的终极效率方案
  • DevChat:AI编程助手如何无缝集成IDE,提升开发效率与代码质量
  • 自动驾驶AI算法演进:从L0到L5的技术跃迁与工程挑战
  • CANN/metadef GenerateTask接口
  • 强力破解Windows热键冲突:Hotkey Detective一键定位占用程序
  • 即梦视频怎么去水印?即梦如何无损下载?2026最新 去水印工具与方法实测指南 - 爱上科技热点
  • 强化学习优化量子反馈控制:从麦克斯韦妖到量子热机设计
  • CANN/driver设备故障查询API
  • 突破性技术方案:MyTV-Android实现安卓低版本系统流畅直播体验架构解析
  • Oumuamua-7b-RP效果展示:温度0.3 vs 1.2下角色性格稳定性对比实测
  • ChatGLM3-6B应用案例:打造个人知识库助手,长文本分析利器
  • CANN/ops-cv aclnn返回码详解