COMBINATORIAL_BLAS  1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Functions
BFSFriends.h File Reference
#include "mpi.h"
#include <iostream>
#include "SpParMat.h"
#include "SpParHelper.h"
#include "MPIType.h"
#include "Friends.h"
#include "OptBuf.h"
#include "ParFriends.h"
#include "SpImplNoSR.h"

Go to the source code of this file.

Functions

template<typename IT , typename VT >
void dcsc_gespmv_threaded_setbuffers (const SpDCCols< IT, bool > &A, const int32_t *indx, const VT *numx, int32_t nnzx, int32_t *sendindbuf, VT *sendnumbuf, int *cnts, int *dspls, int p_c)
template<typename VT , typename IT , typename UDER >
void LocalSpMV (const SpParMat< IT, bool, UDER > &A, int rowneighs, OptBuf< int32_t, VT > &optbuf, int32_t *&indacc, VT *&numacc, int *sendcnt, int accnz)
template<typename IU , typename VT >
void MergeContributions (FullyDistSpVec< IU, VT > &y, int *&recvcnt, int *&rdispls, int32_t *&recvindbuf, VT *&recvnumbuf, int rowneighs)
template<typename VT , typename IT , typename UDER >
FullyDistSpVec< IT, VT > SpMV (const SpParMat< IT, bool, UDER > &A, const FullyDistSpVec< IT, VT > &x, OptBuf< int32_t, VT > &optbuf)

Function Documentation

template<typename IT , typename VT >
void dcsc_gespmv_threaded_setbuffers ( const SpDCCols< IT, bool > &  A,
const int32_t *  indx,
const VT *  numx,
int32_t  nnzx,
int32_t *  sendindbuf,
VT *  sendnumbuf,
int *  cnts,
int *  dspls,
int  p_c 
)

Multithreaded SpMV with sparse vector and preset buffers the assembly of outgoing buffers sendindbuf/sendnumbuf are done here

Definition at line 30 of file BFSFriends.h.

template<typename VT , typename IT , typename UDER >
void LocalSpMV ( const SpParMat< IT, bool, UDER > &  A,
int  rowneighs,
OptBuf< int32_t, VT > &  optbuf,
int32_t *&  indacc,
VT *&  numacc,
int *  sendcnt,
int  accnz 
)

Step 3 of the sparse SpMV algorithm, without the semiring (BFS only)

Parameters:
[in,out]optbuf{scratch space for all-to-all (fold) communication}
[in,out]indacc,numacc{index and values of the input vector, deleted upon exit}
[in,out]sendindbuf,sendnumbuf{index and values of the output vector, created}

Definition at line 154 of file BFSFriends.h.

template<typename IU , typename VT >
void MergeContributions ( FullyDistSpVec< IU, VT > &  y,
int *&  recvcnt,
int *&  rdispls,
int32_t *&  recvindbuf,
VT *&  recvnumbuf,
int  rowneighs 
)

Definition at line 191 of file BFSFriends.h.

template<typename VT , typename IT , typename UDER >
FullyDistSpVec<IT,VT> SpMV ( const SpParMat< IT, bool, UDER > &  A,
const FullyDistSpVec< IT, VT > &  x,
OptBuf< int32_t, VT > &  optbuf 
)

This is essentially a SpMV for BFS because it lacks the semiring. It naturally justs selects columns of A (adjacencies of frontier) and merges with the minimum entry succeeding. SpParMat has to be boolean input and output vectors are of type VT but their indices are IT

Definition at line 295 of file BFSFriends.h.