该接口实现带转置的2D格式数据从L1 Buffer到L0B Buffer的加载。
下面通过示例来讲解接口功能和关键参数:下文图中一个N形或者一个Z形代表一个分形。
- 对于uint8_t/int8_t数据类型,每次迭代处理32 × 32 × 1B数据,可处理2个分形(一个分形512B),每次迭代中,源操作数中2个连续的16 × 32分形将被合并为1个32 × 32的方块矩阵,基于方块矩阵做转置,转置后分裂为2个16 × 32分形,根据目的操作数分形间隔等参数可以有不同的排布。
如下图示例:
- 共处理3072B的数据,每次迭代处理32 × 32 × 1B数据,需要3次迭代可以完成,repeat_time = 3;
- src_stride = 1,表示相邻迭代间,源操作数前一个方块矩阵与后一个方块矩阵起始地址的间隔为1(单位:32 × 32 × 1B),这里的单位实际上是拼接后的方块矩阵的大小;
- dst_gap = 1,表示相邻迭代间,目的操作数前一个迭代第一个分形的结束地址到下一个迭代第一个分形起始地址的间隔为1(单位:512B);
- dst_frac_gap = 0,表示每个迭代内目的操作数前一个分形的结束地址与后一个分形起始地址的间隔为0(单位:512B)。
如下图示例:
repeat_time和src_stride的解释和上图示例一致。
dst_gap = 0,表示相邻迭代间,目的操作数前一个迭代第一个分形的结束地址和下一个迭代第一个分形起始地址无间隔。
dst_frac_gap = 2,表示每个迭代内目的操作数前一个分形的结束地址与后一个分形起始地址的间隔为2(单位:512B)。
对于half/bfloat16_t数据类型,每次迭代处理16 × 16 × 2B数据,可处理1个分形(一个分形512B),每次迭代中,源操作数中1个16 × 16分形将被转置。
- 因为每次迭代处理16 × 16 × 2B数据,需要3次迭代可以完成,repeat_time = 3;
- src_stride = 1,表示相邻迭代间,源操作数前一个方块矩阵与后一个方块矩阵起始地址的间隔为1 (单位:16 × 16 × 2B);
- dst_gap = 0,表示相邻迭代间,目的操作数前一个迭代第一个分形的结束地址到下一个迭代第一个分形起始地址无间隔;
- 该场景下,因为其分形即为方块矩阵,每个迭代处理一个分形,不存在迭代内分形的间隔,该参数设置无效。
对于float/int32_t/uint32_t数据类型,每次迭代处理16 × 16 × 4B数据,可处理2个分形(一个分形512B),每次迭代中,源操作数2个连续的16 × 8分形将被合并为1个16 × 16的方块矩阵,基于方块矩阵做转置,转置后分裂为2个16 × 8分形,根据目的操作数分形间隔等参数可以有不同的排布。 如下图示例:
- 因为每次迭代处理16 × 16 × 4B数据,需要3次迭代可以完成,repeat_time = 3;
- src_stride = 1,表示相邻迭代间,源操作数前一个方块矩阵与后一个方块矩阵起始地址的间隔为1(单位:16 × 16 × 4B),这里的单位实际上是拼接后的方块矩阵的大小;
- dst_gap = 1,表示相邻迭代间,目的操作数前一个迭代第一个分形的结束地址到下一个迭代第一个分形起始地址的间隔为1(单位:512B);
- dst_frac_gap = 0,表示每个迭代内目的操作数前一个分形结束地址与后一个分形起始地址的间隔为0(单位:512B)。
如下图示例:
- repeat_time和src_stride的解释和上图示例一致。
- dst_gap = 0,表示相邻迭代间,目的操作数前一个迭代第一个分形的结束地址和下一个迭代第一个分形起始地址无间隔。
- dst_frac_gap = 2,表示每个迭代内目的操作数前一个分形结束地址与后一个分形起始地址的间隔为2(单位:512B)。
- 高维切分搬运
[object Object]
- 同步高维切分搬运
[object Object]
无
PIPE_MTE1
- repeat=0表示不执行搬运操作。
- 开发者需要保证目的操作数转置后的分形没有重叠。
[object Object]