oneapi::mkl::sparse::gemm¶
Computes a sparse matrix-dense matrix product. Currently, only row-major
layout for dense matrix storage in Data Parallel C++
oneapi::mkl::sparse::gemm
functionality is supported.
Description¶
Note
Refer to Supported Types for a list of supported <fp>
and <intType>
and refer
to Exceptions for a detailed description of the exceptions thrown.
The oneapi::mkl::sparse::gemm
routine computes a sparse matrix-dense matrix product defined as
where: and
are scalars,
is a sparse matrix of size
num_rows
rows by num_cols
columns, is a matrix modifier:
The dense matrix objects B
and C
are stored with row-major layout and have have appropriately sized number of rows for the matrix product and columns
number of columns.
API¶
Syntax¶
Note
Currently, complex types are not supported.
Using SYCL buffers:
namespace oneapi::mkl::sparse {
void gemm (
cl::sycl::queue &queue,
oneapi::mkl::transpose transpose_flag,
const fp alpha,
oneapi::mkl::sparse::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:
namespace oneapi::mkl::sparse {
cl::sycl::event gemm (
cl::sycl::queue &queue,
oneapi::mkl::transpose transpose_flag,
const fp alpha,
oneapi::mkl::sparse::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 = {})
}
Include Files¶
oneapi/mkl/spblas.hpp
Input Parameters¶
- queue
Specifies the SYCL command queue which will be used for SYCL kernels execution.
- transpose_flag
Specifies operation
op()
on input matrix.oneapi::mkl::transpose::nontrans
Non-transpose,
.
oneapi::mkl::transpose::trans
Transpose,
.
oneapi::mkl::transpose::conjtrans
Conjugate transpose,
.
Note
Currently, the only supported case for operation is
oneapi::mkl::transpose::nontrans
.- alpha
Specifies the scalar,
.
- handle
Handle to object containing sparse matrix and other internal data. Created using one of the
oneapi::mkl::sparse::set_<sparse_matrix_type>_structure
routines.Note
Currently, the only supported case for <sparse_matrix_type> is csr.
- b
SYCL buffer or device-accessible USM pointer of size at least
rows*ldb
, whererows
= the number of columns of matrixA
ifop
=oneapi::mkl::transpose::nontrans
, orrows
= the number of rows of matrixA
otherwise.- columns
Number of columns of matrix
C
.- ldb
Specifies the leading dimension of matrix
B
. Must be at leastcolumns
, and it must be positive.- beta
Specifies the scalar,
.
- c
SYCL buffer or device-accessible USM pointer of size at least
rows*ldc
, whererows
= the number of columns of matrixA
ifop
=oneapi::mkl::transpose::nontrans
, orrows
= the number of columns of matrixA
otherwise.- ldc
Specifies the leading dimension of matrix
C
. Must be at leastcolumns
, and it must be positive.- dependencies
A vector of type
cl::sycl::vector_class<cl::sycl::event>
containing the list of events that theoneapi::mkl::sparse::gemm
routine depends on.
Output Parameters¶
- c
Overwritten by the updated matrix
C
.
Return Values (USM Only)¶
- cl::sycl::event
SYCL event which can be waited upon or added as a dependency for the completion of the
gemm
routine.