#include <complex>
#include <array>
#include <vector>
#include <iomanip>
#include <iostream>
#include <string>
#include <omp.h>
template <typename nt_t>
void bench(
const std::string filename) {
const rsb_trans_t transA = RSB_TRANSPOSITION_N;
std::vector<nt_t> VA(mtx.nnz());
std::vector<rsb_coo_idx_t> IA(mtx.nnz());
std::vector<rsb_coo_idx_t> JA(mtx.nnz());
rsb_time_t dt;
dt = -rsb_time();
dt += rsb_time();
std::cout << "copy-" << nt << " took " << dt << std::endl;
mtx.
get_coo(transA,VA.data(),IA.data(),JA.data(),RSB_FLAG_NOFLAGS);
dt += rsb_time();
std::cout << "get_coo-" << nt << " took " << dt << std::endl;
dt = -rsb_time();
rsb_coo_sort(VA.data(), JA.data(), IA.data(), VA.size(), mtx.cols(), mtx.rows(), mtx.rsbtype(), RSB_FLAG_NOFLAGS);
dt += rsb_time();
std::cout << "rsb_coo_sort-T-" << nt << " took " << dt << std::endl;
dt = -rsb_time();
rsb_coo_sort(VA.data(), IA.data(), JA.data(), VA.size(), mtx.rows(), mtx.cols(), mtx.rsbtype(), RSB_FLAG_NOFLAGS);
dt += rsb_time();
std::cout << "rsb_coo_sort-N-" << nt << " took " << dt << std::endl;
}
auto main(
const int argc,
char * argv[]) ->
int {
const std::string filename{ argc > 1 ? argv[1] : "../A.mtx"};
#ifdef RSB_NUMERICAL_TYPE_FLOAT
bench<float>(filename);
#endif
#ifdef RSB_NUMERICAL_TYPE_DOUBLE
bench<double>(filename);
#endif
#ifdef RSB_NUMERICAL_TYPE_FLOAT_COMPLEX
bench<std::complex<float>>(filename);
#endif
#ifdef RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX
bench<std::complex<double>>(filename);
#endif
}