COMBINATORIAL_BLAS  1.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Static Public Member Functions | List of all members
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, vector< int32_t > &indy, 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, vector< int32_t > &indy, vector< OVT > &numy, int32_t offset)
 Dcsc and vector index types do not need to match. More...
 
static void SpMXSpV_ForThreading (const Csc< IT, bool > &Acsc, int32_t mA, const int32_t *indx, const IVT *numx, int32_t veclen, vector< int32_t > &indy, vector< OVT > &numy, int32_t offset)
 Csc and vector index types do not need to match. More...
 

Detailed Description

template<class SR, class IT, class IVT, class OVT>
struct SpImpl< SR, IT, bool, IVT, OVT >

Definition at line 105 of file SpImpl.h.

Member Function Documentation

template<class SR , class IT , class IVT , class OVT >
void 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,
vector< int32_t > &  indy,
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 164 of file SpImpl.cpp.

template<typename SR , typename IT , typename IVT , class OVT >
void 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 219 of file SpImpl.cpp.

template<typename SR , typename IT , typename IVT , typename OVT >
void 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,
vector< int32_t > &  indy,
vector< OVT > &  numy,
int32_t  offset 
)
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 275 of file SpImpl.cpp.

template<typename SR , typename IT , typename IVT , typename OVT >
void SpImpl< SR, IT, bool, IVT, OVT >::SpMXSpV_ForThreading ( const Csc< IT, bool > &  Acsc,
int32_t  mA,
const int32_t *  indx,
const IVT *  numx,
int32_t  veclen,
vector< int32_t > &  indy,
vector< OVT > &  numy,
int32_t  offset 
)
static

Csc and vector index types do not need to match.

We can safely use a SPA here because Acsc is short (::RowSplit() has already been called on it)

Definition at line 324 of file SpImpl.cpp.


The documentation for this struct was generated from the following files: