|
| RsbMatrix (rsb_coo_idx_t nrA, rsb_coo_idx_t ncA, const RsbSym sym=IsGen) |
|
| RsbMatrix (rsb_coo_idx_t nrA, const rsb_coo_idx_t *RP, const rsb_coo_idx_t *JA, const NT *VA, const RsbSym sym=IsGen) |
|
| RsbMatrix (const rsb_coo_idx_t *IA, const rsb_coo_idx_t *JA, const NT *VA, rsb_nnz_idx_t nnzA, const rsb_flags_t flagsA=RSB_FLAG_NOFLAGS) |
|
| RsbMatrix (const rsb_char_t *filename, const RsbSym sym=IsGen) |
|
| RsbMatrix (const RsbMatrix &A_Rsb, bool do_trans=false, rsb_flags_t flagsA=RSB_FLAG_NOFLAGS) |
|
| RsbMatrix (RsbMatrix &&other) |
|
| ~RsbMatrix (void) |
|
RSBP_RVT RSBP_DEPRECATED Err_t | _add (rsb_coo_idx_t i, rsb_coo_idx_t j, NT val) |
|
RSBP_RVT Err_t | close (void) |
|
RSBP_RVT RSBP_DEPRECATED Err_t | _close (void) |
|
RSBP_RVT RSBP_DEPRECATED Err_t | spmv (rsb_trans_t transA, const NT *alphap, const NT *Xp, rsb_coo_idx_t incX, const NT *betap, NT *Yp, rsb_coo_idx_t incY) const |
|
RSBP_RVT Err_t | spmv (rsb_trans_t transA, const NT alpha, const NT *Xp, rsb_coo_idx_t incX, const NT beta, NT *Yp, rsb_coo_idx_t incY) const |
|
RSBP_RVT Err_t | spmv (rsb_trans_t transA, const NT alpha, const NT *Xp, const NT beta, NT *Yp) const |
|
RSBP_RVT Err_t | spmv (NT *y, const NT *x, bool do_trans=false) const |
|
RSBP_RVT RSBP_DEPRECATED Err_t | spmm (rsb_trans_t transA, const NT *alphap, rsb_coo_idx_t nrhs, rsb_flags_t order, const NT *Bp, rsb_nnz_idx_t ldB, const NT *betap, NT *Cp, rsb_nnz_idx_t ldC) const |
|
RSBP_RVT Err_t | spmm (rsb_trans_t transA, const NT alpha, rsb_coo_idx_t nrhs, rsb_flags_t order, const NT *Bp, rsb_nnz_idx_t ldB, const NT beta, NT *Cp, rsb_nnz_idx_t ldC) const |
|
RSBP_RVT Err_t | spmm (rsb_trans_t transA, const NT alpha, rsb_coo_idx_t nrhs, rsb_flags_t order, const NT *Bp, const NT beta, NT *Cp) const |
|
RSBP_RVT RSBP_DEPRECATED Err_t | spsm (rsb_trans_t transT, const NT *alphap, rsb_coo_idx_t nrhs, rsb_flags_t order, const NT *betap, const NT *Bp, rsb_nnz_idx_t ldB, NT *Cp, rsb_nnz_idx_t ldC) const |
|
RSBP_RVT Err_t | spsm (rsb_trans_t transT, const NT alpha, rsb_coo_idx_t nrhs, rsb_flags_t order, const NT beta, const NT *Bp, rsb_nnz_idx_t ldB, NT *Cp, rsb_nnz_idx_t ldC) const |
|
RSBP_RVT Err_t | spsm (rsb_trans_t transT, const NT alpha, rsb_coo_idx_t nrhs, const NT *Bp, NT *Cp) const |
|
RSBP_RVT Err_t | spsm (NT *y, const NT *x, rsb_coo_idx_t nrhs, bool do_trans=false) const |
|
RSBP_RVT Err_t | spsm (NT *y, rsb_coo_idx_t nrhs, bool do_trans=false) const |
|
RSBP_RVT RSBP_DEPRECATED Err_t | spsv (rsb_trans_t transT, const NT *alphap, const NT *Xp, rsb_coo_idx_t incX, NT *Yp, rsb_coo_idx_t incY) const |
|
RSBP_RVT Err_t | spsv (rsb_trans_t transT, const NT alpha, const NT *Xp, NT *Yp) const |
|
RSBP_RVT Err_t | spsv (NT *y, const NT *x, bool do_trans=false) const |
|
RSBP_RVT Err_t | spsv (NT *y, bool do_trans=false) const |
|
size_t | get_info_size_t (enum rsb_mif_t mif) const |
|
rsb_flags_t | get_info_rsb_flags_t (enum rsb_mif_t mif) const |
|
rsb_blk_idx_t | get_info_blk_t (enum rsb_mif_t mif) const |
|
rsb_nnz_idx_t | get_info_nnz_t (enum rsb_mif_t mif) const |
|
rsb_flags_t | get_flags_t (enum rsb_mif_t mif) const |
|
rsb_type_t | get_type_t (enum rsb_mif_t mif) const |
|
rsb_coo_idx_t | get_info_coo_t (enum rsb_mif_t mif) const |
|
size_t | _get_index_storage_bytes (void) const |
|
size_t | _get_storage_bytes (void) const |
|
rsb_nnz_idx_t | nnz (void) const |
|
rsb_blk_idx_t | blocks (void) const |
|
rsb_coo_idx_t | rows (void) const |
|
rsb_coo_idx_t | cols (void) const |
|
RSBP_RVT Err_t | get_vals (NT *VA, const rsb_coo_idx_t *IA, const rsb_coo_idx_t *JA, rsb_nnz_idx_t nnz, rsb_flags_t flags) const |
|
NT | get_val (const rsb_coo_idx_t i, const rsb_coo_idx_t j, rsb_flags_t flags=RSB_FLAG_NOFLAGS) const |
|
RSBP_RVT Err_t | set_val (const NT val, const rsb_coo_idx_t i, const rsb_coo_idx_t j, rsb_flags_t flags=RSB_FLAG_NOFLAGS) |
|
RSBP_RVT Err_t | set_vals (const NT *VA, const rsb_coo_idx_t *IA, const rsb_coo_idx_t *JA, rsb_nnz_idx_t nnz, rsb_flags_t flags) |
|
RSBP_RVT Err_t | get_vec (NT *Dp, enum rsb_extff_t flags) const |
|
RSBP_RVT RSBP_DEPRECATED Err_t | get_coo (rsb_trans_t transA, NT *VA, rsb_coo_idx_t *IA, rsb_coo_idx_t *JA, rsb_flags_t flags) const |
|
RSBP_RVT RSBP_DEPRECATED Err_t | get_csr (rsb_trans_t transA, NT *VA, rsb_coo_idx_t *RP, rsb_coo_idx_t *JA, rsb_flags_t flags) const |
|
RSBP_RVT RSBP_DEPRECATED Err_t | get_rows_sparse (rsb_trans_t transA, const NT *alphap, NT *VA, rsb_coo_idx_t *IA, rsb_coo_idx_t *JA, rsb_coo_idx_t frA, rsb_coo_idx_t lrA, rsb_nnz_idx_t *rnzp, rsb_flags_t flags) const |
|
RSBP_RVT Err_t | upd_vals (enum rsb_elopf_t elop_flags, const NT &omega) |
|
RSBP_RVT Err_t | upd_vals (enum rsb_elopf_t elop_flags, const NT *omegap) |
|
RSBP_RVT Err_t | get_nrm (NT *Np, enum rsb_extff_t flags) const |
|
rsb_type_t | rsbtype (void) const |
|
rsb_flags_t | rsbflags (void) const |
|
rsb_string_t | get_info_str (const char *key) const |
|
RSBP_RVT Err_t | get_info (enum rsb_mif_t miflags, void *minfop) const |
|
rsb_string_t | _info (void) const |
|
RSBP_RVT RSBP_DEPRECATED Err_t | tune_spsm_threads (rsb_real_t *sfp=RSBP_NULL, rsb_int_t *tnp=RSBP_NULL, rsb_int_t maxr=0, rsb_time_t maxt=0, rsb_trans_t transA=RSB_TRANSPOSITION_N, const NT *alphap=RSBP_NULL, rsb_coo_idx_t nrhs=1, rsb_flags_t order=RSB_FLAG_WANT_COLUMN_MAJOR_ORDER, const NT *Bp=RSBP_NULL, rsb_nnz_idx_t ldB=0, const NT *betap=RSBP_NULL, NT *Cp=RSBP_NULL, rsb_nnz_idx_t ldC=0) const |
|
RSBP_RVT RSBP_DEPRECATED Err_t | tune_spmm_threads (rsb_real_t *sfp=RSBP_NULL, rsb_int_t *tnp=RSBP_NULL, rsb_int_t maxr=0, rsb_time_t maxt=0, rsb_trans_t transA=RSB_TRANSPOSITION_N, const NT *alphap=RSBP_NULL, rsb_coo_idx_t nrhs=1, rsb_flags_t order=RSB_FLAG_WANT_COLUMN_MAJOR_ORDER, const NT *Bp=RSBP_NULL, rsb_nnz_idx_t ldB=0, const NT *betap=RSBP_NULL, NT *Cp=RSBP_NULL, rsb_nnz_idx_t ldC=0) const |
|
RSBP_RVT RSBP_DEPRECATED Err_t | tune_spmm (rsb_real_t *sfp, rsb_int_t *tnp, rsb_int_t maxr, rsb_time_t maxt, rsb_trans_t transA, const NT *alphap, rsb_coo_idx_t nrhs, rsb_flags_t order, const NT *Bp, rsb_nnz_idx_t ldB, const NT *betap, NT *Cp, rsb_nnz_idx_t ldC) |
|
RSBP_RVT RSBP_DEPRECATED Err_t | tune_spmm (rsb_real_t *sfp, rsb_int_t *tnp, rsb_int_t maxr, rsb_time_t maxt, rsb_trans_t transA, const NT alpha, rsb_coo_idx_t nrhs, rsb_flags_t order, const NT *Bp, rsb_nnz_idx_t ldB, const NT beta, NT *Cp, rsb_nnz_idx_t ldC) |
|
RSBP_RVT Err_t | tune_spmm (rsb_real_t &sf, rsb_trans_t transA, const NT alpha, rsb_coo_idx_t nrhs, rsb_flags_t order, const NT *Bp, const NT beta, NT *Cp) |
|
RSBP_RVT RSBP_DEPRECATED Err_t | tune_spsm (rsb_real_t *sfp, rsb_int_t *tnp, rsb_int_t maxr, rsb_time_t maxt, rsb_trans_t transA, const NT *alphap, rsb_coo_idx_t nrhs, rsb_flags_t order, const NT *Bp, rsb_nnz_idx_t ldB, const NT *betap, NT *Cp, rsb_nnz_idx_t ldC) |
|
RSBP_RVT Err_t | file_save (const rsb_char_t *filename=RSBP_NULL) const |
|
RsbMatrix & | operator= (const RsbMatrix &A_Rsb) |
|
bool | _is_complex (void) const |
|
bool | operator== (const RsbMatrix &B_Rsb) const |
|
bool | operator!= (const RsbMatrix &B_Rsb) const |
|
NT | normOne (void) const |
|
NT | normInf (void) const |
|
RSBP_RVT Err_t | rndr (const rsb_char_t *filename=RSBP_NULL, rsb_coo_idx_t pmWidth=512, rsb_coo_idx_t pmHeight=512, rsb_marf_t rflags=RSB_MARF_EPS) const |
|
template<RSBP_Scalar_t NT>
class RsbMatrix< NT >
Represent a sparse matrix in RSB format by means of librsb
.
Manage construction, destruction, and std::move of numerical matrices.
Most of the member functions here translate directly to a single function call to librsb
(rsb.h
), and pass the parameters as they are, so the error checking is done by librsb
.
While most of librsb
C
functions use void*
pointers instead of numerical data, RsbMatrix
is templated by a type parameter. This introduces type safety at compile time.
Users of member functions can choose among several overloads. So in additional to the more direct overloads passing e.g. and by reference, here a user can pass them by value.
- Parameters
-
- Note
- Default error propagation is by exception throw for all constructors and most member functions.
Functions declared to return Err_t can be specialized in rsb_err_t so not to throw exceptions, but to return an error code instead.
Exceptions thrown by member functions (not constructors) can be deactivated at build time by defining RSBP_NOTHROW before including <rsb.hpp>
.
-
One may turn on return error value as default at build time by defining RSBP_WANT_REV=1 .
- Warning
- The error model is work in progress and subject to change.
- Todo:
- 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)?