news 2026/7/15 8:27:39

CANN内存屏障同步控制函数文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN内存屏障同步控制函数文档

asc_mem_bar

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

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT

功能说明

头文件路径:"c_api/reg_compute/reg_vector.h"

Reg计算宏函数内不同流水线之间的同步指令。该同步指令指定源流水线和目的流水线,如下图所示,目的流水线将等待源流水线上所有指令完成才进行执行。 读写场景下,当读指令使用的寄存器和写指令使用的寄存器相同时,可以触发寄存器保序,指令将会按照代码顺序执行,不需要插入同步指令,而当使用的寄存器不同时,如果要确保读写指令执行,则需要插入同步指令。写写场景同理。

函数原型

__simd_callee__ inline void asc_mem_bar(MEM_TYPE mem_type)

参数说明

表1参数说明 | 参数名 | 输入/输出 | 描述 | | :----- | :------- | :------- | | mem_type | 输入 | 同步流水线的类型,类型为MEM_TYPE,取值范围见表2 mem_type取值说明。 |

表2 mem_type取值说明(源流水线/目的流水线表示的含义见表3 Reg计算流水线说明) | 值 | 源流水线 | 目的流水线 | | ------ | -------- | -------- | | VV_ALL | VEC_ALL | VEC_ALL | | VST_VLD | VEC_STORE | VEC_LOAD | | VLD_VST | VEC_LOAD | VEC_STORE | | VST_VST | VEC_STORE | VEC_STORE | | VS_ALL | VEC_ALL | SCALAR_ALL | | VST_LD | VEC_STORE | SCALAR_LOAD | | VLD_ST | VEC_LOAD | SCALAR_STORE | | VST_ST | VEC_STORE | SCALAR_STORE | | SV_ALL | SCALAR_ALL | VEC_ALL | | ST_VLD | SCALAR_STORE | VEC_LOAD | | LD_VST | SCALAR_LOAD | VEC_STORE | | ST_VST | SCALAR_STORE | VEC_STORE | | SS_ALL | SCALAR_ALL | SCALAR_ALL | | ST_LD | SCALAR_STORE | SCALAR_LOAD | | LD_ST | SCALAR_LOAD | SCALAR_STORE | | ST_ST | SCALAR_STORE | SCALAR_STORE |

表3 Reg计算流水线说明 | 流水线 | 含义 | | ------ | -------- | | VEC_STORE | SIMD_VF函数内矢量写UB流水线。
对应寄存器到UB的搬运指令,例如asc_store。 | | VEC_LOAD | SIMD_VF函数内矢量读UB流水线。
对应UB到寄存器的搬运指令,例如asc_load。 | | SCALAR_STORE | SIMD_VF函数内标量写UB流水线。
对应标量写入UB的指令,例如asc_duplicate_scalar。 | | SCALAR_LOAD | SIMD_VF函数内标量读UB流水线。
对应UB读取标量的指令。 | | VEC_ALL | SIMD_VF函数内所有矢量读写UB流水线。 | | SCALAR_ALL | SIMD_VF函数内所有标量读写UB流水线。 |

返回值说明

流水类型

PIPE_S

约束说明

调用示例

如下示例中,for循环中后一次循环中读UB矢量搬运,和前一次循环中写UB矢量搬运,操作了同一块UB地址空间。因此后一次循环中读UB矢量搬运需要等待前一次循环中写UB矢量搬运执行完成后才能执行,需要插入VEC_LOAD等待VEC_STORE的同步VST_VLD。

// ub_addr是外部输入的UB内存空间地址 __ubuf__ half* ub_addr; vector_half dst; vector_half src0; vector_half src1; vector_bool mask; mask = asc_create_mask_b16(PAT_ALL); uint16_t repeatTime = 8; uint16_t repeatSize = 64; for (uint16_t i = 1; i < repeatTime; i++) { asc_mem_bar(VST_VLD); asc_loadalign(src0, ub_addr); asc_loadalign(src1, ub_addr + i * repeatSize); asc_add(dst, src0, src1, mask); asc_storealign(ub_addr, dst, mask); }

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

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

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

5分钟快速上手OpenSpeedy:免费游戏加速工具的完整指南

5分钟快速上手OpenSpeedy&#xff1a;免费游戏加速工具的完整指南 【免费下载链接】OpenSpeedy &#x1f3ae; An open-source game speed modifier. 项目地址: https://gitcode.com/gh_mirrors/op/OpenSpeedy 你是否曾在游戏中遇到帧率限制&#xff0c;希望获得更流畅的…

作者头像 李华
网站建设 2026/7/15 8:22:23

Nof1-tracker 核心功能详解:7大AI Agent跟单策略全解析

Nof1-tracker 核心功能详解&#xff1a;7大AI Agent跟单策略全解析 【免费下载链接】nof1-tracker A command-line tool for tracking nof1.ai AI Agent trading signals and automatically executing Binance futures trades 项目地址: https://gitcode.com/gh_mirrors/no/n…

作者头像 李华
网站建设 2026/7/15 8:22:17

Swindler高级技巧:异步操作与并发窗口管理最佳实践

Swindler高级技巧&#xff1a;异步操作与并发窗口管理最佳实践 【免费下载链接】Swindler macOS window management library for Swift 项目地址: https://gitcode.com/gh_mirrors/sw/Swindler 在macOS开发中&#xff0c;Swindler作为一款强大的Swift窗口管理库&#xf…

作者头像 李华
网站建设 2026/7/15 8:21:00

Jido WebAssembly:探索在浏览器中运行自主代理的可能性

Jido WebAssembly&#xff1a;探索在浏览器中运行自主代理的可能性 【免费下载链接】jido &#x1f916; Autonomous agent framework for Elixir. Built for distributed, autonomous behavior and dynamic workflows. 项目地址: https://gitcode.com/GitHub_Trending/ji/ji…

作者头像 李华
网站建设 2026/7/15 8:20:44

Claude Mythos:可操作漏洞发现与利用闭环的AI安全新范式

1. 项目概述&#xff1a;一场静默却震耳欲聋的AI能力跃迁这周&#xff0c;整个AI安全圈没有爆炸性新闻稿&#xff0c;没有铺天盖地的发布会直播&#xff0c;只有一份措辞克制、数据密集的系统卡片&#xff08;System Card&#xff09;和一份由英国AI安全研究所&#xff08;AISI…

作者头像 李华
网站建设 2026/7/15 8:20:16

C++高性能计时器实现:支持暂停恢复与断点分析

1. 项目概述&#xff1a;一个更聪明的“秒表”在C开发中&#xff0c;尤其是涉及到性能分析、游戏逻辑、状态机控制或者需要精确计时和暂停/恢复的业务场景时&#xff0c;我们经常需要一个比标准库的std::chrono更“聪明”的计时器。std::chrono提供了高精度的时间点测量&#x…

作者头像 李华