TransDataTo5HD

功能说明

数据格式转换,一般用于将NCHW格式转换成NC1HWC0格式。特别的,也可以用于二维矩阵数据块的转置。完成转置功能时,相比于Transpose接口,Transpose仅支持16*16大小的矩阵转置;本接口单次repeat内可处理512Byte的数据(16个datablock),根据数据类型不同,支持不同shape的矩阵转置(比如数据类型为half时,单次repeat可完成16*16大小的矩阵转置),同还可以支持多次repeat操作。

单次repeat内转换规则如下:

基于以上的转换规则,使用该接口进行NC1HWC0格式转换或者矩阵转置。NC1HWC0格式转换相对复杂,这里给出其具体的转换方法:

NCHW格式转换成NC1HWC0格式时,如果是数据类型是float/int32_t/uint32_t/int16_t/unint16_t/half, 则C0=16;如果数据类型是uint8_t/int8_t,则C0=32。下图以C0=16为例进行介绍:

函数原型

参数说明

表1 模板参数说明

参数名

描述

T

操作数数据类型。

Atlas 训练系列产品,支持的数据类型为:int8_t/uint8_t/int16_t/uint16_t/half

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

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

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

表2 参数列表

参数名称

输入/输出

含义

dstLocalList/dstList

输出

目的操作数地址序列。

类型为LocalTensor或者LocalTensor的地址值,LocalTensor支持的TPosition为VECIN/VECCALC/VECOUT。LocalTensor的起始地址需要32B对齐。支持的数据类型参考模板参数T说明。

srcLocalList/srcList

输入

源操作数地址序列。

类型为LocalTensor或者LocalTensor的地址值,LocalTensor支持的TPosition为VECIN/VECCALC/VECOUT。LocalTensor的起始地址需要32B对齐。支持的数据类型参考模板参数T说明。

数据类型需要与dstLocalList/dstList保持一致。

dstLocal

输出

目的操作数。

类型为LocalTensor,连续存储对应LocalTensor的地址值。LocalTensor支持的TPosition为VECIN/VECCALC/VECOUT。LocalTensor的起始地址需要32B对齐。

srcLocal

输入

源操作数。

类型为LocalTensor,连续存储对应LocalTensor的地址值。LocalTensor支持的TPosition为VECIN/VECCALC/VECOUT。LocalTensor的起始地址需要32B对齐。

nchwconvParams

输入

控制TransdataTo5HD的数据结构。结构体内包含:读取和写入位置的控制参数,迭代次数,相邻迭代间的地址步长等参数。该数据结构的定义请参考表3

表3 TransDataTo5HDParams结构体内参数说明

参数名称

类型

说明

dstHighHalf

输入

指定每个dstLocalList地址中的数据存储到datablock的高半部还是低半部,该配置只支持int8_t/uint8_t的数据类型。

支持的数据类型为bool,有以下两种取值:
  • True:表示存储于datablock的高半部
  • False:表示存储于datablock的低半部

srcHighHalf

输入

指定每个srcLocalList地址中的数据从datablock的高半部还是低半部读取,该配置只支持int8_t/uint8_t的数据类型。

支持的数据类型为bool,有以下两种取值:
  • True:表示从datablock的高半部读取
  • False:表示从datablock的低半部读取

repeatTimes

输入

重复迭代次数,repeatTimes∈[0,255]。

关于该参数的具体描述请参考通用参数说明

注意事项:
  • 当 repeatTimes为1时,目的操作数/源操作数的有效起始位置为dstLocalList/srcLocalList序列输入的起始位置加上dstRepStride/srcRepStride;repeatTimes为1,如果要让目的操作数/源操作数的有效起始位置为dstLocalList/srcLocalList序列输入的起始位置,需要将dstRepStride/srcRepStride置为0。
  • 当 repeatTimes大于1时,第一次repeat中目的操作数/源操作数的有效起始位置为dstLocalList/srcLocalList序列输入的起始位置,第二次需要加上dstRepStride/srcRepStride。以此类推。

dstRepStride

输入

相邻迭代间,目的操作数相同datablock地址stride,单位:datablock。

相邻迭代间相同datablock的地址步长参数的详细说明请参考repeatStride(相邻迭代间相同datablock的地址步长)

srcRepStride

输入

相邻迭代间,源操作数相同datablock地址stride,单位:datablock。

相邻迭代间相同datablock的地址步长参数的详细说明请参考repeatStride(相邻迭代间相同datablock的地址步长)

支持的型号

Atlas 训练系列产品

Atlas推理系列产品AI Core

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

Atlas 200I/500 A2推理产品

注意事项

返回值

调用示例