14 void SSEspmv(
const double * __restrict V,
const uint64_t * __restrict M,
const unsigned * __restrict bot,
const unsigned nrb,
const double * __restrict X,
double * Y,
unsigned lcmask,
unsigned lrmask,
unsigned clbits);
16 void SSEspmv(
const double * __restrict V,
const unsigned short * __restrict M,
const unsigned * __restrict bot,
const unsigned nrb,
const double * __restrict X,
double * Y,
unsigned lcmask,
unsigned lrmask,
unsigned clbits);
18 void SSEspmv(
const double * __restrict V,
const unsigned char * __restrict M,
const unsigned * __restrict bot,
const unsigned nrb,
const double * __restrict X,
double * Y,
unsigned lcmask,
unsigned lrmask,
unsigned clbits);
20 template <
class NT,
class IT,
unsigned TTDIM>
24 BmCsb ():nz(0), m(0), n(0), nbc(0), nbr(0) {}
31 ofstream & PrintStats(ofstream & outfile)
const;
35 bool isPar()
const {
return ispar; }
40 void Init(
int workers, IT forcelogbeta = 0);
42 void SubSpMV(IT * btop, IT bstart, IT bend,
const NT * __restrict x, NT * __restrict suby, IT * __restrict sumscan)
const;
44 void BMult(IT** chunks, IT start, IT end,
const NT * __restrict x, NT * __restrict y, IT ysize, IT * __restrict sumscan)
const;
47 void BlockPar(IT start, IT end,
const NT * __restrict subx, NT * __restrict suby,
48 IT rangebeg, IT rangeend, IT cutoff, IT * __restrict sumscan)
const;
50 void SortBlocks(pair<IT, pair<IT,IT> > * pairarray, NT * val);
79 template <
typename NU,
typename IU,
unsigned UUDIM>
void bmcsb_gespmv(const BmCsb< NT, IT, TTDIM > &A, const NT *__restrict x, NT *__restrict y)
void SSEspmv(const double *__restrict V, const uint64_t *__restrict M, const unsigned *__restrict bot, const unsigned nrb, const double *__restrict X, double *Y, unsigned lcmask, unsigned lrmask, unsigned clbits)
float RowImbalance(const CSB &A)