load2d
功能说明
Load2D支持如下数据通路的搬运:
GM->A1; GM->B1; GM->A2; GM->B2;
A1->A2; B1->B2。
函数原型
- Load2D接口
template <typename T> __aicore__ inline void LoadData(const LocalTensor<T>& dst, const LocalTensor<T>& src, const LoadData2DParams& loadDataParams) template <typename T> __aicore__ inline void LoadData(const LocalTensor<T>& dst, const GlobalTensor<T>& src, const LoadData2DParams& loadDataParams)
参数说明
表1 模板参数说明
| 参数名称 | 含义 |
|---|---|
| T | 源操作数和目的操作数的数据类型。 - Load2D接口 Atlas 训练系列产品,支持的数据类型为:uint8_t/int8_t/uint16_t/int16_t/half Atlas 推理系列产品AI Core,支持的数据类型为:uint8_t/int8_t/uint16_t/int16_t/half Atlas A2 训练系列产品/Atlas A2 推理系列产品,支持数据类型为:uint8_t/int8_t/uint16_t/int16_t/half/bfloat16_t/uint32_t/int32_t/float Atlas A3 训练系列产品/Atlas A3 推理系列产品,支持数据类型为:uint8_t/int8_t/uint16_t/int16_t/half/bfloat16_t/uint32_t/int32_t/float Atlas 200I/500 A2 推理产品,支持数据类型为:uint8_t/int8_t/uint16_t/int16_t/half/bfloat16_t/uint32_t/int32_t/float |
表2 通用参数说明
| 参数名称 | 输入/输出 | 含义 |
|---|---|---|
| dst | 输出 | 目的操作数,类型为LocalTensor。 数据连续排列顺序由目的操作数所在TPosition决定,具体约束如下: - A2:ZZ格式;对应的分形大小为16 * (32B / sizeof(T))。 - B2:ZN格式;对应的分形大小为 (32B / sizeof(T)) * 16。 - A1/B1:无格式要求,一般情况下为NZ格式。NZ格式下,对应的分形大小为16 * (32B / sizeof(T))。 |
| src | 输入 | 源操作数,类型为LocalTensor或GlobalTensor。 数据类型需要与dst保持一致。 |
| loadDataParams | 输入 | LoadData参数结构体,类型为: - LoadData2DParams,具体参考表3。 上述结构体参数定义请参考 ${INSTALL_DIR}/include/ascendc/basic_api/interface/kernel_struct_mm.h,${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。 |
表3 LoadData2DParams结构体内参数说明
| 参数名称 | 含义 |
|---|---|
| startIndex | 分形矩阵ID,说明搬运起始位置为源操作数中第几个分形(0为源操作数中第1个分形矩阵)。取值范围:startIndex∈[0, 65535] 。单位:512B。默认为0。 |
| repeatTimes | 迭代次数,每个迭代可以处理512B数据。取值范围:repeatTimes∈[1, 255]。 |
| srcStride | 相邻迭代间,源操作数前一个分形与后一个分形起始地址的间隔,单位:512B。取值范围:src_stride∈[0, 65535]。默认为0。 |
| sid | 预留参数,配置为0即可。 |
| dstGap | 相邻迭代间,目的操作数前一个分形结束地址与后一个分形起始地址的间隔,单位:512B。取值范围:dstGap∈[0, 65535]。默认为0。 注:Atlas 训练系列产品此参数不使能。 |
| ifTranspose | 是否启用转置功能,对每个分形矩阵进行转置,默认为false: - true:启用 - false:不启用 注意:只有A1->A2和B1->B2通路才能使能转置,使能转置功能时,源操作数、目的操作数仅支持uint16_t/int16_t/half数据类型。 |
| addrMode | 预留参数,配置为0即可。 |