namespace oneapi::mkl::sparse {
struct spsm_descr;
using spsm_descr_t = spsm_descr*;
void init_spsm_descr (sycl::queue &queue,
oneapi::mkl::sparse::spsm_descr_t *p_spsm_descr);
sycl::event release_spsm_descr (sycl::queue &queue,
oneapi::mkl::sparse::spsm_descr_t spsm_descr,
const std::vector<sycl::event> &dependencies = {});
enum class spsm_alg {
default_alg,
no_optimize_alg,
};
void spsm_buffer_size(
sycl::queue &queue,
oneapi::mkl::transpose opA,
oneapi::mkl::transpose opX,
const void* alpha,
oneapi::mkl::sparse::matrix_view A_view,
oneapi::mkl::sparse::matrix_handle_t A_handle,
oneapi::mkl::sparse::dense_matrix_handle_t X_handle,
oneapi::mkl::sparse::dense_matrix_handle_t Y_handle,
oneapi::mkl::sparse::spsm_alg alg,
oneapi::mkl::sparse::spsm_descr_t spsm_descr,
std::size_t &temp_buffer_size);
void spsm_optimize(
sycl::queue &queue,
oneapi::mkl::transpose opA,
oneapi::mkl::transpose opX,
const void* alpha,
oneapi::mkl::sparse::matrix_view A_view,
oneapi::mkl::sparse::matrix_handle_t A_handle,
oneapi::mkl::sparse::dense_matrix_handle_t X_handle,
oneapi::mkl::sparse::dense_matrix_handle_t Y_handle,
oneapi::mkl::sparse::spsm_alg alg,
oneapi::mkl::sparse::spsm_descr_t spsm_descr,
sycl::buffer<std::uint8_t, 1> workspace);
sycl::event spsm_optimize(
sycl::queue &queue,
oneapi::mkl::transpose opA,
oneapi::mkl::transpose opX,
const void* alpha,
oneapi::mkl::sparse::matrix_view A_view,
oneapi::mkl::sparse::matrix_handle_t A_handle,
oneapi::mkl::sparse::dense_matrix_handle_t X_handle,
oneapi::mkl::sparse::dense_matrix_handle_t Y_handle,
oneapi::mkl::sparse::spsm_alg alg,
oneapi::mkl::sparse::spsm_descr_t spsm_descr,
void* workspace,
const std::vector<sycl::event> &dependencies = {});
sycl::event spsm(
sycl::queue &queue,
oneapi::mkl::transpose opA,
oneapi::mkl::transpose opX,
const void* alpha,
oneapi::mkl::sparse::matrix_view A_view,
oneapi::mkl::sparse::matrix_handle_t A_handle,
oneapi::mkl::sparse::dense_matrix_handle_t X_handle,
oneapi::mkl::sparse::dense_matrix_handle_t Y_handle,
oneapi::mkl::sparse::spsm_alg alg,
oneapi::mkl::sparse::spsm_descr_t spsm_descr,
const std::vector<sycl::event> &dependencies = {});
}
This is a request tracker to add an API for sparse triangular solve with a dense matrix right-hand-side to the sparse BLAS domain in the oneMKL Specification.