mkl实现稀疏矩阵乘一般矩阵
Mkl提供了两种方法实现稀疏矩阵乘一般矩阵:
-
MKL_sparse_s_mm:这个函数实现了稀疏矩阵与一般矩阵乘法,其中稀疏矩阵可以是CSR、CSC或COO格式。该函数的输入参数包括:
- transa:指定稀疏矩阵是否需要转置,如果是,则设置为'M'或'm',否则为'N'或'n';
- alpha:矩阵乘法中的常数因子;
- A:Mkl的稀疏矩阵结构体;
- descr:Mkl的稀疏矩阵描述符;
- B:一般矩阵;
- ldb:B矩阵的列数;
- beta:矩阵乘法中的常数因子;
- C:存储结果的矩阵;
- ldc:C矩阵的列数。
-
MKL_SPARSE_MV:这个函数实现了稀疏矩阵与向量乘法,可以通过将一般矩阵转化为向量来实现稀疏矩阵与一般矩阵乘法。该函数的输入参数包括:
- operation:指定稀疏矩阵是否需要转置,如果是,则设置为SPARSE_OPERATION_TRANSPOSE,否则为SPARSE_OPERATION_NON_TRANSPOSE;
- alpha:矩阵乘法中的常数因子;
- A:Mkl的稀疏矩阵结构体;
- descr:Mkl的稀疏矩阵描述符;
- x:一般矩阵或向量;
- beta:矩阵乘法中的常数因子;
- y:存储结果的向量。
需要注意的是,MKL_sparse_s_mm函数的输入参数中的矩阵B必须为列主序存储,而MKL_SPARSE_MV函数的输入参数中的向量x和y必须为行主序存储。因此,在进行稀疏矩阵与一般矩阵乘法时,需要先将一般矩阵转置,并将转置后的矩阵存储为列主序,然后再调用MKL_sparse_s_mm函数
原文地址: https://www.cveoy.top/t/topic/fIVv 著作权归作者所有。请勿转载和采集!