Memory management of matrices and the library state itself follow the usual C++ RAII rules: the mtx
object is freed first via RsbMatrix's destructor; then librsb
is finalized via RsbLib()'s destructor .
#ifdef RSB_NUMERICAL_TYPE_DOUBLE
#if RSBP_WANT_CPP20
#include <vector>
#include <array>
std::array<rsb_coo_idx_t,7> JA {0,1,2,3,4,5,0};
std::vector<double> VA {1,1,1,1,1,1,2}, X(nrhs*ncA,1);
std::vector<double> Y(nrhs*nrA,0);
const double alpha {2}, beta {1};
mtx.file_save();
}
#else
#include <vector>
const std::vector<rsb_coo_idx_t> IA {0,1,2,3,4,5,1}, JA {0,1,2,3,4,5,0};
const std::vector<double> VA {1,1,1,1,1,1,2}, X(ncA,1);
std::vector<double> Y(nrA,0);
const double alpha {2}, beta {1};
mtx.file_save(nullptr);
mtx.tune_spmm(&sf,&tn,0,0.0,
RSB_TRANSPOSITION_N,alpha,nrhs,
RSB_FLAG_WANT_COLUMN_MAJOR_ORDER,X.data(),ncA,beta,Y.data(),nrA);
}
#endif
#else
#endif
auto main() -> int
Definition: assemble.cpp:38
Class initializing/finalizing librsb state.
Definition: rsb.hpp:272
Represent a sparse matrix in RSB format by means of librsb.
Definition: rsb.hpp:532
signed int rsb_nnz_idx_t
Definition: rsb.h:362
signed int rsb_coo_idx_t
Definition: rsb.h:349
signed int rsb_flags_t
Definition: rsb.h:373
#define RSB_FLAG_WANT_COLUMN_MAJOR_ORDER
Definition: rsb.h:496
double rsb_real_t
Definition: rsb.h:403
signed int rsb_int_t
Definition: rsb.h:392
Classes RsbLib and RsbMatrix provide native C++ access to librsb.
#define RSB_TRANSPOSITION_N
N: Non transposed flag, valid for rsb_trans_t typed variables.
Definition: rsb_types.h:138