#include <SpImpl.h>
|
static void | SpMXSpV (const Dcsc< IT, bool > &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, bool > &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) |
|
static void | SpMXSpV_ForThreading (const Dcsc< IT, bool > &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) |
| Dcsc and vector index types do not need to match. More...
|
|
static void | SpMXSpV_ForThreading (const Dcsc< IT, bool > &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, std::vector< OVT > &localy, BitMap &isthere, std::vector< uint32_t > &nzinds) |
| Dcsc and vector index types do not need to match. More...
|
|
template<class SR, class IT, class IVT, class OVT>
struct combblas::SpImpl< SR, IT, bool, IVT, OVT >
Definition at line 184 of file SpImpl.h.
◆ SpMXSpV() [1/2]
template<class SR , class IT , class IVT , class OVT >
void combblas::SpImpl< SR, IT, bool, IVT, OVT >::SpMXSpV |
( |
const Dcsc< IT, bool > & |
Adcsc, |
|
|
int32_t |
mA, |
|
|
const int32_t * |
indx, |
|
|
const IVT * |
numx, |
|
|
int32_t |
veclen, |
|
|
std::vector< int32_t > & |
indy, |
|
|
std::vector< OVT > & |
numy |
|
) |
| |
|
static |
One of the two versions of SpMXSpV with on boolean matrix [uses only Semiring::add()] This version is likely to be more memory efficient than the other one (the one that uses preallocated memory buffers) Because here we don't use a dense accumulation vector but a heap. It will probably be slower though.
Definition at line 168 of file SpImpl.cpp.
◆ SpMXSpV() [2/2]
template<typename SR , typename IT , typename IVT , class OVT >
void combblas::SpImpl< SR, IT, bool, IVT, OVT >::SpMXSpV |
( |
const Dcsc< IT, bool > & |
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 |
|
) |
| |
|
static |
- Parameters
-
[in,out] | indy,numy,cnts | {preallocated arrays to be filled} |
[in] | dspls | {displacements to preallocated indy,numy buffers} This version determines the receiving column neighbor and adjust the indices to the receiver's local index If IVT and OVT are different, then OVT should allow implicit conversion from IVT |
Definition at line 223 of file SpImpl.cpp.
◆ SpMXSpV_ForThreading() [1/2]
template<typename SR , typename IT , typename IVT , typename OVT >
void combblas::SpImpl< SR, IT, bool, IVT, OVT >::SpMXSpV_ForThreading |
( |
const Dcsc< IT, bool > & |
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 |
Dcsc and vector index types do not need to match.
Definition at line 277 of file SpImpl.cpp.
◆ SpMXSpV_ForThreading() [2/2]
template<typename SR , typename IT , typename IVT , typename OVT >
void combblas::SpImpl< SR, IT, bool, IVT, OVT >::SpMXSpV_ForThreading |
( |
const Dcsc< IT, bool > & |
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, |
|
|
std::vector< OVT > & |
localy, |
|
|
BitMap & |
isthere, |
|
|
std::vector< uint32_t > & |
nzinds |
|
) |
| |
|
static |
Dcsc and vector index types do not need to match.
We can safely use a SPA here because Adcsc is short (::RowSplit() has already been called on it)
Definition at line 291 of file SpImpl.cpp.
The documentation for this struct was generated from the following files: