CANN/Ascend C矩阵数据搬入接口
LoadDataWithStride【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持Atlas A2 训练系列产品/Atlas A2 推理系列产品不支持Atlas 200I/500 A2 推理产品不支持Atlas 推理系列产品AI Core不支持Atlas 推理系列产品Vector Core不支持Atlas 训练系列产品不支持Kirin X90不支持Kirin 9030不支持功能说明头文件路径为basic_api/kernel_operator_mm_intf.h。本接口本质上实现功能和LoadData卷积数据搬运接口一致用于将NC1HWC0格式的Feature Map完成Image to Column展开然后再从展开后的二维矩阵中选取指定数据块搬入对应内存位置。与LoadData卷积数据搬运接口的差异在于本接口仅支持Ascend 950PR/Ascend 950DT产品支持配置输出矩阵K轴方向偏移量dstStride的能力且必须配置该参数调用之前必须使用辅助配置接口SetLoadDataRepeatWithStride配置dstStride参数。此外相比于LoadData卷积数据搬运本接口内部不包含针对其他芯片版本的兼容性实现减少了兼容造成的额外开销性能表现有所优化。LoadDataWithStride支持的数据通路为L1 Buffer-L0A Buffer、L1 Buffer-L0B Buffer。函数原型template typename T, const IsResetLoad3dConfig defaultConfig IS_RESER_LOAD3D_DEFAULT_CONFIG, typename U PrimTT,typename Std::enable_ifStd::is_samePrimTT, U::value, bool::type true __aicore__ inline void LoadDataWithStride(const LocalTensorT dst, const LocalTensorT src, const LoadData3DParamsV2U loadDataParams)参数说明表1模板参数说明参数名称含义T源操作数和目的操作数的数据类型。支持的数据类型请参考数据类型。defaultConfig控制是否在接口内部设置相关属性。 IsResetLoad3dConfig类型。IsResetLoad3dConfig结构定义如下struct IsResetLoad3dConfig {bool isSetFMatrix true;bool isSetPadding true;};isSetFMatrix配置为true表示在接口内部设置FeatureMap的属性描述包括l1H、l1W、padList参数介绍参考表3设置为false表示该接口传入的FeatureMap的属性描述不生效开发者需要通过SetFmatrix进行设置。isSetPadding配置为true表示在接口内部设置Pad属性描述即padValue参数参数介绍参考表3设置为false表示该接口传入的Pad属性不生效开发者需要通过SetLoadDataPaddingValue进行设置。该参数的默认值如下constexpr IsResetLoad3dConfig IS_RESER_LOAD3D_DEFAULT_CONFIG {true, true};特性细节可参考Feature Map、Pad属性描述寄存器设置。ULoadData3DParamsV2中padValue的数据类型。当dst、src使用基础数据类型时U和dst、src的数据类型T需保持一致否则编译失败。最后一个模板参数仅用于上述数据类型检查用户无需关注。表2通用参数说明参数名称输入/输出含义dst输出目的操作数类型为LocalTensor。数据连续排列顺序由目的操作数所在物理存储位置决定具体约束如下• L0A Buffer(TPosition: A2)NZ格式。• L0B Buffer(TPosition: B2)ZN格式。src输入源操作数类型为LocalTensor。数据连续排列顺序由目的操作数所在物理存储位置决定L1 Buffer(TPosition: A1/B1)NC1HWC0格式。loadDataParams输入LoadData参数结构体类型为LoadData3DParamsV2具体参考表3。表3LoadData3DParamsV2结构体内参数说明参数名称含义padListpadding列表 [padding_left, padding_right, padding_top, padding_bottom]每个元素取值范围[0, 255]。默认为{0, 0, 0, 0}。l1H源操作数height取值范围l1H∈[0, 32767]。默认为0。l1H 0表示不执行搬运该接口将被视为NOP空操作。l1W源操作数width取值范围l1W∈[0, 32767]。默认为0。l1W 0表示不执行搬运该接口将被视为NOP空操作。channelSize源操作数的通道数取值范围channelSize∈[0, 65535]。默认为0。对于uint32_t/int32_t/floatchannelSize可取值为4N*8N*84对于half/bfloat16channelSize可取值为48N*16N*16 4N*168对于int8_t/uint8_tchannelSize可取值为481632*NN*324N*328N*3216对于int4b_tchannelSize可取值为81632N*64N*648N*6416N*6432。N为正整数。注channelSize 0表示不执行搬运该接口将被视为NOP空操作。kExtension该指令在目的操作数width维度的传输长度如果不覆盖最右侧的分形对于b32类型应为8的倍数对于b16类型应为16的倍数对于b8类型应为32的倍数对于b4类型应为64的倍数覆盖的情况则任何数据类型都无倍数要求。取值范围kExtension∈[0, 65535]。默认为0。注kExtension 0表示不执行搬运该接口将被视为NOP空操作。mExtension该指令在目的操作数height维度的传输长度如果不覆盖最下侧的分形对于b4、b8、b16类型应为16的倍数b32类型无要求覆盖的情况则任何数据类型都无倍数要求。取值范围mExtension∈[0, 65535]。默认为0。注mExtension 0表示不执行搬运该接口将被视为NOP空操作。kStartPt该指令在目的操作数width维度的起点对于b32类型应为8的倍数对于b16类型应为16的倍数对于b8类型应为32的倍数对于b4类型应为64的倍数取值范围[0, 65535]。默认为0。mStartPt该指令在目的操作数height维度的起点取值范围[0, 32767]。默认为0。strideW卷积核在源操作数width维度滑动的步长取值范围strideW∈[0, 63]。默认为1。strideH卷积核在源操作数height维度滑动的步长取值范围strideH∈[0, 63]。默认为1。filterW卷积核width取值范围filterW∈[0, 255]。默认为1。注filterW0且filterSizeWfalse时表示不执行搬运该接口将被视为NOP空操作。filterH卷积核height取值范围filterH∈[0, 255]。默认为1。注filterH0且filterSizeHfalse时表示不执行搬运该接口将被视为NOP空操作。dilationFilterW卷积核width膨胀系数取值范围dilationFilterW∈[0, 255]。默认为1。dilationFilterH卷积核height膨胀系数取值范围dilationFilterH∈[0, 255]。默认为1。enTranspose是否启用转置功能对整个目标矩阵进行转置支持数据类型为bool默认为false。• true启用• false不启用注该参数在目的操作数的物理存储位置为L0A BufferTPosition: A2且源操作数为b8/b16/b32类型时有效。在目的操作数的物理存储位置为L0B BufferTPosition: B2时本参数无效。enSmallK是否开启small k特性每个分形矩阵大小为16*4支持数据类型为bool默认为false。当前产品形态该特性已不再支持。padValuePad填充值的数值数据类型需要与src保持一致。若不想开启padding可将padList设为全0。默认为0。filterSizeW是否在filterW的基础上将卷积核width增加256个元素。true增加false不增加。默认为false。filterSizeH是否在filterH的基础上将卷积核height增加256个元素。true增加false不增加。默认为false。fMatrixCtrl表示LoadData卷积数据搬运 v2指令从左矩阵还是右矩阵获取FeatureMap的属性描述与SetFmatrix配合使用默认值为false。当前只支持设置为false。• true从右矩阵中获取FeatureMap的属性描述• false从左矩阵中获取FeatureMap的属性描述。数据类型数据通路为L1 Buffer(TPosition::A1)-L0A Buffer(TPosition::A2)时支持数据类型为int8_t、uint8_t、hifloat8_t、fp8_e5m2_t、fp8_e4m3fn_t、half、bfloat16_t、int32_t、uint32_t、float。数据通路为L1 Buffer(TPosition::B1)-L0B Buffer(TPosition::B2)时支持数据类型为half、bfloat16_t、int32_t、uint32_t、float。返回值说明无约束说明非转置场景下L1 Buffer-L0B Buffer通路不支持。L1 Buffer-L0B Buffer通路下会自动进行转置不需要配置enTranspose此时enTranspose参数无效。当目的地址位于L0A Buffer/L0B Buffer时地址必须512字节对齐。当源地址位于L1 Buffer时地址必须32字节对齐。必须使用辅助配置接口SetLoadDataRepeatWithStride配置dstStride参数。调用示例本接需与SetLoadDataRepeatWithStride接口配合使用展示代码示例片段// LoadDataWithStride指令完成img2col的过程可知 img2col后A矩阵高度为ho * wo,根据ho和wo的计算公式代入卷积核宽度、卷积核滑动步长、卷积核膨胀系数等参数可知A矩阵的高度为CeilAlign(k, fractalShape[0])img2col后A矩阵宽度为ci * kh * kw代入kh1kw1可知A矩阵的宽度为CeilAlign(m, fractalShape[1])。最后配置loadDataParams.enTranspose true将整个A 矩阵转置并且将其中每一个分形转置。 AscendC::LoadData3DParamsV2T loadDataParams; // 设置loadDataParams相关参数 ... // 使用SetLoadDataRepeatWithStride接口设置LoadDataWithStride接口的repeat参数 AscendC::LoadDataRepeatParamWithStride repeatParams; repeatParams.repeatTime 1; // height/width方向上的迭代次数 repeatParams.repeatStride 1; // height/width方向上前后迭代起始位置的距离 repeatParams.repeatMode 0; // 迭代方向0迭代沿height; 1迭代沿width repeatParams.dstStride CeilDivision(m, fractalShape[0]); // 输出矩阵K轴方向偏移 AscendC::SetLoadDataRepeatWithStride(repeatParams); AscendC::LoadDataWithStride(a2Local, a1Local, loadDataParams);【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

IGBT双脉冲测试原理与工程实践指南

IGBT双脉冲测试原理与工程实践指南

1. IGBT双脉冲测试的核心价值 在功率电子器件的研发和生产过程中,双脉冲测试堪称IGBT模块的"体检报告"。这种看似简单的测试方法,却能揭示出器件在动态开关过程中的关键特性参数。我第一次接触双脉冲测试是在2018年参与某电动汽车驱动模块开发…

2026/7/16 23:34:59阅读更多 →
华为OD机试真题 新系统 2026-07-12 PythonJS 实现【软件依赖树】

华为OD机试真题 新系统 2026-07-12 PythonJS 实现【软件依赖树】

目录 题目 思路 Code 题目 题目内容: 在软件项目开发中,不同版本组件之间会互相引用,组件依赖组件,形成一棵从根节点展开的依赖树。 请对当前项目的组件依赖关系进行分析,按项目组件依赖顺序输出最终有效的组件…

2026/7/16 23:34:59阅读更多 →
ArcGIS空间统计实战:用标准差椭圆洞察城市设施分布格局

ArcGIS空间统计实战:用标准差椭圆洞察城市设施分布格局

1. 标准差椭圆:城市设施分布的"体检报告" 第一次听说标准差椭圆时,我正盯着电脑屏幕上的共享单车分布图发愁。密密麻麻的停车点像撒了一地的芝麻,根本看不出规律。直到同事扔给我这个工具,才恍然大悟——原来空间分析可…

2026/7/16 23:34:59阅读更多 →
【大白话说Java面试题 第177题】【07_Redis篇】第13题:Redis 的持久化机制有哪些?优缺点说说

【大白话说Java面试题 第177题】【07_Redis篇】第13题:Redis 的持久化机制有哪些?优缺点说说

📌 PDF:大白话说Java面试题 — 07_Redis篇 第13题:Redis 的持久化机制有哪些?优缺点说说 📚 回答: 核心考点: Redis 持久化是保障数据安全的核心机制,大厂面试不会只问"RDB 和…

2026/7/17 0:30:03阅读更多 →
Android随笔-startServicebindService

Android随笔-startServicebindService

一、核心区别对比 特性startService()bindService()启动方式直接启动,无需组件绑定需要与组件(Activity/Fragment)绑定生命周期onCreate() → onStartCommand()onCreate() → onBind()与调用者关系调用者与 Service 无直接关联调用者与 Serv…

2026/7/17 0:30:03阅读更多 →
我即世界:很多你以为的“婚姻之苦”,本质上只是人生之苦:穿衣不是为了遮羞,是老人在为自己的老去找一个道德的借口掩盖自己的老去,好比老虎不会暴漏自己的伤口给竞争对手一样,动物界没有穿衣一说

我即世界:很多你以为的“婚姻之苦”,本质上只是人生之苦:穿衣不是为了遮羞,是老人在为自己的老去找一个道德的借口掩盖自己的老去,好比老虎不会暴漏自己的伤口给竞争对手一样,动物界没有穿衣一说

婚姻背锅的真相:你感受到的不幸,是一场被多方合谋的认知陷阱 前阵子那句“普通人本来就很难获得幸福,只不过大家都将它归于婚姻”戳中了无数人。 但很少有人往下再问一层: 为什么我们会下意识把所有不如意都甩锅给婚姻? “结婚=人生圆满”的执念到底是谁灌输给我们的? 铺…

2026/7/17 0:30:03阅读更多 →
我不介意被人讨厌,渴望被人喜欢才是弱点:选工作不用听亲戚说体不体面;过日子不用听别人评价会遵守社会规范,自己的体验最重要,同样对方也要有这个意识

我不介意被人讨厌,渴望被人喜欢才是弱点:选工作不用听亲戚说体不体面;过日子不用听别人评价会遵守社会规范,自己的体验最重要,同样对方也要有这个意识

我不介意被人讨厌:渴望被喜欢,才是一个人最大的弱点 目录 我不介意被人讨厌:渴望被喜欢,才是一个人最大的弱点 穿衣服:舒服比“别人眼里的好看”重要 选工作:需求比“别人嘴里的体面”重要:其实根本没有什么好工作:因为好工作轮不到你,你不知道是不是好工作就是坏工作…

2026/7/17 0:30:03阅读更多 →
爬虫转大模型:从上线前检查开始讲

爬虫转大模型:从上线前检查开始讲

聊《大模型岗位变了,爬虫工程师该补的还是算法吗?》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值…

2026/7/17 0:30:03阅读更多 →
写网文卡文缺灵感?全流程 AI 辅助工具分层搭配,新手全职作者通用(2026年新版)

写网文卡文缺灵感?全流程 AI 辅助工具分层搭配,新手全职作者通用(2026年新版)

导语随着人工智能技术持续落地文创领域,AI 辅助写作逐步成为网文作者、传统文学创作者、编剧以及非虚构书籍撰稿人的日常创作方式。当下市场涌现出多款主打 AI 智能写作的工具产品,各类产品在功能侧重、技术架构、服务定价、适配创作题材上分化明显&…

2026/7/17 0:25:03阅读更多 →
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阅读更多 →
VS Code 高效配置与个性化定制全攻略

VS Code 高效配置与个性化定制全攻略

1. VS Code 高效配置基础作为一款轻量级但功能强大的代码编辑器,VS Code 的默认配置已经能满足基本需求,但通过合理调整设置可以大幅提升编码效率。我使用 VS Code 已经有五年多时间,期间尝试过各种配置方案,总结出这套适合大多数…

2026/7/17 0:00:01阅读更多 →
从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

在异常检测领域,很多优秀算法最初都是以研究代码的形式发布的。它们能够在固定测试集上复现实验结果,却不一定能被普通用户直接拿来测试自己的图片。尤其是最近很多算法仅提供在固定测试集的测试环境,而gradio的demo演示也不会提供。 对工程应用和在自己的图片上进行测试来…

2026/7/17 0:00:01阅读更多 →
WinRAR高效配置指南:从基础安装到高级压缩实战

WinRAR高效配置指南:从基础安装到高级压缩实战

前几天帮同事处理一个客户发来的压缩包,解压时系统自带的工具弹出一串乱码,换用 WinRAR 却顺利打开了。这种看似简单的场景,恰恰暴露了不同压缩工具在处理非标准编码、分卷压缩或加密文件时的差异。WinRAR 作为一款老牌工具,真正价…

2026/7/17 0:00:01阅读更多 →
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阅读更多 →