首页/新闻资讯/正文详情

ASC-STL多维视图与张量搬运完全入门:gm_mdspan、ub_mdspan与tensor_load_async使用指南

发布时间:2026/11/7 10:35:25 来源:云帆数科 栏目:资讯中心
ASC-STL多维视图与张量搬运完全入门:gm_mdspan、ub_mdspan与tensor_load_async使用指南
标准库并发编程高性能计算Ascend【免费下载链接】asc-stl武汉理工大学熊盛武课题组携手华为 CANN 团队开发 Ascend C 编程标准库。本项目提供可运行于昇腾 NPU 设备的 C/C 标准实现且提供昇腾 NPU 特有硬件特性的抽象化实现项目地址https://gitcode.com/cann/asc-stl点击查看免费下载本文带你快速上手asc-stlAscend C 编程标准库中面向昇腾 NPU 的多维数据视图与张量搬运能力通过gm_mdspan描述全局内存GM中的多维张量用ub_mdspan描述片上统一缓冲UB数据再借助tensor_load_async把多维数据异步地从 GM 搬到 UB是编写高性能 Ascend C 算子的重要基础。这套接口由武汉理工大学熊盛武课题组与华为 CANN 团队联合开发当前在 Ascend 950PR950DT 系列产品上可用。为什么要学多维视图与张量搬运 在昇腾 NPU 上AI Core 的计算数据存放在片上的UBUnified Buffer而输入输出数据通常在GMGlobal Memory。手写搬运逻辑时你要手动处理行偏移、步长、填充……一旦张量超过一维代码很快就难以维护。asc-stl 把这件事抽象成两块能力都位于昇腾扩展接口层asc/mdspan非拥有多维数据视图按地址空间细分为host_mdspan、gm_mdspan、ub_mdspan三种别名分别对应 Host、GM 与 UB 空间asc/tensor_copy支持 1~5 维形状、源/目标步长与两侧填充的 GM 与 UB 异步搬运核心函数为tensor_load_asyncGM→UB和tensor_store_asyncUB→GM。从整体架构看这两个头文件正好落在多维数据视图与搬运模块中gm_mdspan给 GM 里的数据加上多维坐标 gm_mdspan本质上是一个带gm_accessor访问器的 mdspan 别名它不拥有存储只是给一段 GM 连续内存加上多维坐标系让你可以用view(i, j)的方式访问矩阵、张量而不必自己算偏移。头文件asc/mdspan源码入口 include/asc/mdspan模板参数元素类型Element、维度描述Extents、布局Layout默认行优先、访问器默认gm_accessor典型用法用extents指定各维大小后构造视图随后用view.extent(0)、view.size()、view[i, j]等标准接口访问数据一个最小示例摘自官方文档Host 侧同样可运行验证#include asc/mdspan using view_type asc::gm_mdspanint, asc::std::extentsasc::std::size_t, 4; view_type view(values); view[2] 35; // 按坐标访问无需手动算偏移完整定义与约束见 gm_mdspan.md。ub_mdspan以同样方式描述片上 UB 数据 ub_mdspan与gm_mdspan是姊妹接口它使用ub_accessor访问 UB 数据。区别在于SIMD 编程模式下句柄保留真实 UB 地址空间__ubuf__可以直接访问片上缓冲Host 侧仅提供普通指针表示不能直接访问设备物理 UB适合做逻辑验证SIMT 编程模式不提供 UB 访问器ub_mdspan仅面向 AI Core SIMD 编程。这意味着同一个算子开发流程中GM 侧输入、UB 侧工作区可以用完全一致的多维索引风格书写代码可读性大幅提升。接口文档见 ub_mdspan.md。tensor_load_asyncGM→UB 的异步多维搬运 ⚡tensor_load_async是按搬运描述符tensor_copy_descriptor把多维张量从 GM 异步加载到 UB 的函数相比逐行copy_async它原生支持能力说明多维形状支持 Rank 为 1~5 的张量步长解耦源/目标步长可独立设置天然支持行距、非连续布局两侧填充每维可指定left_padding/right_padding用fill_value填充 UB 边界流水线集成通过pipeline_refstage提交到 GM-UB 流水线的指定级三步走描述符 → 提交 → 同步构造描述符用 make_tensor_copy_descriptor 传入各维extents、源/目标strides和padding数组即可得到描述搬运计划的tensor_copy_descriptorRank它还能通过required_elements()告诉你需要多大缓冲提交异步加载调用asc::tensor_load_asyncint, Rank(pipeline, stage, ub目标, gm源, descriptor, fill_value)返回tensor_copy_status表示提交状态提交成功 ≠ 搬运完成按流水线协议同步重用流水级前先producer_acquire(stage)成功提交后consumer_wait(stage)等待完成再执行计算。官方文档中的设备端示例2 维、16 个整数的 GM→UB 加载__aicore__ asc::tensor_copy_status example(const asc::pipeline_ref pipeline, __ubuf__ int* destination, __gm__ const int* source) { const unsigned int extents[2] {2, 8}; const unsigned int strides[2] {8, 1}; const unsigned int padding[2] {0, 0}; const auto descriptor asc::make_tensor_copy_descriptor(extents, strides, strides, padding, padding); return asc::tensor_load_asyncint, 2(pipeline, 0, asc::ub_spanint(destination, 16), asc::gm_spanconst int(source, 16), descriptor, 0); }完整参数、状态码与约束见 tensor_load_async.md。新手最易踩的 4 个坑 ⚠️32 字节对齐GM/UB 两端地址必须落在搬运引擎的 32 字节数据块边界上否则会返回insufficient_source/insufficient_destinationstage 越界stage必须小于流水线的级数否则返回invalid_stage且不发起搬运容量核算UB 目标容量要按目标步长 两侧填充折算可用descriptor.required_elements()精确计算GM 源容量按源步长、不含填充折算同步协议顺序提交成功后才能consumer_wait(stage)失败状态不能继续等待未提交的事件完成计算后用tensor_store_async回写或按协议consumer_release。延伸阅读相关模块速查 想深入了解去哪看asc/mdspan全部视图/访问器接口含host_mdspan、restrict_mdspan、DLPack 转换asc_mdspan 头文件说明asc/tensor_copy全部搬运接口与状态码asc_tensor_copy 头文件说明gm_span/ub_span一维连续内存视图地址空间与内存视图模块总览多维数据视图与搬运multidimensional_views_and_transfer项目文档首页docs/zh/api/api_list.md小结gm_mdspan与ub_mdspan为 GM 和 UB 两侧数据提供统一的多维索引体验tensor_load_async则把多维形状、步长和填充的复杂搬运交给硬件描述符表达。三者配合流水线pipeline使用就是你在 Ascend 950 系列上编写高效 AI Core 算子的标准姿势。赞分享标准库并发编程高性能计算Ascend【免费下载链接】asc-stl武汉理工大学熊盛武课题组携手华为 CANN 团队开发 Ascend C 编程标准库。本项目提供可运行于昇腾 NPU 设备的 C/C 标准实现且提供昇腾 NPU 特有硬件特性的抽象化实现项目地址https://gitcode.com/cann/asc-stl点击查看免费下载相关推荐asc-devkit DataCopy 切片数据搬运实战GM↔UB 多维 Tensor 子集搬运原理与样例解析asc devkit DataCopy 切片数据搬运实战GM↔UB 多维 Tensor 子集搬运原理与样例解析 DataCopy切片数据搬运是 Ascen人工智能深度学习高性能计算CANNAscend C 向量加法算子入门实战Add 样例的搬入-计算-搬出流水实现与多核并行解析asc-devkitAscend C 向量加法算子入门实战Add 样例的搬入 计算 搬出流水实现与多核并行解析asc devkit 本篇文章基于 asc devkit 仓人工智能深度学习高性能计算CANNAscend C 入门实战asc-devkit 仓库 Add 向量加法算子样例全解析搬入-计算-搬出三段式流水Ascend C 入门实战asc devkit 仓库 Add 向量加法算子样例全解析搬入 计算 搬出三段式流水 导读 本文以 asc devkit 开源仓人工智能深度学习高性能计算CANN上一篇Lynx 时序基础设施源码指南深入 timing_handler 模块的 TimingMap、TimingInfo 与 NG 执行路径下一篇Folia 歌词动画播放器全平台安装指南Windows、macOS、Linux 三步装好创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

flask江苏果尚食品特色农产品销售平台32092-计算机课程设计、毕业设计
flask江苏果尚食品特色农产品销售平台32092-计算机课程设计、毕业设计

前言 ✨ 博主介绍:一线全栈工程师,毕设实战引路人。技术栈覆盖Java、Python、C#、PHP、Node.js及UniApp跨端开发,擅长多语言项目落地与架构设计。持续分享毕设源码、开题报告、技术选型心得与职场踩坑经验。用工程化思维写代码,帮… · 2026/11/6 6:26:12

Academic Research Skills 使用教程:10 阶段流水线,一篇论文从立项到定稿
Academic Research Skills 使用教程:10 阶段流水线,一篇论文从立项到定稿

Academic Research Skills 使用教程:10 阶段流水线,一篇论文从立项到定稿 【免费下载链接】academic-research-skills Academic Research Skills for Claude Code: research → write → review → revise → finalize 项目地址: https://gitcode.com/… · 2026/11/6 6:26:12

Miniforge 5 分钟搞定 Python 多版本切换:从创建到并行实战
Miniforge 5 分钟搞定 Python 多版本切换:从创建到并行实战

Miniforge 5 分钟搞定 Python 多版本切换:从创建到并行实战 【免费下载链接】miniforge A conda-forge distribution. 项目地址: https://gitcode.com/gh_mirrors/mi/miniforge 昨天我同时开着三个终端——A 窗口跑 3.8 的老项目,B 窗口在调试 3.… · 2026/11/6 6:26:12

考低压电工证知识考试真题与备考技巧
考低压电工证知识考试真题与备考技巧

低压电工证考试怕不过白交培训费?内部消息告诉你怎么稳过 怕考不过白交培训费?你不是一个人。每年都有不少学员花了几千块报名培训,结果考试挂科,不仅钱打水漂,还耽误了工作机会。别急,我这有 内部消息… · 2026/11/7 10:35:05

电工证续期在线申请流程在哪考?上岗找工作别踩坑
电工证续期在线申请流程在哪考?上岗找工作别踩坑

电工证续期在线申请流程在哪考?上岗找工作别踩坑 你手上拿着电工证,但已经快到期了,现在单位急着安排你上岗,可证没续上,岗位又不能空着,这事儿可真让人头疼。别急,今天咱们就来聊聊 电工证续期在线申请流程 ,顺便告诉你 在哪考… · 2026/11/7 10:35:05

和顺县报考电工证保姆级教程:证书过期了不知道怎么复审延期
和顺县报考电工证保姆级教程:证书过期了不知道怎么复审延期

和顺县报考电工证保姆级教程:证书过期了不知道怎么复审延期 证书过期了不知道怎么复审延期?别慌,今天这份保姆级教程,帮你从0到1搞定和顺县报考电工证的复审流程,避免被处罚、影响工作,还能让证书一直有效。… · 2026/11/7 10:35:05

杭州如何办理电工证怎么报名?电工证丢了怎么补办才不耽误找工作
杭州如何办理电工证怎么报名?电工证丢了怎么补办才不耽误找工作

杭州如何办理电工证怎么报名?电工证丢了怎么补办才不耽误找工作 你是不是正为【杭州如何办理电工证】发愁?别急,今天就给你说清楚, 怎么报名… · 2026/11/7 10:35:05

天津电力电缆作业证多少钱?转岗电工必须知道的避坑指南
天津电力电缆作业证多少钱?转岗电工必须知道的避坑指南

天津电力电缆作业证多少钱?转岗电工必须知道的避坑指南 急需特种作业证才能上岗找工作,这话说得一点不假。特别是像焦作这样的工业城市,电工、焊工、高处作业等特种作业岗位门槛高、竞争激烈,手里没有【天津电力电缆作业证】,连面试资格都拿不到。现在问… · 2026/11/7 10:35:05

有ic卡电工证可以应聘电工吗真实经历告诉你答案
有ic卡电工证可以应聘电工吗真实经历告诉你答案

有ic卡电工证可以应聘电工吗真实经历告诉你答案 证书过期了不知道怎么复审延期,这是我去年在漯河市做市政工程时遇到的最头疼的问题。作为一名持证电工,证书一过期,就等于“无证上岗”,轻则被工地清退,重则面临罚款或法律追责。很多同行跟我一样,都经… · 2026/11/7 10:34:05

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄?
澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄?

澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄? 证书过期了不知道怎么复审延期?别慌,很多人在拿到【澳洲水电工证考试】的电子证书后,一不小心就忽略了复审时间,结果证书失效,工作受阻,甚至被单位追责。今天就从【澳洲水电工证考试… · 2026/11/7 0:00:41

电工作业提示版通过率揭秘:怎么考才能一次过?
电工作业提示版通过率揭秘:怎么考才能一次过?

电工作业提示版通过率揭秘:怎么考才能一次过? 怕考不过白交培训费?别急,今天我就从驻马店应届工程类毕业生的视角,带你全面了解电工作业提示版的考试流程、备考要点和真实通过率,帮你少走弯路、提高一次通过率。… · 2026/11/7 0:00:41

电工证年审报名千万别踩坑 外省证转过来要搞清这几点
电工证年审报名千万别踩坑 外省证转过来要搞清这几点

电工证年审报名千万别踩坑 外省证转过来要搞清这几点 之前考的证在外省能不能转过来?这个问题是很多电工从业者最关心的,特别是像你这样在商丘从事公路工程的人员,经常需要跨省流动,证书的 有效性 和 可迁移性… · 2026/11/7 0:00:41

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码