40 template <
class IT,
class NT>
43 template <
class IT,
class NT>
46 template <
class SR,
class IT,
class NUM,
class IVT,
class OVT>
50 template <
class SR,
class IT,
class NUM,
class IVT,
class OVT>
51 void SpMXSpV(
const Dcsc<IT,NUM> & Adcsc, int32_t mA,
const int32_t * indx,
const IVT * numx, int32_t veclen,
55 SpImpl<SR,IT,NUM,IVT,OVT>::SpMXSpV(Adcsc, mA, indx, numx, veclen, indy, numy);
60 template <
class SR,
class IT,
class NUM,
class IVT,
class OVT>
61 void SpMXSpV(
const Dcsc<IT,NUM> & Adcsc, int32_t mA,
const int32_t * indx,
const IVT * numx, int32_t veclen,
62 int32_t * indy, OVT * numy,
int * cnts,
int * dspls,
int p_c)
64 SpImpl<SR,IT,NUM,IVT,OVT>::SpMXSpV(Adcsc, mA, indx, numx, veclen, indy, numy, cnts, dspls,p_c);
69 template <
class SR,
class IT,
class NUM,
class IVT,
class OVT>
71 std::vector<int32_t> & indy, std::vector< OVT > & numy, int32_t offset)
73 SpImpl<SR,IT,NUM,IVT,OVT>::SpMXSpV_ForThreading(Adcsc, mA, indx, numx, veclen, indy, numy, offset);
77 template <
class SR,
class IT,
class NUM,
class IVT,
class OVT>
79 std::vector<int32_t> & indy, std::vector< OVT > & numy, int32_t offset, std::vector<OVT> & localy,
BitMap & isthere, std::vector<uint32_t> & nzinds)
81 SpImpl<SR,IT,NUM,IVT,OVT>::SpMXSpV_ForThreading(Adcsc, mA, indx, numx, veclen, indy, numy, offset, localy, isthere, nzinds);
96 template <
typename SR,
typename IT,
typename NUM,
typename IVT,
typename OVT>
97 void SpMXSpV_HeapSort(
const Csc<IT,NUM> & Acsc, int32_t mA,
const int32_t * indx,
const IVT * numx, int32_t veclen, std::vector<int32_t> & indy, std::vector<OVT> & numy, int32_t offset);
100 template <
class SR,
class IT,
class NUM,
class IVT,
class OVT>
106 template <
class SR,
class IT,
class NUM,
class IVT,
class OVT>
107 void SpMXSpV(
const Csc<IT,NUM> & Acsc, int32_t mA,
const int32_t * indx,
const IVT * numx, int32_t veclen,
108 int32_t * indy, OVT * numy,
int * cnts,
int * dspls,
int p_c)
110 std::cout <<
"Optbuf enabled version is not yet supported with CSC matrices" << std::endl;
115 template <
class SR,
class IT,
class NUM,
class IVT,
class OVT>
116 void SpMXSpV(
const Csc<IT,NUM> & Acsc, int32_t mA,
const int32_t * indx,
const IVT * numx, int32_t veclen,
120 SpMXSpV_Bucket<SR>(Acsc, mA, indx, numx, veclen, indy, numy, SPA);
122 SpMXSpV_HeapSort<SR>(Acsc, mA, indx, numx, veclen, indy, numy, 0);
127 template <
class SR,
class IT,
class NUM,
class IVT,
class OVT>
129 std::vector<int32_t> & indy, std::vector< OVT > & numy, int32_t offset)
131 SpMXSpV_HeapSort<SR>(Acsc, mA, indx, numx, veclen, indy, numy, offset);
135 template <
class SR,
class IT,
class NUM,
class IVT,
class OVT>
137 std::vector<int32_t> & indy, std::vector< OVT > & numy, int32_t offset, std::vector<OVT> & localy,
BitMap & isthere, std::vector<uint32_t> & nzinds)
140 SpMXSpV_HeapSort<SR>(Acsc, mA, indx, numx, veclen, indy, numy, offset);
155 template <
class SR,
class IT,
class NUM,
class IVT,
class OVT>
158 static void SpMXSpV(
const Dcsc<IT,NUM> & Adcsc, int32_t mA,
const int32_t * indx,
const IVT * numx, int32_t veclen,
159 std::vector<int32_t> & indy, std::vector< OVT > & numy);
161 static void SpMXSpV(
const Dcsc<IT,NUM> & Adcsc, int32_t mA,
const int32_t * indx,
const IVT * numx, int32_t veclen,
162 int32_t * indy, OVT * numy,
int * cnts,
int * dspls,
int p_c)
164 std::cout <<
"Optbuf enabled version is not yet supported with general (non-boolean) matrices" << std::endl;
169 std::vector<int32_t> & indy, std::vector<OVT> & numy, int32_t offset)
171 std::cout <<
"Threaded version is not yet supported with general (non-boolean) matrices" << std::endl;
174 std::vector<int32_t> & indy, std::vector<OVT> & numy, int32_t offset, std::vector<OVT> & localy,
BitMap & isthere, std::vector<uint32_t> & nzinds)
176 std::cout <<
"Threaded version is not yet supported with general (non-boolean) matrices" << std::endl;
183 template <
class SR,
class IT,
class IVT,
class OVT>
186 static void SpMXSpV(
const Dcsc<IT,bool> & Adcsc, int32_t mA,
const int32_t * indx,
const IVT * numx, int32_t veclen,
187 std::vector<int32_t> & indy, std::vector< OVT > & numy);
189 static void SpMXSpV(
const Dcsc<IT,bool> & Adcsc, int32_t mA,
const int32_t * indx,
const IVT * numx, int32_t veclen,
190 int32_t * indy, OVT * numy,
int * cnts,
int * dspls,
int p_c);
194 std::vector<int32_t> & indy, std::vector<OVT> & numy, int32_t offset);
197 std::vector<int32_t> & indy, std::vector<OVT> & numy, int32_t offset, std::vector<OVT> & localy,
BitMap & isthere, std::vector<uint32_t> & nzinds);
void SpMXSpV_ForThreading(const Dcsc< IT, NUM > &Adcsc, int32_t mA, const int32_t *indx, const IVT *numx, int32_t veclen, std::vector< int32_t > &indy, std::vector< OVT > &numy, int32_t offset)
Overload #3: DCSC.
SelectMaxSRing< bool, int32_t > SR
void SpMXSpV_HeapSort(const Csc< IT, NT > &Acsc, int32_t mA, const int32_t *indx, const IVT *numx, int32_t veclen, std::vector< int32_t > &indy, std::vector< OVT > &numy, int32_t offset)
void SpMXSpV(const Dcsc< IT, NUM > &Adcsc, int32_t mA, const int32_t *indx, const IVT *numx, int32_t veclen, std::vector< int32_t > &indy, std::vector< OVT > &numy, PreAllocatedSPA< OVT > &SPA)
Overload #1: DCSC.
static void SpMXSpV_ForThreading(const Dcsc< IT, NUM > &Acsc, int32_t mA, const int32_t *indx, const IVT *numx, int32_t veclen, std::vector< int32_t > &indy, std::vector< OVT > &numy, int32_t offset, std::vector< OVT > &localy, BitMap &isthere, std::vector< uint32_t > &nzinds)
void SpMXSpV_Bucket(const Csc< IT, NT > &Acsc, int32_t mA, const int32_t *indx, const IVT *numx, int32_t veclen, std::vector< int32_t > &indy, std::vector< OVT > &numy, PreAllocatedSPA< OVT > &SPA)
static void SpMXSpV_ForThreading(const Dcsc< IT, NUM > &Adcsc, int32_t mA, const int32_t *indx, const IVT *numx, int32_t veclen, std::vector< int32_t > &indy, std::vector< OVT > &numy, int32_t offset)
static void SpMXSpV(const Dcsc< IT, NUM > &Adcsc, int32_t mA, const int32_t *indx, const IVT *numx, int32_t veclen, std::vector< int32_t > &indy, std::vector< OVT > &numy)
static void SpMXSpV(const Dcsc< IT, NUM > &Adcsc, int32_t mA, const int32_t *indx, const IVT *numx, int32_t veclen, int32_t *indy, OVT *numy, int *cnts, int *dspls, int p_c)