news 2026/7/15 15:39:58

CANN/asc-devkit向量填充API文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/asc-devkit向量填充API文档

VectorPadding(ISASI)

产品支持情况

产品

是否支持

Ascend 950PR/Ascend 950DT

x

Atlas A3 训练系列产品 / Atlas A3 推理系列产品

x

Atlas A2 训练系列产品 / Atlas A2 推理系列产品

x

功能说明

根据padMode(pad模式)与padSide(pad方向)对源操作数按照datablock进行填充操作。

假设源操作数的一个datablock有16个数,datablock[0:15]=a~p:

  • padSide==false:从datablock的左边开始填充,即datablock的起始值方向(a->p)

  • padSide==true:从datablock的右边开始填充,即datablock的结束值方向(p->a)

  • padMode==0:用邻近数作为填充值,例:aaa|abc(padSide=false)、nop|ppp(padSide=true)

  • padMode==1:用邻近datablock值对称填充,例:cba|abc(padSide=false)、nop|pon(padSide=true)

  • padMode==2:用邻近datablock值填充,偏移一个数,做对称填充,例:

    • padSide=false:xcb|abc,xcb被填充,填充过程描述:a被丢弃,对称填充,x处填充0
    • padSide=true:nop|onx,onx被填充,填充过程描述:p被丢弃,对称填充,x处填充0

函数原型

  • tensor前n个数据计算

    template <typename T> __aicore__ inline void VectorPadding(const LocalTensor<T>& dst, const LocalTensor<T>& src, const uint8_t padMode, const bool padSide, const uint32_t count)
  • tensor高维切分计算

    • mask逐bit模式

      template <typename T, bool isSetMask = true> __aicore__ inline void VectorPadding(const LocalTensor<T>& dst, const LocalTensor<T>& src, const uint8_t padMode, const bool padSide, const uint64_t mask[], const uint8_t repeatTime, const UnaryRepeatParams& repeatParams)
    • mask连续模式

      template <typename T, bool isSetMask = true> __aicore__ inline void VectorPadding(const LocalTensor<T>& dst, const LocalTensor<T>& src, const uint8_t padMode, const bool padSide, const uint64_t mask, const uint8_t repeatTime, const UnaryRepeatParams& repeatParams)

参数说明

表 1模板参数说明

参数名

描述

T

操作数数据类型。

isSetMask

是否在接口内部设置mask。

  • true,表示在接口内部设置mask。
  • false,表示在接口外部设置mask,开发者需要使用SetVectorMask接口设置mask值。这种模式下,本接口入参中的mask值必须设置为占位符MASK_PLACEHOLDER。

表 2参数说明

参数名

输入/输出

描述

dst

输出

目的操作数。

类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。

LocalTensor的起始地址需要32字节对齐。

src

输入

源操作数。

类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。

LocalTensor的起始地址需要32字节对齐。

源操作数的数据类型需要与目的操作数保持一致。

padMode

输入

padding模式,类型为uint8_t,取值范围:[0,2]。

  • 0:用邻近数作为填充值。
  • 1:用邻近datablock值对称填充。
  • 2:用邻近datablock值填充,偏移一个数,做对称填充。

padSide

输入

padding的方向,类型为bool。

  • false:左边。
  • true:右边。

count

输入

参与计算的元素个数。

mask[]/mask

输入

mask用于控制每次迭代内参与计算的元素。

  • 连续模式:表示前面连续的多少个元素参与计算。取值范围和操作数的数据类型有关,数据类型不同,每次迭代内能够处理的元素个数最大值不同。当操作数为16位时,mask∈[1, 128];当操作数为32位时,mask∈[1, 64];当操作数为64位时,mask∈[1, 32]。

repeatTime

输入

重复迭代次数。矢量计算单元,每次读取连续的256Bytes数据进行计算,为完成对输入数据的处理,必须通过多次迭代(repeat)才能完成所有数据的读取与计算。repeatTime表示迭代的次数。

repeatParams

输入

控制操作数地址步长的参数。UnaryRepeatParams类型,包含操作数相邻迭代间相同DataBlock的地址步长,操作数同一迭代内不同DataBlock的地址步长等参数。

返回值说明

约束说明

  • 操作数地址对齐要求请参见通用地址对齐约束。

  • mask仅控制目的操作数中的哪些元素要写入,源操作数的读取与mask无关。

  • count表示写入目的操作数中的元素总数,源操作数的读取与count无关。

调用示例

样例的srcLocal和dstLocal均为half类型。

更多样例可参考LINK。

  • tensor高维切分计算样例-mask连续模式

    uint64_t mask = 256 / sizeof(half); uint8_t padMode = 0; bool padSide = false; // repeatTime = 4, 128 elements one repeat, 512 elements total // dstBlkStride, srcBlkStride = 1, no gap between blocks in one repeat // dstRepStride, srcRepStride = 8, no gap between repeats AscendC::VectorPadding(dstLocal, srcLocal, padMode, padSide, mask, 4, { 1, 1, 8, 8 });
  • tensor高维切分计算样例-mask逐bit模式

    uint64_t mask[2] = { UINT64_MAX, UINT64_MAX }; uint8_t padMode = 0; bool padSide = false; // repeatTime = 4, 128 elements one repeat, 512 elements total // dstBlkStride, srcBlkStride = 1, no gap between blocks in one repeat // dstRepStride, srcRepStride = 8, no gap between repeats AscendC::VectorPadding(dstLocal, srcLocal, padMode, padSide, mask, 4, { 1, 1, 8, 8 });
  • tensor前n个数据计算样例

    uint8_t padMode = 0; bool padSide = false; AscendC::VectorPadding(dstLocal, srcLocal, padMode, padSide, 512);

结果示例如下:

// 以srcLocal的一个datablock的值为例,有16个数 输入数据(srcLocal): [6.938 -8.86 -0.2263 ... 1.971 1.778] 输出数据(dstLocal): [6.938 6.938 6.938 ... 6.938 6.938]

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/15 15:36:49

CANN/asc-devkit TensorDesc.GetDataObj API文档

GetDataObj 产品支持情况产品 是否支持 Ascend 950PR/Ascend 950DT x Atlas A3 训练系列产品/Atlas A3 推理系列产品 √ Atlas A2 训练系列产品/Atlas A2 推理系列产品 √ Atlas 200I/500 A2 推理产品 x Atlas 推理系列产品AI Core √ Atlas 推理系列产品Vector Core √ Atlas …

作者头像 李华
网站建设 2026/7/15 15:36:22

OpenMTP终极指南:如何在macOS上实现高效的Android文件传输

OpenMTP终极指南&#xff1a;如何在macOS上实现高效的Android文件传输 【免费下载链接】openmtp OpenMTP - Advanced Android File Transfer Application for macOS 项目地址: https://gitcode.com/gh_mirrors/op/openmtp 还在为macOS与Android设备之间的文件传输问题而…

作者头像 李华
网站建设 2026/7/15 15:35:35

计算机毕业设计之jsp嘻嘻二手服饰交易平台的设计与实现

随着社会的发展&#xff0c;系统的管理形势越来越严峻。越来越多的用户利用互联网获得信息&#xff0c;但各种信息鱼龙混杂&#xff0c;信息真假难以辨别。为了方便用户更好的获得信息&#xff0c;因此&#xff0c;设计一种安全高效的嘻嘻二手服饰交易平台极为重要。为设计一个…

作者头像 李华
网站建设 2026/7/15 15:34:18

服务器CE认证测试项目详解:欧盟EMC与LVD指令的合规要求与测试清单

一、CE认证制度概述 CE认证&#xff08;Conformit Europenne&#xff09;是欧盟针对产品安全、健康、环保等维度实施的强制性合格评定制度。服务器作为信息技术设备&#xff0c;进入欧盟市场销售须满足CE标志加施要求&#xff0c;涉及欧盟新方法指令中的两项核心指令&#xff1…

作者头像 李华
网站建设 2026/7/15 15:34:02

Aviator预测机器人:如何让免费工具提升你的游戏胜率

Aviator预测机器人&#xff1a;如何让免费工具提升你的游戏胜率 【免费下载链接】aviator Level up your Aviator game! This bot employs its prediction prowess to help you maximize your profit – and its completely free! 项目地址: https://gitcode.com/GitHub_Tren…

作者头像 李华
网站建设 2026/7/15 15:33:22

3步部署GreaterWMS:终极开源仓库管理系统完整指南

3步部署GreaterWMS&#xff1a;终极开源仓库管理系统完整指南 【免费下载链接】GreaterWMS This Inventory management system is the currently Ford Asia Pacific after-sales logistics warehousing supply chain process . After I leave Ford , I start this project . Yo…

作者头像 李华