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。
函数原型
template <typename T = int8_t, typename U = uint8_t, typename Std::enable_if<Std::is_same<PrimT<T>, int8_t>::value, bool>::type = true, typename Std::enable_if<Std::is_same<PrimT<U>, uint8_t>::value, bool>::type = true>
__aicore__ inline void LoadDataWithSparse(const LocalTensor<T>& dst, const LocalTensor<T>& src, const LocalTensor<U>& idx, const LoadData2dParams& loadDataParam)
参数说明
表 1 模板参数说明
|
表 2 参数说明
目的操作数,类型为LocalTensor,支持的TPosition为B2,LocalTensor的起始地址需要512字节对齐。 |
||
源操作数,类型为LocalTensor,支持的TPosition为B1,LocalTensor的起始地址需要32字节对齐。 |
||
源操作数,类型为LocalTensor,支持的TPosition为B1,LocalTensor的起始地址需要32字节对齐。 |
||
LoadData参数结构体,LoadData2DParams类型,详细说明参考LoadData2DParams结构体内参数说明。 |
约束说明
- 操作数地址对齐要求请参见通用地址对齐约束。
- repeat=0表示不执行。
- 每次迭代中的startIndex不能小于零。
- 不支持转置功能。
返回值说明
无
调用示例
详细用例请参考MmadWithSparse。