COMBINATORIAL_BLAS  1.6
combblas::SpImpl< SR, IT, bool, IVT, OVT > Struct Template Reference

#include <SpImpl.h>

Static Public Member Functions

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...
 

Detailed Description

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.

Member Function Documentation

◆ 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: