oneapi::mkl::sparse::optimize_gemv¶
Performs internal optimizations for oneapi::mkl::sparse::gemv by analyzing the matrix structure.
Description¶
Note
Refer to Error Handling for a detailed description of the possible exceptions thrown.
The oneapi::mkl::sparse::optimize_gemv
routine analyzes matrix structure and performs optimizations. Optimized
data is then stored in the matrix handle.
API¶
Syntax¶
Note
Currently, complex types are not supported.
Using USM and SYCL buffers:
namespace oneapi::mkl::sparse {
sycl::event optimize_gemv (
sycl::queue &queue,
oneapi::mkl::transpose transpose_flag,
oneapi::mkl::sparse::matrix_handle_t handle,
const std::vector<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,
op(A)
=A
.oneapi::mkl::transpose::trans
Transpose,
op(A)
=A
T.oneapi::mkl::transpose::conjtrans
Conjugate transpose,
op(A)
=A
H.Note
Currently, the only supported case for operation is
oneapi::mkl::transpose::nontrans
.- handle
Handle to object containing sparse matrix and other internal data. Created using one of the
oneapi::mkl::sparse::set_<sparse_matrix_type>_data
routines.Note
Currently, the only supported matrix format for
<sparse_matrix_type>
is the csr format.- dependencies
A vector of type
std::vector<sycl::event> &
containing the list of events that theoneapi::mkl::sparse::optimize_gemv
routine depends on.
Return Values¶
sycl::event
SYCL event which can be waited upon or added as a dependency for the completion of the
optimize_gemv
routine.sycl::event ev_opt = sparse::optimize_gemv(queue, trans_val, handle); // Allowed use in case of USM sycl::event ev_opt = sparse::optimize_gemv(queue, trans_val, handle, {}); // Allowed use in case of USM sycl::event ev_opt = sparse::optimize_gemv(queue, trans_val, handle, dependencies); // Allowed use in case of USM sparse::optimize_gemv(queue, trans_val, handle); // OK -- Recommended use in case of sycl::buffer static_cast<void>(sparse::optimize_gemv(queue, trans_val, handle)); // OK -- Recommended use in case of sycl::buffer - explicitly say we aren't using the event sparse::optimize_gemv(queue, trans_val, handle, {}); // Not recommended in case of sycl::buffer, but supported; sparse::optimize_gemv(queue, trans_val, handle, dependencies); // Not recommended in case of sycl::buffer, but supported; sycl::event ev_opt = sparse::optimize_gemv(queue, trans_val, handle); // Allowed use in case of sycl::buffer, but most sycl::buffer oneMKL APIs do not have ability to pass in dependencies