CANN/asc-devkit随路转换ND2NZ搬运 📅 发布时间:2026/7/15 15:13:01 👁️ 浏览次数: 随路转换ND2NZ搬运产品支持情况产品是否支持Global Memory - Local Memory是否支持Local Memory - Local MemoryAscend 950PR/Ascend 950DT√√Atlas A3 训练系列产品 / Atlas A3 推理系列产品√√Atlas A2 训练系列产品 / Atlas A2 推理系列产品√√Atlas 200I/500 A2 推理产品xxAtlas 推理系列产品 AI Core√xAtlas 推理系列产品 Vector CorexxAtlas 训练系列产品xxKirin X90√xKirin 9030√x功能说明支持在数据搬运时进行ND到NZ格式的转换。函数原型Global Memory - Local Memorytemplate typename T __aicore__ inline void DataCopy(const LocalTensorT dst, const GlobalTensorT src, const Nd2NzParams intriParams)// 该函数原型仅支持Ascend 950PR/Ascend 950DT template typename T, bool enableSmallC0 false __aicore__ inline void DataCopy(const LocalTensorT dst, const GlobalTensorT src, const Nd2NzParams intriParams)Local Memory - Local Memorytemplate typename T __aicore__ inline void DataCopy(const LocalTensorT dst, const LocalTensorT src, const Nd2NzParams intriParams)[!NOTE]说明 各原型支持的具体数据通路和数据类型请参考支持的通路和数据类型。参数说明表 1模板参数说明参数名描述T源操作数或者目的操作数的数据类型。支持的数据类型请参考支持的通路和数据类型。enableSmallC0SmallC0模式开关当dValue小于等于4的时候C0_SIZE会补齐到4 * sizeof(T) Bytes。默认不开启。表 2参数说明参数名称输入/输出含义dst输出目的操作数类型为LocalTensor。src输入源操作数类型为LocalTensor或GlobalTensor。intriParams输入搬运参数类型为Nd2NzParams。具体定义请参考${INSTALL_DIR}/include/ascendc/basic_api/interface/kernel_struct_data_copy.h${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。表 3Nd2NzParams结构体参数定义参数名称含义ndNum传输ND矩阵的数目取值范围ndNum∈[0, 4095]。nValueND矩阵的行数取值范围nValue∈[0, 16384]。dValueND矩阵的列数取值范围dValue∈[0, 65535]。srcNdMatrixStride源操作数相邻ND矩阵起始地址间的偏移取值范围srcNdMatrixStride∈[0, 65535]单位为元素。srcDValue源操作数同一ND矩阵的相邻行起始地址间的偏移取值范围srcDValue∈[1, 65535]单位为元素。dstNzC0StrideND转换到NZ格式后源操作数中的一行会转换为目的操作数的多行。dstNzC0Stride表示目的NZ矩阵中来自源操作数同一行的多行数据相邻行起始地址间的偏移取值范围dstNzC0Stride∈[1, 16384]单位C0_SIZE32B。dstNzNStride目的NZ矩阵中Z型矩阵相邻行起始地址之间的偏移。取值范围dstNzNStride∈[1, 16384]单位C0_SIZE32B。dstNzMatrixStride目的NZ矩阵中相邻NZ矩阵起始地址间的偏移取值范围dstNzMatrixStride∈[1, 65535]单位为元素。ND2NZ转换示意图如下样例中参数设置值和解释说明如下ndNum 2表示传输ND矩阵的数目为2 (ND矩阵1为A1~A2 B1~B2ND矩阵2为C1~C2 D1~D2)。nValue 2ND矩阵的行数也就是矩阵的高度为2。dValue 24ND矩阵的列数也就是矩阵的宽度为24个元素。当dValue不满足32B对齐时在目的操作数中不足的部分会被补齐为0例如图示中A2所在DataBlock的空白部分会被补齐为0。srcNdMatrixStride 144表达相邻ND矩阵起始地址间的偏移即为A1~C1的距离即为9个DataBlock9 * 16 144个元素。srcDValue 48表示一行的所含元素个数即为A1到B1的距离即为3个DataBlock3 * 16 48个元素dstNzC0Stride 11。ND转换到NZ格式后源操作数中的一行会转换为目的操作数的多行例如src中A1和A2为1行dst中A1和A2被分为2行。多行数据起始地址之间的偏移就是A1和A2在dst中的偏移偏移为11个DataBlock。dstNzNStride 2表示src中一个ND矩阵的第x行和第x1行转换为NZ格式后在dst中的偏移即A1和B1在dst之间的偏移为2个DataBlock。dstNzMatrixStride 96表达dst中第x个ND矩阵的起点和第x1个ND矩阵的起点的偏移即A1和C1之间的距离即为6个DataBlock6 * 16 96个元素。图 1ND2NZ转换示意图half数据类型enableSmallC0开启模式下的ND2NZ转换示意图如下图 2enableSmallC0开启模式下的ND2NZ转换示意图 half数据类型返回值说明无约束说明针对Atlas 推理系列产品AI Core使用Global Memory - Local Memory通路的ND2NZ搬运接口时需要预留8K的UB空间作为接口的临时数据存放区。支持的通路和数据类型下文的数据通路均通过逻辑位置TPosition来表达并注明了对应的物理通路。TPosition与物理内存的映射关系见表1。表 4Global Memory - Local Memory具体通路和支持的数据类型产品型号数据通路源操作数和目的操作数的数据类型 (两者保持一致)Ascend 950PR/Ascend 950DTGM - VECINGM - UBbool、int8_t、uint8_t、hifloat8_t、fp8_e5m2_t、fp8_e4m3fn_t、fp8_e8m0_t、int16_t、uint16_t、half、bfloat16_t、int32_t、uint32_t、float、complex32GM - A1、B1GM - L1 Bufferbool、int8_t、uint8_t、fp4x2_e2m1_t、fp4x2_e1m2_t、hifloat8_t、fp8_e5m2_t、fp8_e4m3fn_t、fp8_e8m0_t、int16_t、uint16_t、half、bfloat16_t、int32_t、uint32_t、float、complex32Atlas 推理系列产品 AI CoreGM - VECINGM - UBint8_t、uint8_t、int16_t、uint16_t、int32_t、uint32_t、half、floatGM - A1、B1GM - L1 Bufferint16_t、uint16_t、int32_t、uint32_t、half、floatAtlas A2 训练系列产品 / Atlas A2 推理系列产品GM - VECINGM - UBGM - A1、B1GM - L1 Bufferint8_t、uint8_t、int16_t、uint16_t、int32_t、uint32_t、half、bfloat16_t、floatAtlas A3 训练系列产品 / Atlas A3 推理系列产品GM - VECINGM - UBGM - A1、B1GM - L1 Bufferint8_t、uint8_t、int16_t、uint16_t、int32_t、uint32_t、half、bfloat16_t、floatKirin X90GM - A1、B1GM - L1 Bufferhalf、int8_t、uint8_t、int16_t、uint16_tKirin 9030GM - A1、B1GM - L1 Bufferhalf、int8_t、uint8_t、int16_t、uint16_t表 5Local Memory - Local Memory具体通路和支持的数据类型产品型号数据通路源操作数和目的操作数的数据类型 (两者保持一致)Ascend 950PR/Ascend 950DTVECIN、VECCALC、VECOUT - TSCMUB - L1 Bufferbool、int8_t、uint8_t、hifloat8_t、fp8_e5m2_t、fp8_e4m3fn_t、fp8_e8m0_t、int16_t、uint16_t、half、bfloat16_t、int32_t、uint32_t、float、complex32Atlas A2 训练系列产品 / Atlas A2 推理系列产品VECIN、VECCALC、VECOUT - TSCMUB - L1 Bufferint8_t、uint8_t、int16_t、uint16_t、int32_t、uint32_t、half、bfloat16_t、floatAtlas A3 训练系列产品 / Atlas A3 推理系列产品VECIN、VECCALC、VECOUT - TSCMUB - L1 Bufferint8_t、uint8_t、int16_t、uint16_t、int32_t、uint32_t、half、bfloat16_t、float调用示例intriParams参数解析请参考图1。// srcLocal为half类型的L1 Buffer空间上的LocalTensorworkLocal为half类型的UB空间上的LocalTensorsrcGlobal为half类型的GlobalTensor AscendC::Nd2NzParams intriParams{1, 32, 32, 0, 32, 32, 1, 0}; // Global Memory - Local Memory AscendC::DataCopy(srcLocal, srcGlobal, intriParams); // Local Memory - Local Memory AscendC::DataCopy(srcLocal, workLocal, intriParams);结果示例输入数据(srcGlobal): [1 2 3 ... 1024] 输出数据(dstGlobal):[1 2 ... 15 16 33 34 ... 47 48 65 66 ... 79 80 97 98 ... 111 112 ... 1009 1010... 1023 1024]创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
HarmonyOS知识库——导航架构与路由传参的设计模式 知识库 App 有 6 个页面、4 个底部导航 tab、十几条路由跳转路径。页面之间的跳转不是随意的——每条路由都有明确的参数设计,参数的类型和内容决定了目标页面的行为。搞清楚"从哪来、传什么、怎么用",是理解整个 App 数据流的关键。 完整效果… 2026/7/15 15:13:01
openGraphScraper 性能优化:如何提升网页元数据抓取速度 300% openGraphScraper 性能优化:如何提升网页元数据抓取速度 300% 【免费下载链接】openGraphScraper Node.js scraper service for Open Graph Info and More! 项目地址: https://gitcode.com/gh_mirrors/op/openGraphScraper openGraphScraper 是一款强大的 No… 2026/7/15 15:10:59
PCB设计 1.PCB设计小白教程 阅读链接:一篇“从入门到上手”的PCB设计教程-CSDN博客 视频链接一:(以下五个链接是对视频一的总结) 硬件电路设计看这里,Altium Designer 原理图与PCB设计,15/16/17版本的基础部分都是通用的… 2026/7/15 15:08:56
UniMatch:重新定义弱监督到强监督的一致性学习框架 UniMatch:重新定义弱监督到强监督的一致性学习框架 【免费下载链接】UniMatch [CVPR 2023] Revisiting Weak-to-Strong Consistency in Semi-Supervised Semantic Segmentation 项目地址: https://gitcode.com/gh_mirrors/uni/UniMatch 当你面对有限的标注数… 2026/7/15 16:54:58
Windows麦克风快速静音终极指南:MicMute让你的音频控制更高效 Windows麦克风快速静音终极指南:MicMute让你的音频控制更高效 【免费下载链接】MicMute Mute default mic clicking tray icon or shortcut 项目地址: https://gitcode.com/gh_mirrors/mi/MicMute 你是否曾在视频会议中手忙脚乱地寻找静音按钮?是… 2026/7/15 16:48:36
如何用TestDisk和PhotoRec拯救你的丢失数据:免费开源数据恢复终极指南 如何用TestDisk和PhotoRec拯救你的丢失数据:免费开源数据恢复终极指南 【免费下载链接】testdisk TestDisk & PhotoRec 项目地址: https://gitcode.com/gh_mirrors/te/testdisk 你是否曾经因为误删除重要文件、硬盘分区突然消失或存储设备无法访问而感到… 2026/7/15 16:46:36
如何3分钟为PyQt应用添加Material Design主题:Qt Material完整使用指南 如何3分钟为PyQt应用添加Material Design主题:Qt Material完整使用指南 【免费下载链接】qt-material Material inspired stylesheet for PySide2, PySide6, PyQt5 and PyQt6 项目地址: https://gitcode.com/gh_mirrors/qt/qt-material 想在几分钟内让你的Py… 2026/7/15 16:46:36
接口EMC设计实战——RS485防护电路的分级策略与场景化配置 1. RS485接口的EMC挑战与防护必要性第一次接触RS485接口设计时,我天真地以为只要把A/B两线接对就能稳定通信。直到现场调试时遭遇雷雨天气,价值上万的设备瞬间"阵亡",才真正理解电磁兼容(EMC)设计的重要性。… 2026/7/15 16:44:35
吉时利2304直流电源 吉时利2304是一款专为便携式、电池供电设备(如手机、无线通信设备)测试而设计的快速响应直流电源,其核心优势在于能够模拟电池特性,并极快地响应负载的剧烈变化。核心特性与参数这款电源的主要技术指标和功能如下:输出… 2026/7/15 16:44:35
行星减速机的工作原理是什么?从齿轮运动关系到减速比计算 一、行星齿轮机构的组成 标准行星齿轮机构主要包括: 太阳轮; 行星轮; 内齿圈; 行星架。 太阳轮位于机构中心。 多个行星轮围绕太阳轮均匀布置,行星轮内侧与太阳轮外啮合,外侧与内齿圈内啮合。 行星轮通过轴… 2026/7/15 0:03:00
阅读Java开源框架源码的心得分享! 前几日闲来无事有幸看到了一位博主分享自己阅读开源框架源码的心得,看了之后也引发了我的一些深度思考。我们为什么要看源码?我们该怎么样去看源码? 其中前者那位博主描述的我觉得很全了(如下图所示),就不做… 2026/7/15 0:03:00
【LINUX】驱动 【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】 2026/7/15 0:07:01
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/14 18:25:04
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41