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/fIaa 著作权归作者所有。请勿转载和采集!