CANN/asc-devkit SIMD核内同步特性说明
关键特性说明【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit自动同步概述TPipe-TQue框架编程范式和毕昇编译器均支持自动同步可减少开发者手动插入同步的工作量但部分场景下仍需开发者手动完成。本章节将介绍TPipe-TQue框架编程范式和毕昇编译器后续简称编译器各自支持的自动同步类型、自动同步使用约束及编译器自动同步debug日志功能。TPipe-TQue框架编程范式和编译器自动同步支持情况TPipe-TQue框架编程范式以及编译器对Vector计算单元和Cube计算单元的自动同步支持情况如下Vector计算单元单流水同步PIPE_V由编译器自动完成同步插入PIPE_MTE2/PIPE_MTE3在搬运地址有重叠的情况下需要开发者插入同步具体示例请参考约束说明.md)。TPipe-TQue框架编程范式不支持插入单流水同步。多流水同步PIPE_V、PIPE_MTE2、PIPE_MTE3、PIPE_S之间的多流水同步都是双向的如下图所示黄色线条表示的同步由编译器自动插入黑色线条代表的其余同步由TPipe-TQue框架编程范式通过EnQue/DeQue、AllocTensor/FreeTensor等接口自动插入。[!CAUTION]注意 例外情况当标量原子操作接口包括AtomicAdd、AtomicCas、AtomicExch、AtomicMax、AtomicMin与搬运单元MTE2/MTE3在读写GM时存在数据依赖时编译器无法自动插入同步开发者需根据实际情况手动插入同步。Cube计算单元 Cube侧编译器不支持自动插入任何类型的同步。以NPU架构2201为例该硬件架构下AIV和AIC中不同流水线的自动同步支持情况分别如表1和表2所示。在TPipe-TQue框架编程范式下框架能够自动插入部分同步以解决写后读WARWrite‑After‑Read和读后写RAWRead‑After‑Write两类数据依赖具体原理参考TPipe-TQue框架数据依赖与同步机制。表1在TPipe-TQue框架编程范式下AIV中不同流水线的同步情况源流水\目的流水PIPE_SPIPE_VPIPE_MTE2PIPE_MTE3PIPE_S不涉及编译器自动同步编译器自动同步编译器自动同步PIPE_V编译器自动同步编译器自动插入PipeBarrierTPipe-TQue框架自动同步TPipe-TQue框架自动同步PIPE_MTE2编译器自动同步TPipe-TQue框架自动同步手动插入PipeBarrierTPipe-TQue框架自动同步PIPE_MTE3编译器自动同步TPipe-TQue框架自动同步TPipe-TQue框架自动同步手动插入PipeBarrier表2在TPipe-TQue框架编程范式下AIC中不同流水线的同步情况源流水\目的流水PIPE_SPIPE_MPIPE_MTE1PIPE_MTE2PIPE_MTE3PIPE_FIXPIPE_S不涉及不涉及不涉及不涉及不涉及不涉及PIPE_M不涉及手动插入PipeBarrierTPipe-TQue框架自动同步TPipe-TQue框架自动同步不涉及TPipe-TQue框架自动同步PIPE_MTE1不涉及TPipe-TQue框架自动同步手动插入PipeBarrierTPipe-TQue框架自动同步TPipe-TQue框架自动同步TPipe-TQue框架自动同步PIPE_MTE2不涉及TPipe-TQue框架自动同步TPipe-TQue框架自动同步手动插入PipeBarrierTPipe-TQue框架自动同步暂无应用场景PIPE_MTE3不涉及不涉及TPipe-TQue框架自动同步TPipe-TQue框架自动同步手动插入PipeBarrier暂无应用场景PIPE_FIX不涉及TPipe-TQue框架自动同步TPipe-TQue框架自动同步暂无应用场景暂无应用场景手动插入PipeBarrier自动同步使用约束说明可通过编译选项--cce-auto-sync或--cce-auto-syncon开启编译器自动同步功能Kernel直调算子工程、自定义算子开发工程以及异构编译 直调已默认开启该编译选项。如需关闭开发者可手动设置--cce-auto-syncoff。[!CAUTION]注意 Ascend C提供了三层梯度化可编程接口各层级接口对自动同步的支持情况如下使用TPipe-TQue框架编程范式时编译器可自动插入部分同步具体情况请参考表1。此时TPipe-TQue框架编程范式本身同样也能自动插入另一部分同步具体情况参考表1和表2。使用静态Tensor编程范式时编译器可自动插入部分同步具体请参考表1。由于TPipe-TQue框架编程范式与静态Tensor编程范式无法同时使用除编译器自动插入的同步之外其余同步需开发者手动管理。使用基于指针的C语言编程时无法同时使用TPipe-TQue框架编程范式另外编译器也不能自动插入同步因此所有同步都需要由开发者管理具体情况请参考C API编程同步控制。Kernel函数中调用的所有函数需为inline函数编译器才能自动插入同步。正确使用TPipe-TQue框架编程范式才能保证其自动同步功能正常运作。若开发者使用静态Tensor编程范式TPipe/TQue提供的自动同步功能将失效需手动插入同步但不影响编译器支持的自动同步功能。TPipe-TQue框架编程范式不会自动插入单流水同步指令在搬运地址有重叠的情况下需要开发者手动插入同步参考PipeBarrier约束说明。在TPipe-TQue框架编程范式下如果开发者手动插入了编译器或TPipe-TQue框架编程范式本已自动插入的同步指令将导致同步指令被重复插入可能导致程序逻辑异常或性能下降。AIC和AIV之间不支持使用SetFlag/WaitFlag.md)进行同步可能会出现硬件未定义情况。AIC和AIV之间的同步控制属于核间同步需要调用CrossCoreSetFlag.md)和CrossCoreWaitFlag.md)进行同步。以下接口与其他指令之间的同步由硬件保证无需自动插入同步或手动插入同步该说明针对如下型号生效- Atlas A3 训练系列产品/Atlas A3 推理系列产品- Atlas A2 训练系列产品/Atlas A2 推理系列产品[!CAUTION]注意 调用接口SetVectorMask、SetMaskCount、SetMaskNorm、ResetMask时不需要手动插入同步。 调用接口SetAtomicAdd、SetAtomicMax、SetAtomicMin、DisableDmaAtomic、SetAtomicType时不需要手动插入同步。 调用CTRL寄存器相关的指令不需要手动插入同步。编译器自动同步Debug日志功能毕昇编译器提供“--cce-auto-sync-log ”编译选项可以输出同步插入信息到 文件中帮助开发者显式地识别编译器在算子文件中插入的同步指令信息。需debug模式添加-g编译选项编译算子用于获取算子代码文件行号。直接使用毕昇编译器的场景可以直接在编译命令中添加该编译选项。使用Ascend C kernel直调算子工程可以通过ascendc_compile_options添加该编译选项。使用Ascend C自定义算子开发工程可以通过add_ops_compile_options添加该编译选项。如下的代码文件sync_log_test.hLocalTensorT dstLocal; T ave_tmp 0; Vector_OP1(dstLocal, params); ave_tmp dstLocal.GetValue(0); Vector_OP2(dstLocal, params); for (int i 0; i ave_tmp; i) { dstLocal.SetValue(i,0); }开启自动同步后同步指令的插入位置如下LocalTensorT dstLocal; T ave_tmp 0; Vector_OP1(dstLocal, params); SetFlagHardEvent::V_S(EVENT_ID0); WaitFlagHardEvent::V_S(EVENT_ID0); ave_tmp dstLocal.GetValue(0); PipeBarrierPIPE_V(); SetFlagHardEvent::S_V(EVENT_ID0); WaitFlagHardEvent::S_V(EVENT_ID0); Vector_OP2(dstLocal, params); SetFlagHardEvent::V_S(EVENT_ID0); WaitFlagHardEvent::V_S(EVENT_ID0); for (int i 0; i ave_tmp; i) { dstLocal.SetValue(i,0); }开启自动同步debug日志功能后输出日志如下The BiSheng Auto Sync log of sync_log_test : Position: absolute-path/sync_log_test.h:4 : line before insert sync : SetFlagHardEvent::V_S(EVENT_ID0); Position: absolute-path/sync_log_test.h:4 : line before insert sync : WaitFlagHardEvent::V_S(EVENT_ID0); Position: absolute-path/sync_log_test.h:5 : line before insert sync : PipeBarrierPIPE_V(); Position: absolute-path/sync_log_test.h:5 : line before insert sync : SetFlagHardEvent::S_V(EVENT_ID0); Position: absolute-path/sync_log_test.h:5 : line before insert sync : WaitFlagHardEvent::S_V(EVENT_ID0); Position: absolute-path/sync_log_test.h:6 : line before insert sync : SetFlagHardEvent::V_S(EVENT_ID0); Position: absolute-path/sync_log_test.h:6 : line before insert sync : WaitFlagHardEvent::V_S(EVENT_ID0);其中line before表示紧接着当前行前面插入的同步指令。【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

CANN/Ascend C核间同步WaitPreBlock

CANN/Ascend C核间同步WaitPreBlock

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

2026/7/16 19:19:40阅读更多 →
2026大湾区EMBA性价比榜单:中英双语授课EMBA择校实测测评

2026大湾区EMBA性价比榜单:中英双语授课EMBA择校实测测评

【中立客观测评声明】本文为独立商科教育测评内容,无硬性广告植入,基于学费成本、课程落地性、圈层纯度、长期赋能四大核心维度,针对大湾区企业家、科创企业创始人真实需求横向测评,理性分析各项目适配度与短板,仅供择…

2026/7/16 19:19:40阅读更多 →
CANN/asc-devkit:asc_loadunalign函数API文档

CANN/asc-devkit:asc_loadunalign函数API文档

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

2026/7/16 19:14:40阅读更多 →
RPA的终结者来了?AI Agent如何吞噬传统自动化市场:2026企业级智能自动化选型指南

RPA的终结者来了?AI Agent如何吞噬传统自动化市场:2026企业级智能自动化选型指南

2026年,企业IT领域正经历一场从“流程驱动”向“智能驱动”的深刻范式转移。长期以来,传统自动化技术(如RPA)凭借预设规则和固定坐标在数字化初期发挥了重要作用,但其在面对动态软件界面、非结构化数据处理及复杂决策逻…

2026/7/16 21:29:49阅读更多 →
在386电脑与Turbo C环境下学习C语言编程的完整指南

在386电脑与Turbo C环境下学习C语言编程的完整指南

在当今高性能计算机普及的时代,很多人可能会好奇:为什么要用一台30多年前的386老电脑来学习C语言?事实上,这种"复古编程"体验不仅能让你更深入地理解计算机底层原理,还能避免现代IDE的复杂性,专注…

2026/7/16 21:29:49阅读更多 →
Nacos跨平台安装全攻略:从Mac到Windows的保姆级避坑指南

Nacos跨平台安装全攻略:从Mac到Windows的保姆级避坑指南

1. Nacos跨平台安装前的准备工作 Nacos作为阿里巴巴开源的服务发现和配置管理平台,已经成为微服务架构中的重要组件。无论是Mac还是Windows系统,安装前都需要做好充分准备。我见过太多开发者因为环境问题卡在第一步,白白浪费几个小时。 首先…

2026/7/16 21:29:49阅读更多 →
C++ 3.0核心特性解析与现代开发实战指南

C++ 3.0核心特性解析与现代开发实战指南

C作为一门经典的编程语言,在游戏开发、系统编程、高性能计算等领域占据着重要地位。这次我们聚焦C 3.0版本的核心特性与实战应用,重点分析其在现代开发环境中的技术优势和实践要点。对于开发者来说,C 3.0不仅延续了C语言的高效性能&#xff0…

2026/7/16 21:29:49阅读更多 →
告别冗长JPQL!jpa-spec的Equal/NotEqual查询技巧,让条件判断更简洁

告别冗长JPQL!jpa-spec的Equal/NotEqual查询技巧,让条件判断更简洁

告别冗长JPQL!jpa-spec的Equal/NotEqual查询技巧,让条件判断更简洁 【免费下载链接】jpa-spec A JPA Query By Specification framework. 项目地址: https://gitcode.com/gh_mirrors/jp/jpa-spec 在Java持久层开发中,动态查询条件的构…

2026/7/16 21:29:49阅读更多 →
ddc.vim核心功能揭秘:为什么它是Vim/Neovim补全的未来?

ddc.vim核心功能揭秘:为什么它是Vim/Neovim补全的未来?

ddc.vim核心功能揭秘:为什么它是Vim/Neovim补全的未来? 【免费下载链接】ddc.vim Dark deno-powered completion framework for Vim/Neovim 项目地址: https://gitcode.com/gh_mirrors/dd/ddc.vim ddc.vim作为一款Dark deno-powered completion f…

2026/7/16 21:24:49阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/16 8:28:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/16 6:53:04阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/16 12:02:41阅读更多 →
A--10 Codex Review与GitHub PR工作流实战指南:从代码审查到安全合并

A--10 Codex Review与GitHub PR工作流实战指南:从代码审查到安全合并

摘要:本文系统讲解如何利用Codex App的Review功能与GitHub PR工作流,实现从代码修改到安全合并的完整流程。涵盖Review面板深度使用、/review命令实战、GitHub Connector配置、PR描述撰写技巧,以及常见问题排查方法。通过多个实战案例和流程图,帮助开发者建立高效的AI辅助代…

2026/7/16 0:00:38阅读更多 →
遗传算法解5皇后问题:从Hello World到工业优化的进化实验室

遗传算法解5皇后问题:从Hello World到工业优化的进化实验室

1. 项目概述:为什么用遗传算法解5皇后问题,而不是直接回溯?我带过十几届算法课,也给不少初创团队做过AI架构咨询。每次讲到组合优化问题,学生和工程师的第一反应永远是“写个回溯试试”。这没错——55棋盘上找所有合法…

2026/7/16 0:00:38阅读更多 →
5.1V稳压管输出为何只有4.7V?工作电流与负载影响分析

5.1V稳压管输出为何只有4.7V?工作电流与负载影响分析

前几天调试一个简单的电源模块,用到了5.1V稳压管。电路接好,上电测试,万用表一量——输出居然只有4.7V。第一反应是稳压管坏了,换了一个新的,结果还是4.7V。这让我想起很多初学者都会遇到的困惑:明明标称5.…

2026/7/16 0:00:38阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/16 20:13:14阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/16 8:58:42阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/16 17:10:26阅读更多 →