18 template <
class NT, 
class IT>
 
   22     BiCsb ():nz(0), m(0), n(0), nbc(0), nbr(0) {}   
 
   24     BiCsb (IT size,IT rows, IT cols, 
int workers);
 
   25     BiCsb (IT size,IT rows, IT cols, IT * ri, IT * ci, NT * val, 
int workers, IT forcelogbeta = 0);
 
   32     ofstream & PrintStats(ofstream & outfile) 
const;
 
   36     bool isPar()
 const { 
return ispar; }
 
   39     void Init(
int workers, IT forcelogbeta = 0);
 
   41     template <
typename SR, 
typename RHS, 
typename LHS>  
 
   42     void SubSpMV(IT * btop, IT bstart, IT bend, 
const RHS * __restrict x, LHS * __restrict suby) 
const;
 
   44     template <
typename SR, 
typename RHS, 
typename LHS>  
 
   45     void SubSpMVTrans(IT col, IT rowstart, IT rowend, 
const RHS * __restrict x, LHS * __restrict suby) 
const;
 
   47     template <
typename SR, 
typename RHS, 
typename LHS>
 
   48     void SubSpMVTrans(
const vector< tuple<IT,IT,IT> > & chunk, 
const RHS * __restrict x, LHS * __restrict suby) 
const;
 
   50     template <
typename SR, 
typename RHS, 
typename LHS>
 
   51     void BMult(IT** chunks, IT start, IT end, 
const RHS * __restrict x, LHS * __restrict y, IT ysize) 
const;
 
   53     template <
typename SR, 
typename RHS, 
typename LHS>  
 
   54     void BTransMult(vector< vector< tuple<IT,IT,IT> > * > & chunks, IT start, IT end, 
const RHS * __restrict x, LHS * __restrict y, IT ysize) 
const;
 
   56     template <
typename SR, 
typename RHS, 
typename LHS>  
 
   57     void BlockPar(IT start, IT end, 
const RHS * __restrict subx, LHS * __restrict suby, 
 
   58                     IT rangebeg, IT rangeend, IT cutoff) 
const;
 
   60     template <
typename SR, 
typename RHS, 
typename LHS>  
 
   61     void BlockParT(IT start, IT end, 
const RHS * __restrict subx, LHS * __restrict suby, 
 
   62                     IT rangebeg, IT rangeend, IT cutoff) 
const;
 
   64     void SortBlocks(pair<IT, pair<IT,IT> > * pairarray, NT * val);
 
   91     template <
typename SR, 
typename NU, 
typename IU, 
typename RHS, 
typename LHS>
 
   94     template <
typename SR, 
typename NU, 
typename IU, 
typename RHS, 
typename LHS>
 
  100     template <
typename NU, 
typename IU>
 
  110     BiCsb ():nz(0), m(0), n(0), nbc(0), nbr(0) {}   
 
  112     BiCsb (IT size,IT rows, IT cols, 
int workers);
 
  113     BiCsb (IT size,IT rows, IT cols, IT * ri, IT * ci, 
int workers, IT forcelogbeta = 0);   
 
  119     template <
typename NT>
 
  125     bool isPar()
 const { 
return ispar; }
 
  128     void Init(
int workers, IT forcelogbeta = 0);
 
  130     template <
typename SR, 
typename RHS, 
typename LHS>
 
  131     void SubSpMV(IT * btop, IT bstart, IT bend, 
const RHS * __restrict x, LHS * __restrict suby) 
const;
 
  133     template <
typename SR, 
typename RHS, 
typename LHS>  
 
  134     void SubSpMVTrans(IT col, IT rowstart, IT rowend, 
const RHS * __restrict x, LHS * __restrict suby) 
const;
 
  136     template <
typename SR, 
typename RHS, 
typename LHS>
 
  137     void SubSpMVTrans(
const vector< tuple<IT,IT,IT> > & chunk, 
const RHS * __restrict x, LHS * __restrict suby) 
const;
 
  139     template <
typename SR, 
typename RHS, 
typename LHS>  
 
  140     void BMult(IT ** chunks, IT start, IT end, 
const RHS * __restrict x, LHS * __restrict y, IT ysize) 
const;
 
  142     template <
typename SR, 
typename RHS, 
typename LHS>      
 
  143     void BTransMult(vector< vector< tuple<IT,IT,IT> > * > & chunks, IT start, IT end, 
const RHS * __restrict x, LHS * __restrict y, IT ysize) 
const;
 
  145     template <
typename SR, 
typename RHS, 
typename LHS>      
 
  146     void BlockPar(IT start, IT end, 
const RHS * __restrict subx, LHS * __restrict suby, 
 
  147                     IT rangebeg, IT rangeend, IT cutoff) 
const;
 
  149     template <
typename SR, 
typename RHS, 
typename LHS>      
 
  150     void BlockParT(IT start, IT end, 
const RHS * __restrict subx, LHS * __restrict suby, 
 
  151                     IT rangebeg, IT rangeend, IT cutoff) 
const;
 
  153     void SortBlocks(pair<IT, pair<IT,IT> > * pairarray);
 
  179     template <
typename SR, 
typename NU, 
typename IU, 
typename RHS, 
typename LHS>
 
  182     template <
typename SR, 
typename NU, 
typename IU, 
typename RHS, 
typename LHS>
 
  188     template <
typename NU, 
typename IU>
 
void bicsb_gespmv(const BiCsb< NT, IT > &A, const RHS *__restrict x, LHS *__restrict y)
float ColImbalance(const BiCsb< NT, IT > &A)
void bicsb_gespmvt(const BiCsb< NT, IT > &A, const RHS *__restrict x, LHS *__restrict y)
float RowImbalance(const CSB &A)