COMBINATORIAL_BLAS  1.6
SpCCols< IT, NT > Class Template Reference

#include <SpCCols.h>

Inheritance diagram for SpCCols< IT, NT >:
SpMat< IT, NT, SpCCols< IT, NT > >

Classes

class  SpColIter
 Iterate over (sparse) columns of the sparse matrix. More...
 

Public Types

typedef IT LocalIT
 
typedef NT LocalNT
 

Public Member Functions

 SpCCols ()
 
 SpCCols (IT size, IT nRow, IT nCol)
 
 SpCCols (const SpTuples< IT, NT > &rhs, bool transpose)
 
 SpCCols (const SpDCCols< IT, NT > &rhs)
 
 SpCCols (const SpCCols< IT, NT > &rhs)
 
 ~SpCCols ()
 
SpCCols< IT, NT > & operator= (const SpCCols< IT, NT > &rhs)
 
SpCCols< IT, NT > & operator+= (const SpCCols< IT, NT > &rhs)
 
void RowSplit (int numsplits)
 
void ColSplit (int parts, vector< SpCCols< IT, NT > > &matrices)
 
void CreateImpl (const vector< IT > &essentials)
 
void CreateImpl (IT size, IT nRow, IT nCol, tuple< IT, IT, NT > *mytuples)
 
Arr< IT, NT > GetArrays () const
 
vector< IT > GetEssentials () const
 
IT getnrow () const
 
IT getncol () const
 
IT getnnz () const
 
int getnsplit () const
 
auto GetInternal () const
 
auto GetInternal (int i) const
 
SpColIter begcol ()
 
SpColIter endcol ()
 
SpColIter begcol (int i)
 
SpColIter endcol (int i)
 
SpColIter::NzIter begnz (const SpColIter &ccol)
 
SpColIter::NzIter endnz (const SpColIter &ccol)
 
SpColIter::NzIter begnz (const SpColIter &ccol, int i)
 
SpColIter::NzIter endnz (const SpColIter &ccol, int i)
 
void PrintInfo () const
 
- Public Member Functions inherited from SpMat< IT, NT, SpCCols< IT, NT > >
void Create (const vector< IT > &essentials)
 
void Create (IT size, IT nRow, IT nCol, tuple< IT, IT, NT > *mytuples)
 
SpMat< IT, NT, SpCCols< IT, NT > > operator() (const vector< IT > &ri, const vector< IT > &ci) const
 
void SpGEMM (SpMat< IT, NT, SpCCols< IT, NT > > &A, SpMat< IT, NT, SpCCols< IT, NT > > &B, bool isAT, bool isBT)
 
void Split (SpMat< IT, NT, SpCCols< IT, NT > > &partA, SpMat< IT, NT, SpCCols< IT, NT > > &partB)
 
void Merge (SpMat< IT, NT, SpCCols< IT, NT > > &partA, SpMat< IT, NT, SpCCols< IT, NT > > &partB)
 
Arr< IT, NT > GetArrays () const
 
vector< IT > GetEssentials () const
 
auto GetInternal () const
 
auto GetInternal (int i) const
 
int getnsplit () const
 
void Transpose ()
 
auto begcol ()
 
auto begcol (int i)
 
auto endcol ()
 
auto endcol (int i)
 
auto begnz (const typename X::SpColIter &ccol)
 
auto begnz (const typename X::SpColIter &ccol, int i)
 
auto endnz (const typename X::SpColIter &ccol)
 
auto endnz (const typename X::SpColIter &ccol, int i)
 
bool operator== (const SpMat< IT, NT, SpCCols< IT, NT > > &rhs) const
 
ofstream & put (ofstream &outfile) const
 
ifstream & get (ifstream &infile)
 
bool isZero () const
 
IT getnrow () const
 
IT getncol () const
 
IT getnnz () const
 

Static Public Attributes

static const IT esscount = static_cast<IT>(3)
 

Friends

template<typename SR , typename IU , typename NU , typename RHS , typename LHS >
void csc_gespmv_dense (const SpCCols< IU, NU > &A, const RHS *x, LHS *y)
 dense vector (not implemented) More...
 
template<typename SR , typename IU , typename NUM , typename DER , typename IVT , typename OVT >
int generic_gespmv_threaded (const SpMat< IU, NUM, DER > &A, const int32_t *indx, const IVT *numx, int32_t nnzx, int32_t *&sendindbuf, OVT *&sendnumbuf, int *&sdispls, int p_c, PreAllocatedSPA< OVT > &SPA)
 

Detailed Description

template<class IT, class NT>
class SpCCols< IT, NT >

Definition at line 41 of file SpCCols.h.

Member Typedef Documentation

◆ LocalIT

template<class IT, class NT>
typedef IT SpCCols< IT, NT >::LocalIT

Definition at line 44 of file SpCCols.h.

◆ LocalNT

template<class IT, class NT>
typedef NT SpCCols< IT, NT >::LocalNT

Definition at line 45 of file SpCCols.h.

Constructor & Destructor Documentation

◆ SpCCols() [1/5]

template<class IT , class NT >
SpCCols< IT, NT >::SpCCols ( )

Definition at line 50 of file SpCCols.cpp.

◆ SpCCols() [2/5]

template<class IT , class NT >
SpCCols< IT, NT >::SpCCols ( IT  size,
IT  nRow,
IT  nCol 
)

Definition at line 55 of file SpCCols.cpp.

◆ SpCCols() [3/5]

template<class IT , class NT >
SpCCols< IT, NT >::SpCCols ( const SpTuples< IT, NT > &  rhs,
bool  transpose 
)

Constructor for converting SpTuples matrix -> SpCCols

Parameters
[in]rhsif transpose=true,
then rhs is assumed to be a row sorted SpTuples object
else rhs is assumed to be a column sorted SpTuples object

Definition at line 109 of file SpCCols.cpp.

◆ SpCCols() [4/5]

template<class IT, class NT>
SpCCols< IT, NT >::SpCCols ( const SpDCCols< IT, NT > &  rhs)
inline

Definition at line 51 of file SpCCols.h.

◆ SpCCols() [5/5]

template<class IT , class NT >
SpCCols< IT, NT >::SpCCols ( const SpCCols< IT, NT > &  rhs)

Definition at line 88 of file SpCCols.cpp.

◆ ~SpCCols()

template<class IT , class NT >
SpCCols< IT, NT >::~SpCCols ( )

Definition at line 65 of file SpCCols.cpp.

Member Function Documentation

◆ begcol() [1/2]

template<class IT, class NT>
SpColIter SpCCols< IT, NT >::begcol ( )
inline

Definition at line 162 of file SpCCols.h.

◆ begcol() [2/2]

template<class IT, class NT>
SpColIter SpCCols< IT, NT >::begcol ( int  i)
inline

Definition at line 177 of file SpCCols.h.

◆ begnz() [1/2]

template<class IT, class NT>
SpColIter::NzIter SpCCols< IT, NT >::begnz ( const SpColIter ccol)
inline
Parameters
ccolReturn the beginning iterator for the nonzeros of the current column

Definition at line 193 of file SpCCols.h.

◆ begnz() [2/2]

template<class IT, class NT>
SpColIter::NzIter SpCCols< IT, NT >::begnz ( const SpColIter ccol,
int  i 
)
inline
Parameters
imultithreaded version

Definition at line 203 of file SpCCols.h.

◆ ColSplit()

template<class IT, class NT>
void SpCCols< IT, NT >::ColSplit ( int  parts,
vector< SpCCols< IT, NT > > &  matrices 
)
Attention
Destroys calling object (*this)

◆ CreateImpl() [1/2]

template<class IT, class NT>
void SpCCols< IT, NT >::CreateImpl ( const vector< IT > &  essentials)

◆ CreateImpl() [2/2]

template<class IT, class NT>
void SpCCols< IT, NT >::CreateImpl ( IT  size,
IT  nRow,
IT  nCol,
tuple< IT, IT, NT > *  mytuples 
)

◆ endcol() [1/2]

template<class IT, class NT>
SpColIter SpCCols< IT, NT >::endcol ( )
inline

Definition at line 169 of file SpCCols.h.

◆ endcol() [2/2]

template<class IT, class NT>
SpColIter SpCCols< IT, NT >::endcol ( int  i)
inline

Definition at line 184 of file SpCCols.h.

◆ endnz() [1/2]

template<class IT, class NT>
SpColIter::NzIter SpCCols< IT, NT >::endnz ( const SpColIter ccol)
inline
Parameters
ccolReturn the ending iterator for the nonzeros of the current column

Definition at line 198 of file SpCCols.h.

◆ endnz() [2/2]

template<class IT, class NT>
SpColIter::NzIter SpCCols< IT, NT >::endnz ( const SpColIter ccol,
int  i 
)
inline
Parameters
imultithreaded version

Definition at line 208 of file SpCCols.h.

◆ GetArrays()

template<class IT, class NT>
Arr<IT,NT> SpCCols< IT, NT >::GetArrays ( ) const

◆ GetEssentials()

template<class IT, class NT>
vector<IT> SpCCols< IT, NT >::GetEssentials ( ) const

◆ GetInternal() [1/2]

template<class IT, class NT>
auto SpCCols< IT, NT >::GetInternal ( ) const
inline

Definition at line 81 of file SpCCols.h.

◆ GetInternal() [2/2]

template<class IT, class NT>
auto SpCCols< IT, NT >::GetInternal ( int  i) const
inline

Definition at line 82 of file SpCCols.h.

◆ getncol()

template<class IT, class NT>
IT SpCCols< IT, NT >::getncol ( ) const
inline

Definition at line 76 of file SpCCols.h.

◆ getnnz()

template<class IT, class NT>
IT SpCCols< IT, NT >::getnnz ( ) const
inline

Definition at line 77 of file SpCCols.h.

◆ getnrow()

template<class IT, class NT>
IT SpCCols< IT, NT >::getnrow ( ) const
inline

Definition at line 75 of file SpCCols.h.

◆ getnsplit()

template<class IT, class NT>
int SpCCols< IT, NT >::getnsplit ( ) const
inline

Definition at line 78 of file SpCCols.h.

◆ operator+=()

template<class IT, class NT>
SpCCols<IT,NT>& SpCCols< IT, NT >::operator+= ( const SpCCols< IT, NT > &  rhs)

◆ operator=()

template<class IT , class NT >
SpCCols< IT, NT > & SpCCols< IT, NT >::operator= ( const SpCCols< IT, NT > &  rhs)

The assignment operator operates on an existing object The assignment operator is the only operator that is not inherited. But there is no need to call base's assigment operator as it has no data members

Definition at line 206 of file SpCCols.cpp.

◆ PrintInfo()

template<class IT , class NT >
void SpCCols< IT, NT >::PrintInfo ( ) const

Definition at line 291 of file SpCCols.cpp.

◆ RowSplit()

template<class IT , class NT >
void SpCCols< IT, NT >::RowSplit ( int  numsplits)

Definition at line 236 of file SpCCols.cpp.

Friends And Related Function Documentation

◆ csc_gespmv_dense

template<class IT, class NT>
template<typename SR , typename IU , typename NU , typename RHS , typename LHS >
void csc_gespmv_dense ( const SpCCols< IU, NU > &  A,
const RHS *  x,
LHS *  y 
)
friend

dense vector (not implemented)

◆ generic_gespmv_threaded

template<class IT, class NT>
template<typename SR , typename IU , typename NUM , typename DER , typename IVT , typename OVT >
int generic_gespmv_threaded ( const SpMat< IU, NUM, DER > &  A,
const int32_t *  indx,
const IVT *  numx,
int32_t  nnzx,
int32_t *&  sendindbuf,
OVT *&  sendnumbuf,
int *&  sdispls,
int  p_c,
PreAllocatedSPA< OVT > &  SPA 
)
friend

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

Definition at line 138 of file Friends.h.

Member Data Documentation

◆ csc

template<class IT, class NT>
Csc<IT, NT>* SpCCols< IT, NT >::csc

Definition at line 221 of file SpCCols.h.

◆ cscarr

template<class IT, class NT>
Csc<IT, NT>** SpCCols< IT, NT >::cscarr

Definition at line 222 of file SpCCols.h.

◆ esscount

template<class IT, class NT>
const IT SpCCols< IT, NT >::esscount = static_cast<IT>(3)
static

Definition at line 73 of file SpCCols.h.


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