librsb  1.3
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 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.
Class RsbMatrix< NT >
While the rsb.h interface is stable, the rsb.hpp interface is neither stable, nor complete: early users' feedback is very welcome.
Shall all $ \alpha $ and $ \beta $ 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)?