Load2DMX
产品支持情况
功能说明
Load2D支持如下数据通路的搬运:
GM->A1; GM->B1; GM->A2; GM->B2;
A1->A2; B1->B2。
函数原型
-
Load2DMX接口
template <typename T, typename U = T> __aicore__ inline void LoadData(const LocalTensor<U>& dst, const LocalTensor<T>& src, const LocalTensor<fp8_e8m0_t>& srcMx, const LoadData2DParamsV2& loadDataParams, const LoadData2DMxParams& loadMxDataParams) -
Load2Dv2MX接口,支持源操作数和目的操作数数据类型不一致
template <typename T, typename U> __aicore__ inline void LoadData(const LocalTensor<U>& dst, const LocalTensor<T>& src0, const LocalTensor<fp8_e8m0_t>& srcMx, const LoadData2DParamsV2& loadDataParams, const LoadData2DMxParams& loadMxDataParams)
参数说明
表 1 模板参数说明
|
表 2 通用参数说明
|
数据连续排列顺序由目的操作数所在TPosition决定,具体约束如下:
|
||
上述结构体参数定义请参考${INSTALL_DIR}/include/ascendc/basic_api/interface/kernel_struct_mm.h,${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。 |
表 3 LoadData2DMxParams结构体参数说明
源矩阵X轴方向搬运长度,即M维度方向,单位为1个分形(1个单位代表一个32B的分形)。取值范围:xStep∈[0, 255]。 |
|
下面通过一个具体的示例来解释LoadData2DMX结构体参数。假设A矩阵shape为(M,K),则ScaleA矩阵shape为(M,K/32),ScaleA数据类型为fp8_e8m0_t,ScaleA矩阵分形排布见图1。
下图为ScaleA从L1搬运至L0A过程中的配置参数示意。每一行为32Byte,对应着图1中的一个分形。xStep为M维度分形的个数,如图中的xStep = M / 16 = 3,yStep为K维度32Byte的个数,如图中的yStep = K / 32 / 2 = 21,srcStride和dstStride同理,表示在K维度上32Byte的个数。

约束说明
- 操作数地址对齐要求请参见通用地址对齐约束。
返回值说明
无
