GatherMask

函数功能

内置固定模式对应的二进制或者用户自定义输入的Tensor数值对应的二进制为gather mask(数据收集的掩码),从源操作数中选取元素写入目的操作数中。

函数原型

参数说明

表1 模板参数说明

参数名称

含义

T

源操作数src0Local和目的操作数dstLocal的数据类型。

Atlas 推理系列产品AI Core ,支持的数据类型为:half/uint16_t/int16_t/float/uint32_t/int32_t

Atlas A2 训练系列产品/Atlas 800I A2 推理产品 ,支持的数据类型为:half/bfloat16_t/uint16_t/int16_t/float/uint32_t/int32_t

Atlas 200I/500 A2 推理产品 ,支持的数据类型为:half/uint16_t/int16_t/float/uint32_t/int32_t

U

用户自定义模式下src1Pattern的数据类型。支持的数据类型为uint16_t/uint32_t。

  • 当目的操作数数据类型为half/uint16_t/int16_t时,src1Pattern应为uint16_t数据类型。
  • 当目的操作数数据类型为float/uint32_t/int32_t时,src1Pattern应为uint32_t数据类型。

mode

预留参数,为后续功能做预留,当前提供默认值,用户无需设置该参数。

表2 参数说明

参数名称

输入/输出

含义

dstLocal

输出

目的操作数。

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

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

src0Local

输入

源操作数。

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

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

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

src1Pattern

输入

gather mask(数据收集的掩码),分为内置固定模式和用户自定义模式两种,根据内置固定模式对应的二进制或者用户自定义输入的Tensor数值对应的二进制从源操作数中选取元素写入目的操作数中。1为选取,0为不选取。

  • 内置固定模式:src1Pattern数据类型为uint8_t,取值范围为[1,7],所有repeat迭代使用相同的gather mask。不支持配置src1RepeatStride。
    • 1:01010101…0101 # 每个repeat取偶数索引元素
    • 2:10101010…1010 # 每个repeat取奇数索引元素
    • 3:00010001…0001 # 每个repeat内每四个元素取第一个元素
    • 4:00100010…0010 # 每个repeat内每四个元素取第二个元素,
    • 5:01000100…0100 # 每个repeat内每四个元素取第三个元素
    • 6:10001000…1000 # 每个repeat内每四个元素取第四个元素
    • 7:11111111...1111 # 每个repeat内取全部元素

    Atlas 推理系列产品AI Core 支持模式1-6

    Atlas A2 训练系列产品/Atlas 800I A2 推理产品 支持模式1-7

    Atlas 200I/500 A2 推理产品 支持模式1-7

  • 用户自定义模式:src1Pattern数据类型为LocalTensor,迭代间间隔由src1RepeatStride决定, 迭代内src1Pattern连续消耗。

reduceMode

输入

用于选择mask参数模式,数据类型为bool,支持如下取值。

  • false:Normal模式。该模式下,每次repeat操作256Bytes数据,总的数据计算量为repeatTimes * 256Bytes。
    • mask参数无效,必须设置为0。
    • 按需配置repeatTimes、src0BlockStride、src0RepeatStride参数。
    • 支持src1Pattern配置为内置固定模式或用户自定义模式。用户自定义模式下可根据实际情况配置src1RepeatStride。
  • true:Counter模式。根据mask等参数含义的不同,该模式有以下两种配置方式:
    • 配置方式一:每次repeat操作mask个元素,总的数据计算量为repeatTimes * mask个元素。
      • mask值配置为每一次repeat计算的元素个数。
      • 按需配置repeatTimes、src0BlockStride、src0RepeatStride参数。
      • 支持src1Pattern配置为内置固定模式或用户自定义模式。用户自定义模式下可根据实际情况配置src1RepeatStride。
    • 配置方式二:总的数据计算量为mask个元素。
      • mask配置为总的数据计算量。
      • repeatTimes值不生效,指令的迭代次数由源操作数和mask共同决定。
      • 按需配置src0BlockStride、src0RepeatStride参数。
      • 支持src1Pattern配置为内置固定模式或用户自定义模式。用户自定义模式下可根据实际情况配置src1RepeatStride。

    Atlas A2 训练系列产品/Atlas 800I A2 推理产品 ,支持配置方式一

    Atlas 200I/500 A2 推理产品 ,支持配置方式一

    Atlas 推理系列产品AI Core ,支持配置方式二

mask

输入

用于控制每次迭代内参与计算的元素。根据reduceMode,分为两种模式:

  • Normal模式:mask无效,需要设置为0。
  • Counter模式:取值范围[1, 232 – 1]。不同的版本型号Counter模式下,mask参数表示含义不同。具体配置规则参考上文reduceMode参数描述。

gatherMaskParams

输入

控制操作数地址步长的数据结构。结构体内包含操作数相邻迭代间相同datablock的地址步长,操作数同一迭代内不同datablock的地址步长等参数。数据结构的定义如下:

1
2
3
4
5
6
7
struct GatherMaskParams{
    uint8_t src0BlockStride;
    uint16_t repeatTimes;
    uint16_t src0RepeatStride;
    uint8_t src1RepeatStride;

};

相邻迭代间的地址步长参数说明请参考repeatStride;同一迭代内datablock的地址步长参数说明请参考dataBlockStride

rsvdCnt

输出

该条指令筛选后保留下来的元素计数,对应dstLocal中有效元素个数,数据类型为uint64_t。

返回值

支持的型号

Atlas 推理系列产品AI Core

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

Atlas 200I/500 A2 推理产品

注意事项

调用示例