Computes a sparse matrix-dense matrix product. Currently, only ROW-MAJOR layout for dense matrix storage in Data Parallel C++ mkl::sparse::gemm functionality is supported.
Currently, complex types are not supported.
Using SYCL buffers:
void mkl::sparse::gemm (cl::sycl::queue & queue, mkl::transpose transpose_val, const fp alpha, matrix_handle_t handle, cl::sycl::buffer<fp, 1> & b, const std::int64_t columns, const std::int64_t ldb, const fp beta, cl::sycl::buffer<fp, 1> & c, const std::int64_t ldc);
Using USM pointers:
cl::sycl::event mkl::sparse::gemm (cl::sycl::queue & queue, mkl::transpose transpose_val, const fp alpha, matrix_handle_t handle, const fp *b, const std::int64_t columns, const std::int64_t ldb, const fp beta, fp *c, const std::int64_t ldc , const cl::sycl::vector_class<cl::sycl::event> &dependencies = {});
The mkl::sparse::gemm routine computes a sparse matrix-dense matrix defined as
C := alpha*op(A)*B + beta*C
where:
alpha and beta are scalars, B and C are dense matrices.
Specifies the SYCL command queue which will be used for SYCL kernels execution.
Specifies operation op() on input matrix.
mkl::transpose::nontrans | Non-transpose, op(A) = A. |
mkl::transpose::trans | Transpose, op(A) = AT. |
mkl::transpose::conjtrans | Conjugate transpose, op(A) = AH. |
Currently, the only supported case for operation is mkl::transpose::nontrans.
Specifies the scalar alpha.
Handle to object containing sparse matrix and other internal data. Created using one of the mkl::sparse::set_<sparse_matrix_type>_structure routines.
Currently, the only supported case for <sparse_matrix_type> is csr.
SYCL or USM memory object containing an array of size at least rows*ldb, where rows = the number of columns of matrix A if op = mkl::transpose::nontrans, or rows = the number of rows of matrix A otherwise.
Number of columns of matrix C.
Specifies the leading dimension of matrix B. Must be at least columns, and it must be positive.
Specifies the scalar beta.
SYCL or USM memory object containing an array of size at least rows*ldc, where rows = the number of columns of matrix A if op = mkl::transpose::nontrans, or rows = the number of columns of matrix A otherwise.
Specifies the leading dimension of matrix C. Must be at least columns, and it must be positive.
A vector of type cl::sycl::vector_class<cl::sycl::event> containing the list of events that the mkl::sparse::gemm routine depends on.
Overwritten by the updated matrix C.
SYCL event which can be waited upon or added as a dependency for the completion of the gemm routine.
An example of how to use mkl::sparse::gemm with SYCL buffers or USM can be found in the Intel® oneMKL installation directory, under:
examples/sycl/spblas/sparse_gemm.cpp
examples/sycl/spblas/sparse_gemm_usm.cpp