使用 MKL 函数 mkl_sparse_d_mm 实现稀疏矩阵乘法并存储结果到第二个矩阵
mkl_sparse_d_mm 函数的原型为:
sparse_status_t mkl_sparse_d_mm(sparse_operation_t operation, double alpha, const sparse_matrix_t A,
const struct matrix_descr descr, sparse_layout_t layout, const double *x,
MKL_INT columns, MKL_INT ldx, double beta, double *y, MKL_INT ldy);
其中,y 参数是输出参数,表示结果矩阵。beta 参数表示结果矩阵的初始值。如果将 beta 设置为 0,则结果矩阵会被清空。如果将 beta 设置为 1,则结果矩阵会被保留,并将新的结果与原有结果相加。
如果要将结果存放在第二个矩阵中,可以将 beta 设置为 0,然后将第二个矩阵 y 作为输出参数传入函数即可。例如:
double *y = /* 第二个矩阵 */;
mkl_sparse_d_mm(SPARSE_OPERATION_NON_TRANSPOSE, 1.0, A, descr, SPARSE_LAYOUT_ROW_MAJOR,
x, n, n, 0.0, y, n);
这样,函数会将结果存放在 y 矩阵中。注意,y 矩阵必须有足够的空间来存放结果。
原文地址: https://www.cveoy.top/t/topic/onNO 著作权归作者所有。请勿转载和采集!