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矩阵必须有足够的空间来存放结果

mkl函数mkl_sparse_d_mm实现两矩阵相乘如何将结果存放在第二个矩阵中?

原文地址: https://www.cveoy.top/t/topic/fIaa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录