asc_transto5hd
产品支持情况
功能说明
数据格式转换,一般用于将NCHW格式转换成NC1HWC0格式。特别的,也可以用于二维矩阵数据块的转置。本接口单次Repeat内可处理512Byte的数据(16个DataBlock),根据数据类型不同,支持不同shape的矩阵转置(比如数据类型为half时,单次Repeat可完成16*16大小的矩阵转置),同时还可以支持多次Repeat操作。
单次repeat内转换规则如下:
当输入数据类型位宽为16位时,每个datablock中包含16个数,指令内部会循环16次,每次循环都会分别从指定的16个datablock中的对应位置取值,组成一个新的datablock单元放入目的地址中。如下图所示,图中的srcList[0]-srcList[15]代表源操作数的16个datablock。
当数据类型位宽为32位时,每个datablock包含8个数,指令内部会循环8次,每次循环都会分别从指定的16个datablock中的对应位置取值,组成2个新的datablock放入目的地址中。如下图所示:
-当数据类型位宽为8位时,每个datablock包含32个数,指令内部会循环16次,每次循环都会分别从指定的16个datablock中的对应位置取值,组成半个datablock放入目的地址中,读取和存放是在datablock的高半部还是低半部由参数srcHighHalf和dstHighHalf决定。如下图所示:
基于以上的转换规则,使用该接口进行NC1HWC0格式转换或者矩阵转置。NC1HWC0格式转换相对复杂,这里给出其具体的转换方法:
NCHW格式转换成NC1HWC0格式时,如果是数据类型的位宽为32位或者16位,则C0=16;如果数据类型的位宽为8位,则C0=32。下图以C0=16为例进行介绍:
函数原型
参数说明
返回值说明
无
流水类型
PIPE_TYPE_V
约束说明
- 操作数地址对齐约束请参考。
- 操作数地址重叠约束请参考。
- 进行NCHW格式到NC1HWC0格式的转换时,一般用法是将src/dst中的每个元素配置为每个HW平面的起点。
- 为了性能更优,数据类型位宽为8位时建议先固定dst_high_half/src_high_half,再HW方向Repeat后,再改变dst_high_half/src_high_half。