目录

Transpose

功能说明

函数原型

参数说明

表1 模板参数说明

参数名 描述
T

操作数的数据类型。

普通转置接口:

Kirin9020系列处理器、Kirin9030系列处理器、KirinX90系列处理器,支持的数据类型为:half、int16_t、uint16_t

增强转置接口:

参考表4。

表2 接口参数说明

参数名称 输入/输出 含义
dstLocal 输出

目的操作数。

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

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

srcLocal 输入

源操作数。

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

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

数据类型需要与dstLocal保持一致。

sharedTmpBuffer 输入 共享的临时Buffer Tensor,sharedTmpBuffer的大小参考表5。
transposeParams 输入 控制Transpose的数据结构。结构体内包含:输入的shape信息和transposeType参数。该数据结构的定义请参考表3。

表3 transposeParams结构体内参数说明

参数名称 含义
nSize n轴长度,取值范围:m∈[0, 65535]。默认值为0。
cSize c轴长度,取值范围:m∈[0, 65535]。默认值为0。
hSize h轴长度,取值范围:m∈[0, 65535]。默认值为0。
wSize w轴长度,取值范围:m∈[0, 65535]。默认值为0。
transposeType

数据排布及reshape的类型,类型为TransposeType枚举类。具体取值为:TRANSPOSE_TYPE_NONE、TRANSPOSE_ND2ND_B16、TRANSPOSE_NCHW2NHWC、TRANSPOSE_NHWC2NCHW;

当前预留参数,暂不支持:TRANSPOSE_NZ2ND_0213、TRANSPOSE_NZ2NZ_0213、TRANSPOSE_NZ2NZ_012_WITH_N、TRANSPOSE_NZ2ND_012_WITH_N、TRANSPOSE_NZ2ND_012_WITHOUT_N、TRANSPOSE_NZ2NZ_012_WITHOUT_N、TRANSPOSE_ND2ND_ONLY、TRANSPOSE_ND_UB_GM、TRANSPOSE_GRAD_ND_UB_GM。

说明: 当transposeType为TRANSPOSE_ND2ND_B16时,hSize和wSize必须传入16,nSize和cSize传入无效。

表4 增强转置接口支持的数据类型

transposeType 支持的数据类型
TRANSPOSE_ND2ND_B16 无
TRANSPOSE_NCHW2NHWC

Kirin X90系列处理器,操作数支持的数据类型为:int8_t、uint8_t、int16_t、uint16_t、half、int32_t、uint32_t、float。

Kirin 9020系列处理器,操作数支持的数据类型为:int8_t、uint8_t、int16_t、uint16_t、half、int32_t、uint32_t、float。

TRANSPOSE_NHWC2NCHW

Kirin X90系列处理器,操作数支持的数据类型为:int8_t、uint8_t、int16_t、uint16_t、half、int32_t、uint32_t、float。

Kirin 9020系列处理器,操作数支持的数据类型为:int8_t、uint8_t、int16_t、uint16_t、half、int32_t、uint32_t、float。

表5 增强转置接口sharedTmpBuffer所需的大小

transposeType sharedTmpBuffer所需的大小
TRANSPOSE_ND2ND_B16 不需要临时Buffer。
TRANSPOSE_NCHW2NHWC

临时Buffer的大小按照下述计算规则(伪代码)进行计算。

auto h0 = 16; // 当数据类型的位宽为8时,h0 = 32;其他情况下,h0 = 16

auto w0 = 32 / sizeof(type); // type代表数据类型

auto tmpBufferSize = (cSize + 2) * h0 * w0 * sizeof(type);

TRANSPOSE_NHWC2NCHW

临时Buffer的大小按照下述计算规则(伪代码)进行计算。

auto h0 = 16; // 当数据类型的位宽为8时,h0 = 32;其他情况下,h0 = 16

auto w0 = 32 / sizeof(type); // type代表数据类型

auto tmpBufferSize = (cSize * 2 + 1) * h0 * w0 * sizeof(type);

支持的型号

Kirin9020系列处理器

Kirin9030系列处理器

KirinX90系列处理器

注意事项

返回值

无

调用示例