Todo List

Global blas_sparse::cuscr_begin (m, n, a, istat)
  Shall make `A` `intent(inout)` as well.
Global blas_sparse::cuscr_block_begin (mb, nb, k, l, a, istat)
  Shall make `A` `intent(inout)` as well.
Global blas_sparse::cuscr_variable_block_begin (mb, nb, k, l, a, istat)
  Shall make `A` `intent(inout)` as well.
Global blas_sparse::duscr_begin (m, n, a, istat)
  Shall make `A` `intent(inout)` as well.
Global blas_sparse::duscr_block_begin (mb, nb, k, l, a, istat)
  Shall make `A` `intent(inout)` as well.
Global blas_sparse::duscr_variable_block_begin (mb, nb, k, l, a, istat)
  Shall make `A` `intent(inout)` as well.
Global blas_sparse::suscr_begin (m, n, a, istat)
  Shall make `A` `intent(inout)` as well.
Global blas_sparse::suscr_block_begin (mb, nb, k, l, a, istat)
  Shall make `A` `intent(inout)` as well.
Global blas_sparse::suscr_variable_block_begin (mb, nb, k, l, a, istat)
  Shall make `A` `intent(inout)` as well.
Global blas_sparse::zuscr_begin (m, n, a, istat)
  Shall make `A` `intent(inout)` as well.
Global blas_sparse::zuscr_block_begin (mb, nb, k, l, a, istat)
  Shall make `A` `intent(inout)` as well.
Global blas_sparse::zuscr_variable_block_begin (mb, nb, k, l, a, istat)
  Shall make `A` `intent(inout)` as well.
Global mtxAp_
  While the `rsb.h` interface is stable, the `rsb.hpp` interface is neither stable, nor complete: early users' feedback is very welcome.
  Shall all and be passed by values only? This is natural and fits C++. But rsb_tune_spmm() / rsb_tune_spsm() have more parameters with a nullptr-like `default' value: how to deal with them in RsbMatrix::tune_spmm() / RsbMatrix::tune_spsm() without introducing too many special cases ?
  Similarly for the consistency of RsbMatrix::get_flags_t(), RsbMatrix::get_type_t(), RsbMatrix::get_info_coo_t(), and similar: shall they throw an exception if given a flag not matching the return type ?
  Or maybe keeping only RsbMatrix::get_info(), with per-type reference overloads ?
  Furthermore: if working under C++20, shall \rsblib avoid pointer-based interfaces completely (using `std::span` only)? */ template<RSBP_Scalar_t NT> class RsbMatrix { private:
Global rsb_tune_spmm (struct rsb_mtx_t **mtxOpp, rsb_real_t *sfp, rsb_int_t *tnp, rsb_int_t maxr, rsb_time_t maxt, rsb_trans_t transA, const void *alphap, const struct rsb_mtx_t *mtxAp, rsb_coo_idx_t nrhs, rsb_flags_t order, const void *Bp, rsb_nnz_idx_t ldB, const void *betap, void *Cp, rsb_nnz_idx_t ldC)
  Autotuning functionality is still object of much research. Need support for lightweight, threads-only optimization.
Global rsb_tune_spsm (struct rsb_mtx_t **mtxOpp, rsb_real_t *sfp, rsb_int_t *tnp, rsb_int_t maxr, rsb_time_t maxt, rsb_trans_t transA, const void *alphap, const struct rsb_mtx_t *mtxAp, rsb_coo_idx_t nrhs, rsb_flags_t order, const void *Bp, rsb_nnz_idx_t ldB, const void *betap, void *Cp, rsb_nnz_idx_t ldC)
  Autotuning functionality is still object of much research. Need support for lightweight, threads-only optimization.