昇腾C GatherMask函数文档

发布时间:2026/9/9 15:37:51

昇腾C GatherMask函数文档 GatherMask产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品 / Atlas A3 推理系列产品√Atlas A2 训练系列产品 / Atlas A2 推理系列产品√Atlas 200I/500 A2 推理产品√Atlas 推理系列产品 AI Core√Atlas 推理系列产品 Vector CorexAtlas 训练系列产品x功能说明以内置固定模式对应的二进制或者用户自定义输入的Tensor数值对应的二进制为gather mask数据收集的掩码从源操作数中选取元素写入目的操作数中。函数原型用户自定义模式template typename T, typename U, GatherMaskMode mode defaultGatherMaskMode __aicore__ inline void GatherMask(const LocalTensorT dst, const LocalTensorT src0, const LocalTensorU src1Pattern, const bool reduceMode, const uint32_t mask, const GatherMaskParams gatherMaskParams, uint64_t rsvdCnt)内置固定模式template typename T, GatherMaskMode mode defaultGatherMaskMode __aicore__ inline void GatherMask(const LocalTensorT dst, const LocalTensorT src0, const uint8_t src1Pattern, const bool reduceMode, const uint32_t mask, const GatherMaskParams gatherMaskParams, uint64_t rsvdCnt)参数说明表 1模板参数说明参数名称含义T源操作数src0和目的操作数dst的数据类型。Ascend 950PR/Ascend 950DT支持的数据类型为int8_t/uint8_t/int16_t/uint16_t/half/bfloat16_t/float/int32_t/uint32_tAtlas A3 训练系列产品 / Atlas A3 推理系列产品支持的数据类型为half/bfloat16_t/uint16_t/int16_t/float/uint32_t/int32_tAtlas A2 训练系列产品 / Atlas A2 推理系列产品支持的数据类型为half/bfloat16_t/uint16_t/int16_t/float/uint32_t/int32_tAtlas 200I/500 A2 推理产品支持的数据类型为half/uint16_t/int16_t/float/uint32_t/int32_tAtlas 推理系列产品 AI Core支持的数据类型为half/uint16_t/int16_t/float/uint32_t/int32_tU用户自定义模式下src1Pattern的数据类型。支持的数据类型为uint8_t/uint16_t/uint32_t。当目的操作数数据类型为uint8_t/int8_t时src1Pattern应为uint8_t数据类型。当目的操作数数据类型为b16时src1Pattern应为uint16_t数据类型。当目的操作数数据类型为float/uint32_t/int32_t时src1Pattern应为uint32_t数据类型。mode预留参数为后续功能做预留当前提供默认值用户无需设置该参数。表 2参数说明参数名称输入/输出含义dst输出目的操作数。类型为LocalTensor支持的TPosition为VECIN/VECCALC/VECOUT。LocalTensor的起始地址需要32字节对齐。src0输入源操作数。类型为LocalTensor支持的TPosition为VECIN/VECCALC/VECOUT。LocalTensor的起始地址需要32字节对齐。数据类型需要与目的操作数保持一致。src1Pattern输入gather mask数据收集的掩码分为内置固定模式和用户自定义模式两种根据内置固定模式对应的二进制或者用户自定义输入的Tensor数值对应的二进制从源操作数中选取元素写入目的操作数中。1为选取0为不选取。内置固定模式src1Pattern数据类型为uint8_t取值范围为[1,7]所有repeat迭代使用相同的gather mask。不支持配置src1RepeatStride。101010101…0101 # 每个repeat取偶数索引元素210101010…1010 # 每个repeat取奇数索引元素300010001…0001 # 每个repeat内每四个元素取第一个元素400100010…0010 # 每个repeat内每四个元素取第二个元素501000100…0100 # 每个repeat内每四个元素取第三个元素610001000…1000 # 每个repeat内每四个元素取第四个元素711111111...1111 # 每个repeat内取全部元素Ascend 950PR/Ascend 950DT支持模式1-7Atlas A3 训练系列产品 / Atlas A3 推理系列产品支持模式1-7Atlas A2 训练系列产品 / Atlas A2 推理系列产品支持模式1-7Atlas 200I/500 A2 推理产品支持模式1-7Atlas 推理系列产品 AI Core支持模式1-6用户自定义模式src1Pattern数据类型为LocalTensor迭代间间隔由src1RepeatStride决定 迭代内src1Pattern连续消耗。LocalTensor的起始地址需要32字节对齐。reduceMode输入用于选择mask参数模式数据类型为bool支持如下取值。falseNormal模式。该模式下每次repeat操作256Bytes数据总的数据计算量为repeatTimes * 256Bytes。mask参数无效建议设置为0。按需配置repeatTimes、src0BlockStride、src0RepeatStride参数。支持src1Pattern配置为内置固定模式或用户自定义模式。用户自定义模式下可根据实际情况配置src1RepeatStride。trueCounter模式。根据mask等参数含义的不同该模式有以下两种配置方式配置方式一每次repeat操作mask个元素总的数据计算量为repeatTimes * mask个元素。mask值配置为每一次repeat计算的元素个数。按需配置repeatTimes、src0BlockStride、src0RepeatStride参数。支持src1Pattern配置为内置固定模式或用户自定义模式。用户自定义模式下可根据实际情况配置src1RepeatStride。配置方式二总的数据计算量为mask个元素。mask配置为总的数据计算量。repeatTimes值不生效指令的迭代次数由源操作数和mask共同决定。按需配置src0BlockStride、src0RepeatStride参数。支持src1Pattern配置为内置固定模式或用户自定义模式。用户自定义模式下可根据实际情况配置src1RepeatStride。Ascend 950PR/Ascend 950DT支持配置方式一Atlas A3 训练系列产品 / Atlas A3 推理系列产品支持配置方式一Atlas A2 训练系列产品 / Atlas A2 推理系列产品支持配置方式一Atlas 200I/500 A2 推理产品支持配置方式一Atlas 推理系列产品 AI Core支持配置方式二mask输入用于控制每次迭代内参与计算的元素。根据reduceMode分为两种模式Normal模式mask无效建议设置为0。Counter模式取值范围[1, 232– 1]。不同的版本型号Counter模式下mask参数表示含义不同。具体配置规则参考上文reduceMode参数描述。gatherMaskParams输入控制操作数地址步长的数据结构GatherMaskParams类型。具体定义请参考${INSTALL_DIR}/include/ascendc/basic_api/interface/kernel_struct_gather.h${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。具体参数说明表3。rsvdCnt输出该条指令筛选后保留下来的元素计数对应dstLocal中有效元素个数数据类型为uint64_t。表 3GatherMaskParams结构体参数说明参数名称含义src0BlockStride用于设置src0同一迭代不同DataBlock间的地址步长起始地址之间的间隔。单位为DataBlock。repeatTimes迭代次数。src0RepeatStride用于设置src0相邻迭代间的地址步长起始地址之间的间隔。单位为DataBlock。src1RepeatStride用于设置src1相邻迭代间的地址步长起始地址之间的间隔。单位为DataBlock。返回值说明无约束说明操作数地址对齐要求请参见通用地址对齐约束。操作数地址重叠约束请参考通用地址重叠约束。若调用该接口前为Counter模式在调用该接口后需要显式设置回Counter模式接口内部执行结束后会设置为Normal模式。调用示例用户自定义Tensor样例示例完整的调用样例可参考Gather类样例场景二。uint32_t mask 70; // 每次迭代内参与计算的元素 uint64_t rsvdCnt 0; // 保留下来的元素个数 // src0Local源操作数 // src1Local存放数据收集的掩码的Tensor // dstLocal目的操作数 // reduceMode true; 使用Counter模式 // {}中的参数为 // src0BlockStride 1; 单次迭代内数据间隔1个datablock即数据连续读取和写入 // repeatTimes 2; Counter模式时仅在部分产品型号下会生效 // src0RepeatStride 4; 源操作数迭代间数据间隔4个datablock // src1RepeatStride 0; src1迭代间数据间隔0个datablock即原位置读取 AscendC::GatherMask (dstLocal, src0Local, src1Local, true, mask, { 1, 2, 4, 0 }, rsvdCnt);下图为Counter模式配置方式一示意图mask 70每一次repeat计算70个元素repeatTimes 2共进行2次repeatsrc0BlockStride 1源操作数src0Local单次迭代内datablock之间无间隔src0RepeatStride 4源操作数src0Local相邻迭代间的间隔为4个datablock所以第二次repeat从第33个元素开始处理。src1Pattern配置为用户自定义模式。src1RepeatStride 0src1Pattern相邻迭代间的间隔为0个datablock所以第二次repeat仍从src1Pattern的首地址开始处理。图 1Counter模式配置方式一示意图![](https://raw.gitcode.com/cann/asc-devkit/raw/68eb55191616e7a7b08961a5c82a706272353b5f/docs/api/figures/Counter模式配置方式一示意图.png Counter模式配置方式一示意图?utm_sourcegitcode_repo_files)下图为Counter模式配置方式二示意图mask 70一共计算70个元素repeatTimes配置不生效根据源操作数和mask自动推断源操作数的数据类型为uint32_t每个迭代处理256Bytes数据一个迭代处理64个元素共需要进行2次repeatsrc0BlockStride 1源操作数src0Local单次迭代内datablock之间无间隔src0RepeatStride 4源操作数src0Local相邻迭代间的间隔为4个datablock所以第二次repeat从第33个元素开始处理。src1Pattern配置为用户自定义模式。src1RepeatStride 0src1Pattern相邻迭代间的间隔为0个datablock所以第二次repeat仍从src1Pattern的首地址开始处理。图 2Counter模式配置方式二示意图![](https://raw.gitcode.com/cann/asc-devkit/raw/68eb55191616e7a7b08961a5c82a706272353b5f/docs/api/figures/Counter模式配置方式二示意图.png Counter模式配置方式二示意图?utm_sourcegitcode_repo_files)内置固定模式样例示例完整的调用样例可参考Gather类样例场景一。uint32_t mask 0; // 每次迭代内参与计算的元素normal模式下mask建议设置为0 uint64_t rsvdCnt 0; // 用于保存筛选后保留下来的元素个数 uint8_t src1Pattern 2; // 内置固定模式 // src0Local源操作数 // src1Pattern 存放数据收集的掩码的Tensor // src0Local目的地址与源地址复用 // reduceMode false; 使用normal模式 // {}中的参数为 // src0BlockStride 1; 单次迭代内数据间隔1个Block即数据连续读取和写入 // repeatTimes 4;重复迭代4次 // src0RepeatStride 8;源操作数迭代数据间隔8个datablock // src1RepeatStride 0;重复一次故设置为0 AscendC::GatherMask(src0Local, src0Local, src1Pattern, false, mask, { 1, 4, 8, 0 }, rsvdCnt);结果示例如下输入数据src0Local[1 2 3 ... 256] 输入数据src1Patternsrc1Pattern 2; 输出数据dstLocal[ 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 102 104 106 108 110 112 114 116 118 120 122 124 126 128 130 132 134 136 138 140 142 144 146 148 150 152 154 156 158 160 162 164 166 168 170 172 174 176 178 180 182 184 186 188 190 192 194 196 198 200 202 204 206 208 210 212 214 216 218 220 222 224 226 228 230 232 234 236 238 240 242 244 246 248 250 252 254 256 undefined ..undefined] 输出数据rsvdCnt128创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/9 15:34:42

AE文字弹性入场动画教程:关键帧、表达式与运动曲线实操

这次直接聊一个很多刚接触 After Effects 的人都会问的效果:文字弹性入场动画。 所谓弹性入场,就是文字从画面外快速进场,到达目标位置后不是直接“硬停”,而是先冲过头一点,再弹回、再小幅震荡,最后稳住。…

2026/9/9 15:34:42

使用Visual Studio Installer Projects打包MSI安装包全指南

写完一个桌面工具,编译通过、本地跑得飞起,发给同事却说“打不开”“缺了什么”“装不上”——这种场景我应该不用多解释。做开发这些年,我见过太多程序死在最后的交付环节:Python 用 PyInstaller 打包后冒出来ValueError: invali…

2026/9/9 15:34:41

2026 高考收官|长沙思沁,湖南高复赛道跑出的现象级黑马

2026年湖南高考收官,长沙思沁高复用一组数据进入公众视野:屏蔽生2人、清北录取8人、600分以上290人。在长沙热门复读学校的公开排名中,这三个数字均处于前列位置。在民办复读机构长期以"兜底"形象出现的湖南市场,这一表…

2026/9/9 15:34:41

CSDN文章导出PDF全攻略:从浏览器打印到自动化

在CSDN上写博客的人,应该都经历过这种场景:翻到一篇特别好的技术文章,随手就存了书签,结果过段时间再点开,提示文章已删除或者博主改名了。更常见的是自己辛辛苦苦写的文章,想留个排版固定、不会被平台改版…

2026/9/9 15:34:41

56大高标精工工艺深度解读——名匠如何定义行业施工新标准

在名匠「高标整装」的四大高标准中,施工高标准占据核心地位——它不仅是品牌营销的主线,更是产品价值的基石-。名匠「高标整装」构建了12大领跑者工艺系统,涵盖56大高标精工工艺-。这些工艺并非简单的“技术堆砌”,而是针对传统家…

2026/9/9 15:29:41

富士通fi6130扫描仪驱动下载安装与排错实战指南

简介:富士通fi6130扫描驱动是面向fi-6130文档扫描仪用户的官方驱动资源,旨在解决设备与操作系统之间的通信兼容问题,提升扫描速度、图像质量与功能稳定性。压缩包共652个文件,体积约306.56MB,包含dll动态库、exe安装程…

2026/9/9 13:11:35

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/8 7:15:15

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/8 7:15:10

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/9 0:00:48

MHS模型硬件标准:让大模型像调用软件一样控制物理设备

让Claude真正看着显微镜说“这个细胞形态不太对”,或者让大模型自己调一版机械臂的运动轨迹,这事儿听上去已经很接近科幻片了。但你真上手试一次就会发现,模型不缺智商,缺的是一个能插进显微镜、机械臂、激光控制器里的“通用插座…

2026/9/9 0:00:48

AI五大核心方向详解:从机器学习到大模型,零基础转行选哪条?

会有人告诉我,他想转行学AI,但打开招聘网站一看直接傻眼:机器学习、深度学习、自然语言处理、计算机视觉、大模型应用……满屏都是这些词,好像每个都会一点,又好像每个都离自己很远。还有人上来就问“学Python还是学Ja…

2026/9/9 0:00:49

从50行最小循环到生产级AI引擎:工程化改造全解析

直接说干货。这一章我写的不是那种"hello world跑通某个模型"的教程,而是把AI引擎当做一个真正要上线、要被人调用、要扛流量的系统来聊。从最初只有50行的最小循环,到能够承载生产流量的AI引擎,中间差的不是代码量,而是…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码