GatherMask

函数功能

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

函数原型

参数说明

表1 参数说明

参数名称

输入/输出

含义

dstLocal

输出

目的操作数。

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

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

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

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

src0Local

输入

源操作数。

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

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

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

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

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

src1Pattern

输入

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

  • 内置固定模式:src1Pattern数据类型为uint8_t,取值范围为[1,7],所有repeat迭代使用相同的gather mask。
    • 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,支持的数据类型为uint16_t/uint32_t,迭代间间隔由src1RepeatStride决定, 迭代内src1Pattern连续消耗。支持两种配置:
    • 当目的操作数数据类型为half/uint16_t/int16_t时,src1Pattern应为uint16_t数据类型。
    • 当目的操作数数据类型为float/uint32_t/int32_t时,src1Pattern应为uint32_t数据类型。

reduceMode

输入

mask模式选择参数,支持的数据类型:bool,取值为:

  • false:mask为normal mode,该模式下mask必须设置为0,src1Pattern支持内置固定模式和用户自定义模式。
  • true:mask为counter mode。

mask

输入

mask值仅在reduceMode为true时生效。

根据reduceMode,分为两种模式:

  • normal mode:该模式下,mask无效,需要设置为0。一次repeat操作128(half/int16_t/uint16_t)或64(float/int32_t/uint32_t)个元素。
  • counter mode:取值范围[1, 2**32 – 1]。

    对于 Atlas A2训练系列产品/Atlas 800I A2推理产品,在counter模式下:

    • mask值代表每一次repeat计算的元素个数;
    • repeatTimes值生效;
    • 总的数据计算量为:repeatTimes * mask;
    • src0RepeatStride只在每一次repeat之间(repeat每次的计算量为mask个element)有效,在单次repeat内部,src0BlockStride有效。

    对于Atlas推理系列产品AI Core, 在counter模式下:

    • mask值代表总的计算元素个数。
    • repeatTimes值不生效,指令的迭代次数由源操作数和mask共同决定。
    • src0RepeatStride只在每一次repeat之间(repeat每次的计算量为256bytes)有效,在单次repeat内部,src0BlockStride有效。

    对于 Atlas 200I/500 A2推理产品,在counter模式下:

    • mask值代表每一次repeat计算的元素个数;
    • repeatTimes值生效;
    • 总的数据计算量为:repeatTimes * mask;
    • src0RepeatStride只在每一次repeat之间(repeat每次的计算量为mask个element)有效,在单次repeat内部,src0BlockStride有效。

gatherMaskParams

输入

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

struct GatherMaskParams{
    uint8_t src0BlockStride;
    uint16_t repeatTimes;
    uint16_t src0RepeatStride;
    uint8_t src1RepeatStride;

};

相邻迭代间相同block的地址步长参数的详细说明请参考Repeat stride(相邻迭代间相同datablock的地址步长);同一迭代内不同block的地址步长参数请参考Block stride(同一迭代内不同datablock的地址步长)

rsvdCnt

输出

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

表2 模板参数

参数名称

输入/输出

含义

mode

输入

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

返回值

支持的型号

Atlas推理系列产品AI Core

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

Atlas 200I/500 A2推理产品

注意事项

调用示例