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

CANN/SHMEM CMO缓存维护操作示例

CMO (Cache Maintenance Operation) 功能演示与读性能测试示例【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库基于OpenSHMEM 标准协议实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem功能简介本示例演示了如何使用Shmem的CMOCache Maintenance Operation接口来优化GMGlobal Memory内存访问性能。该CMO接口提供L2缓存管理操作可以通过预取Prefetch将数据从GM提前加载到L2缓存中从而减少数据访问延迟提升整体计算性能。L2缓存背景知识昇腾AI处理器采用多级缓存架构L2缓存是二级缓存位于AI Core和全局内存HBM之间具有以下特点容量大容量高速缓存A2/A3 经典值192MB访问速度缓存命中带宽约为缓存miss带宽的2~4倍缓存管理支持提前将数据加载到缓存掩盖内存访问延迟通过合理使用CMO预取操作可以在计算进行的同时提前准备下一批数据提升整体性能。测试场景一、本示例对比了以下三种缓存预取操作策略下GM读的性能表现无预取 (NO_PREFETCH)直接从GM拷贝数据不使用任何缓存优化Host侧预取 (HOST_PREFETCH)使用Host侧接口aclrtCmoAsync对整块需要拷贝的位置进行预取Device块内预取 (DEVICE_BLOCK_PREFETCH)在kernel内部分别对各个块需要拷贝的内存位置进行CMO预取操作二、测试Device侧CMO接口aclshmemx_cmo_nbi的性能表现对比了不同预取大小下的操作时延。核心接口CMO接口SHMEM扩展接口template typename T void aclshmemx_cmo_nbi(__gm__ T *src, uint32_t elem_size, ACLSHMEMCMOTYPE cmo_type, __ubuf__ T *buf, uint32_t ub_size, uint32_t sync_id);功能在Device侧异步触发CMO操作向STARS队列提交操作任务参数说明src全局内存地址elem_size元素数量cmo_typeCMO操作类型当前仅支持CMO_TYPE_PREFETCHbuf临时UB缓冲区地址ub_sizeUB缓冲区大小至少64字节64字节对齐sync_id同步ID特点基于SDMA引擎实现支持核级细粒度控制CMO操作类型注意当前SHMEM实现仅支持CMO_TYPE_PREFETCH操作。CMO_TYPE_PREFETCH预取操作将数据从全局内存提前加载到L2缓存CMO_TYPE_WRITEBACK写回操作将L2缓存中的修改数据写回全局内存同时在缓存中保留副本CMO_TYPE_INVALID失效操作丢弃L2缓存中的数据块CMO_TYPE_FLUSH刷新操作强制将L2缓存数据写回全局内存并从缓存中移除SDMA Quiet接口SHMEM扩展接口template typename T ACLSHMEM_DEVICE void aclshmemx_sdma_quiet(AscendC::LocalTensorT buf, uint32_t sync_id);功能等待STARS队列中的操作任务完成用于同步参数说明buf临时UB缓冲区地址ub_sizeUB缓冲区大小sync_id同步ID特点通过下SDMA的Flag任务并轮询Flag等待STARS队列中的操作完成环境要求硬件要求昇腾AI处理器Atlas 200I A2/A3、Atlas 300T A2/A3等架构兼容aarch64、x86软件依赖参考SHMEM软件依赖配置支持SDMA功能的相关CANN版本。功能依赖说明重要本示例中的Device侧CMO接口aclshmemx_cmo_nbi依赖SDMA功能需要参考example/sdma或example/cmo配置attributes.option_attr.data_op_engine_type ACLSHMEM_DATA_OP_SDMA以启动SDMA引擎。编译步骤1. 编译并安装SHMEM软件包cd shmem/ bash scripts/build.sh -package ./install/*/SHMEM_1.0.0_linux-*.run --install source install/set_env.sh2. 编译示例程序cd shmem/ bash scripts/build.sh -examples编译成功后可执行文件位于build/bin/cmo运行方法cd shmem/examples/cmo bash run.sh -pes ${PEs} -type ${TYPE}参数说明PEs指定用于运行的设备NPU数量限定单台机器内。TYPE指定传输数据类型当前支持intuint8int64fp16fp32。运行示例使用2个NPU测试int类型数据bash run.sh -pes 2 -type int输出结果控制台输出程序运行时会输出每个PE的完成信息PE 0 Finished! PE 1 Finished! [SUCCESS] demo run success in pe 0 [SUCCESS] demo run success in pe 1CSV文件输出程序会在output/目录下生成以下CSV文件1.{PE_ID}_band.csv- 带宽性能测试结果包含以下列loop_times: 循环次数默认100次copy_size_per_loop: 每次循环拷贝的数据大小小于L2 Cache大小以验证整块预取效果blocks: 使用的block数量copypad_size: 单次DataCopy操作的数据大小no_prefetch_time/us: 无预取平均拷贝时间微秒no_prefetch_band/Gbps: 无预取平均拷贝带宽GB/shost_prefetch_time/us: Host侧整块预取后平均拷贝时间微秒host_prefetch_band/Gbps: Host侧预取后平均拷贝带宽GB/sdevice_block_prefetch_time/us: Device块预取后平均拷贝时间微秒device_block_prefetch_band/Gbps: Device块预取后平均拷贝带宽GB/s2.{PE_ID}_cmo.csv- CMO操作延迟测试结果包含以下列loop_times: 循环次数默认100次blocks: 使用的block数量cmo_size: CMO操作的数据大小cmo_send_time_p05/us: CMO发送时间的5%分位数微秒cmo_send_time_p50/us: CMO发送时间的50%分位数微秒cmo_send_time_p95/us: CMO发送时间的95%分位数微秒cmo_flag_time_p05/us: CMO同步等待时间的5%分位数微秒cmo_flag_time_p50/us: CMO同步等待时间的50%分位数微秒cmo_flag_time_p95/us: CMO同步等待时间的95%分位数微秒性能指标说明带宽衡量数据传输速率单位为GB/s延迟衡量操作完成时间单位为微秒分位数用于统计分布情况p50为中位数。参考文档CANN应用开发接口文档内存管理 aclrtCmoAsync【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库基于OpenSHMEM 标准协议实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

CANN/SHMEM CMO缓存维护操作示例

CMO (Cache Maintenance Operation) 功能演示与读性能测试示例 【免费下载链接】shmem CANN SHMEM 是面向昇腾平台的多机多卡内存通信库,基于OpenSHMEM 标准协议,实现跨设备的高效内存访问与数据同步。 项目地址: https://gitcode.com/cann/shmem …...

CANN/HCCL集合通信Broadcast示例

集合通信 - Broadcast 【免费下载链接】hccl 集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,为计算集群提供高性能、高可靠的通信方案 项目地址: https://gitcode.com/ca…...

PowerShell集成大语言模型:自动化运维与AI能力融合实战

1. 项目概述:当PowerShell遇上大语言模型如果你和我一样,是个常年与PowerShell打交道的运维工程师、开发者或者系统管理员,那你肯定经历过这样的场景:需要批量处理一堆日志文件,从中提取关键信息并分类;或者…...

Sonoff ZBDongle-E Zigbee 3.0 USB适配器评测与开发指南

1. Sonoff ZBDongle-E Zigbee 3.0 USB适配器深度解析作为智能家居领域的硬件开发者,我最近测试了ITEAD新推出的Sonoff ZBDongle-E Zigbee 3.0 USB适配器。这款采用Silicon Labs EFR32MG21芯片的硬件设备,在性能表现和功能扩展性上都给我留下了深刻印象。…...

CANN运行时模型更新示例

1_model_update 【免费下载链接】runtime 本项目提供CANN运行时组件和维测功能组件。 项目地址: https://gitcode.com/cann/runtime 描述 本样例展示了捕获一个模型实例后如何更新该实例中的任务。 产品支持情况 本样例在以下产品上的支持情况如下: 产品…...

HDMI 1.4技术解析:以太网与音频回传的创新设计

1. HDMI 1.4技术演进与核心价值2002年诞生的HDMI接口,经过短短8年发展已在全球部署超过11亿台设备。作为DVI接口的增强版,HDMI通过三组TMDS差分串行通道传输数据。早期版本(1.2及以下)的165MHz时钟频率提供4.95Gbps总带宽&#xf…...

基于可解释AI的微射流速度预测:FNN与SHAP解析空化气泡位置影响机制

1. 项目概述:当微射流遇上可解释AI在精密制造、生物医疗和微纳加工领域,微射流技术正扮演着越来越关键的角色。想象一下,一根比头发丝还细的水柱,以极高的速度精准地冲击目标,用于切割细胞、清洗精密零件或进行药物递送…...

全域无感时空管控,解锁智慧港口集卡AGV全自主调度新模式

全域无感时空管控,解锁智慧港口集卡AGV全自主调度新模式在超大型智慧港口高效作业、降本增效的核心诉求下,传统集卡与AGV调度模式依赖GPS定位、车载传感器、人工干预、专属基站布设,面临港区信号遮挡、多车路径冲突、定位漂移、调度响应滞后、…...

2025届毕业生推荐的六大降重复率工具推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 为削减文章AIGC检测率,得从多个维度去调整生成逻辑。其一,回避高频词…...

为团队内部工具集成 Taotoken 实现统一的 AI 能力调用

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为团队内部工具集成 Taotoken 实现统一的 AI 能力调用 在团队内部工具开发中,为代码审查、文档助手、自动化脚本等不同…...

CANN/PTO-ISA通信算子开发指南

【免费下载链接】pto-isa Parallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms. 项…...

CANN/amct DeepSeek-V3.2量化

NPU DeepSeek-V3.2 量化训练及推理 【免费下载链接】amct AMCT是CANN提供的昇腾AI处理器亲和的模型压缩工具仓。 项目地址: https://gitcode.com/cann/amct DeepSeek团队发布了最新的模型DeepSeek-V3.2,可利用稀疏架构 DeepSeek Sparse Attention(DSA) 来提高…...

从零构建GitHub Pages静态博客:Jekyll选型、部署与优化全指南

1. 项目概述:一个静态博客的诞生与演进 “lofder/lofder.github.io”,这个看似简单的GitHub仓库地址,背后代表的是一个非常经典且实用的个人项目:一个基于GitHub Pages托管的静态个人博客。对于很多开发者、技术爱好者乃至内容创…...

别急着重启!Redis突然连不上的5分钟排查手册(附CentOS 7实战命令)

Redis突发连接失败的黄金5分钟:运维高手的应急排查指南 当凌晨三点收到Redis连接失败的告警时,你的第一反应是什么?重启服务?检查网络?还是先泡杯咖啡冷静一下?作为经历过数百次Redis故障的老兵&#xff0c…...

从RTL到可执行:手把手拆解基于FPGA的硬件仿真器前端三步骤(Analyze, Elaboration, Synthesis)

从RTL到可执行:手把手拆解基于FPGA的硬件仿真器前端三步骤(Analyze, Elaboration, Synthesis) 在ASIC和FPGA验证领域,硬件仿真(Emulation)已成为验证复杂芯片设计不可或缺的一环。与传统的软件仿真&#xf…...

ru-text:为AI编码助手注入俄语文本质量灵魂的规则引擎

1. 项目概述:为AI编码助手注入俄语文本质量灵魂如果你是一名在俄语环境中工作的开发者、产品经理或内容创作者,并且正在使用诸如Claude Code、GitBrains或Cursor这类AI编码助手,那么你很可能遇到过这样的困境:助手生成的俄语文本&…...

CANN/shmem SIMT远程内存访问示例

样例介绍 【免费下载链接】shmem CANN SHMEM 是面向昇腾平台的多机多卡内存通信库,基于OpenSHMEM 标准协议,实现跨设备的高效内存访问与数据同步。 项目地址: https://gitcode.com/cann/shmem 本样例旨在展示 SIMD 与 SIMT 混合编译模式下&#x…...

为AI智能体构建持久化记忆:Stratum架构设计与工程实践

1. 项目概述:为AI智能体注入“脊柱”的持久化基础设施如果你和我一样,深度使用过像OpenClaw这类本地化AI智能体框架,一定会被一个核心问题困扰:智能体没有记忆。每次启动,它都像一张白纸,上次的对话、犯过的…...

Hyper-V虚拟机网络配置避坑指南:从‘网络不可达’到流畅上网,手把手教你配置CentOS/Ubuntu静态IP和DNS

Hyper-V虚拟机网络配置避坑指南:从‘网络不可达’到流畅上网 1. 理解Hyper-V网络架构的核心要素 在开始配置之前,我们需要先理解Hyper-V虚拟网络的基本工作原理。Hyper-V的网络虚拟化架构由三个关键组件构成:虚拟交换机(Virtual Switch)&…...

CANN / cann-recipes-infer: NPU DeepSeek-V3.2-Exp Ascend C 融合算子优化

NPU DeepSeek-V3.2-Exp Ascend C 融合算子优化 【免费下载链接】cann-recipes-infer 本项目针对LLM与多模态模型推理业务中的典型模型、加速算法,提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-infer 面向 DeepSeek-V3.2-Exp…...

Ubuntu 20.04 + ROS2 Foxy 环境下,手把手搞定 Swarm-SLAM 多机器人协同建图环境(附常见编译报错解决)

Ubuntu 20.04 ROS2 Foxy 环境下 Swarm-SLAM 多机器人协同建图实战指南 第一次接触多机器人协同SLAM时,我被Swarm-SLAM的分布式架构设计所吸引——它不需要中央服务器,每个机器人独立完成局部建图,再通过轻量级通信交换关键信息。这种设计理…...

给RK3568的Linux 4.19内核打RT-Preempt补丁,我踩过的那些坑都帮你填好了

给RK3568的Linux 4.19内核打RT-Preempt补丁:实战排坑全记录 在嵌入式开发领域,实时性往往是决定系统可靠性的关键因素。RK3568作为一款广泛应用于工业控制、边缘计算场景的ARM处理器,其Linux内核的实时性优化一直是开发者关注的焦点。本文将深…...

CANN/CATCCOS预提交代码检查指南

Pre-commit 代码检查配置说明 【免费下载链接】catccos CATCCOS昇腾计算-通信融合算子模板库,是一个聚焦于提供高性能计算通信融合类算子基础模板的代码库。 项目地址: https://gitcode.com/cann/catccos 本文档说明本次为 catccos 项目的 pre-commit 代码检…...

llocal框架:本地化AI应用开发实战与RAG实现指南

1. 项目概述:一个本地运行的AI应用框架 最近在折腾AI应用开发的朋友,估计都绕不开一个核心痛点:如何把那些强大的大语言模型(LLM)能力,低成本、低延迟、高隐私地集成到自己的项目里?是吭哧吭哧地…...

CANN Pi0.5昇腾训推实践

LeRobot 框架具身 VLA 模型昇腾训推实践 【免费下载链接】cann-recipes-embodied-intelligence 本项目针对具身智能业务中的典型模型、加速算法,提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-embodied-intelligence 下表展示…...

别再为‘Target uses ARM-Compiler which is not available’抓狂了!一份给STM32/Keil开发者的编译器环境修复指南

STM32开发者的Keil环境配置实战:从编译器缺失到团队协作标准化 当你从同事那里接手一个STM32项目,满心期待地点击"Rebuild All"按钮时,突然跳出的红色错误提示往往让人心头一紧。特别是当看到"Target uses ARM-Compiler whic…...

CANN多流分析模板

<network_or_case_name> 多流分析 【免费下载链接】cannbot-skills CANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体&#xff0c;本仓库为其提供可复用的 Skills 模块。 项目地址: https://gitcode.com/cann/cannbot-skills 1. 分析范围 模型/网络&…...

CANN/runtime Profiling数据采集接口

&#xfeff;# 19-01 Profiling数据采集接口 【免费下载链接】runtime 本项目提供CANN运行时组件和维测功能组件。 项目地址: https://gitcode.com/cann/runtime 本章节描述 Profiling 数据采集的核心接口&#xff0c;用于性能采集的初始化、配置、启停控制。 aclError…...

复盘红日Vulnstack1:除了MSF和CS,我们还能用哪些“冷门”工具链完成内网横向?

红日Vulnstack1靶场实战&#xff1a;突破常规工具链的内网横向技术探索 当主流渗透工具遭遇严格监控时&#xff0c;如何构建替代性攻击链&#xff1f;红日安全团队的Vulnstack1靶场作为国内知名的内网渗透训练环境&#xff0c;常被用作测试Metasploit&#xff08;MSF&#xff0…...

cann/sip FFT逆短时傅里叶变换

Istft 【免费下载链接】sip 本项目是CANN提供的一款高效、可靠的高性能信号处理算子加速库&#xff0c;基于华为Ascend AI处理器&#xff0c;专门为信号处理领域而设计。 项目地址: https://gitcode.com/cann/sip 产品支持情况 产品是否支持Atlas 200I/500 A2 推理产品…...