LoadDataWithSparse
功能说明
用于搬运存放在B1里的512B的稠密权重矩阵到B2里,同时读取128B的索引矩阵用于稠密矩阵的稀疏化。索引矩阵的数据类型为int2,需要拼成int8的数据类型,再传入接口。
索引矩阵在一个int8的地址中的排布是逆序排布的,例如:索引矩阵1 2 0 1 0 2 1 0,在地址中的排布为1 0 2 1 0 1 2 0,其中1 0 2 1(对应索引矩阵前四位1 2 0 1)为一个int8,0 1 2 0(对应索引矩阵后四位0 2 1 0)为一个int8。
索引矩阵的功能说明参考MmadWithSparse。
函数原型
1 2 | template <typename T = int8_t, typename U = uint8_t, typename std::enable_if<IsSameType<PrimT<T>, int8_t>::value, bool>::type = true, typename std::enable_if<IsSameType<PrimT<U>, uint8_t>::value, bool>::type = true> __aicore__ inline void LoadDataWithSparse(const LocalTensor<T> &dstLocal, const LocalTensor<T> &srcLocal, const LocalTensor<U> &idxLocal, const LoadData2dParams &loadDataParam) |
参数说明
参数名 |
描述 |
---|---|
T |
dstLocal、srcLocal的数据类型。 |
U |
idxLocal的数据类型。
最后两个模板参数仅用于上述数据类型检查,用户无需关注。 |
参数名称 |
输入/输出 |
含义 |
---|---|---|
dstLocal |
输出 |
目的操作数,类型为LocalTensor,支持的TPosition为B2,LocalTensor的起始地址需要512字节对齐。 支持的数据类型为int8_t。 数据连续排列顺序要求为小N大Z格式。 |
srcLocal |
输入 |
源操作数,类型为LocalTensor,支持的TPosition为B1,LocalTensor的起始地址需要32字节对齐。 支持的数据类型为int8_t。 |
idxLocal |
输入 |
源操作数,类型为LocalTensor,支持的TPosition为B1,LocalTensor的起始地址需要32字节对齐。 支持的数据类型为int8_t。 |
loadDataParams |
输入 |
LoadData参数结构体,LoadData2DParams类型,详细说明参考LoadData2DParams结构体内参数说明。 |
支持的型号
Atlas A2训练系列产品/Atlas 800I A2推理产品
注意事项
- 操作数地址偏移对齐要求请参见通用约束。
- repeat=0表示不执行。
- 每次迭代中的startIndex不能小于零。
- 不支持转置功能。
返回值
无
调用示例
详细用例请参考MmadWithSparse。