COMBINATORIAL_BLAS  1.6
SpDCCols< IT, NT > Class Template Reference

#include <Friends.h>

Inheritance diagram for SpDCCols< IT, NT >:
SpMat< IT, NT, SpDCCols< 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

 SpDCCols ()
 
 SpDCCols (IT size, IT nRow, IT nCol, IT nzc)
 
 SpDCCols (const SpTuples< IT, NT > &rhs, bool transpose)
 
 SpDCCols (IT nRow, IT nCol, IT nnz1, const tuple< IT, IT, NT > *rhs, bool transpose)
 
 SpDCCols (const SpDCCols< IT, NT > &rhs)
 
 ~SpDCCols ()
 
template<typename NNT >
 operator SpDCCols< IT, NNT > () const
 NNT: New numeric type. More...
 
template<typename NIT , typename NNT >
 operator SpDCCols< NIT, NNT > () const
 NNT: New numeric type, NIT: New index type. More...
 
SpDCCols< IT, NT > & operator= (const SpDCCols< IT, NT > &rhs)
 
SpDCCols< IT, NT > & operator+= (const SpDCCols< IT, NT > &rhs)
 
SpDCCols< IT, NT > operator() (IT ri, IT ci) const
 
SpDCCols< IT, NT > operator() (const vector< IT > &ri, const vector< IT > &ci) const
 
bool operator== (const SpDCCols< IT, NT > &rhs) const
 
SpColIter begcol ()
 
SpColIter begcol (int i)
 
SpColIter endcol ()
 
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)
 
template<typename _UnaryOperation >
void Apply (_UnaryOperation __unary_op)
 
template<typename _UnaryOperation , typename GlobalIT >
SpDCCols< IT, NT > * PruneI (_UnaryOperation __unary_op, bool inPlace, GlobalIT rowOffset, GlobalIT colOffset)
 
template<typename _UnaryOperation >
SpDCCols< IT, NT > * Prune (_UnaryOperation __unary_op, bool inPlace)
 
template<typename _BinaryOperation >
SpDCCols< IT, NT > * PruneColumn (NT *pvals, _BinaryOperation __binary_op, bool inPlace)
 
template<typename _BinaryOperation >
SpDCCols< IT, NT > * PruneColumn (IT *pinds, NT *pvals, _BinaryOperation __binary_op, bool inPlace)
 
template<typename _BinaryOperation >
void UpdateDense (NT **array, _BinaryOperation __binary_op) const
 
void EWiseScale (NT **scaler, IT m_scaler, IT n_scaler)
 
void EWiseMult (const SpDCCols< IT, NT > &rhs, bool exclude)
 
void Transpose ()
 Mutator version, replaces the calling object. More...
 
SpDCCols< IT, NT > TransposeConst () const
 Const version, doesn't touch the existing object. More...
 
SpDCCols< IT, NT > * TransposeConstPtr () const
 
void RowSplit (int numsplits)
 
void ColSplit (int parts, vector< SpDCCols< IT, NT > > &matrices)
 
void ColConcatenate (vector< SpDCCols< IT, NT > > &matrices)
 
void Split (SpDCCols< IT, NT > &partA, SpDCCols< IT, NT > &partB)
 
void Merge (SpDCCols< IT, NT > &partA, SpDCCols< IT, NT > &partB)
 
void CreateImpl (const vector< IT > &essentials)
 
void CreateImpl (IT size, IT nRow, IT nCol, tuple< IT, IT, NT > *mytuples)
 
void CreateImpl (IT *_cp, IT *_jc, IT *_ir, NT *_numx, IT _nz, IT _nzc, IT _m, IT _n)
 
Arr< IT, NT > GetArrays () const
 
vector< IT > GetEssentials () const
 
bool isZero () const
 
IT getnrow () const
 
IT getncol () const
 
IT getnnz () const
 
IT getnzc () const
 
int getnsplit () const
 
ofstream & put (ofstream &outfile) const
 
ifstream & get (ifstream &infile)
 
void PrintInfo () const
 
void PrintInfo (ofstream &out) const
 
template<typename SR >
int PlusEq_AtXBt (const SpDCCols< IT, NT > &A, const SpDCCols< IT, NT > &B)
 
template<typename SR >
int PlusEq_AtXBn (const SpDCCols< IT, NT > &A, const SpDCCols< IT, NT > &B)
 
template<typename SR >
int PlusEq_AnXBt (const SpDCCols< IT, NT > &A, const SpDCCols< IT, NT > &B)
 
template<typename SR >
int PlusEq_AnXBn (const SpDCCols< IT, NT > &A, const SpDCCols< IT, NT > &B)
 
Dcsc< IT, NT > * GetDCSC () const
 
Dcsc< IT, NT > * GetDCSC (int i) const
 
auto GetInternal () const
 
auto GetInternal (int i) const
 
- Public Member Functions inherited from SpMat< IT, NT, SpDCCols< IT, NT > >
void Create (const vector< IT > &essentials)
 
void Create (IT size, IT nRow, IT nCol, tuple< IT, IT, NT > *mytuples)
 
SpMat< IT, NT, SpDCCols< IT, NT > > operator() (const vector< IT > &ri, const vector< IT > &ci) const
 
void SpGEMM (SpMat< IT, NT, SpDCCols< IT, NT > > &A, SpMat< IT, NT, SpDCCols< IT, NT > > &B, bool isAT, bool isBT)
 
void Split (SpMat< IT, NT, SpDCCols< IT, NT > > &partA, SpMat< IT, NT, SpDCCols< IT, NT > > &partB)
 
void Merge (SpMat< IT, NT, SpDCCols< IT, NT > > &partA, SpMat< IT, NT, SpDCCols< 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, SpDCCols< 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>(4)
 

Friends

template<class IU , class NU >
class SpDCCols
 
template<class IU , class NU >
class SpTuples
 
template<typename IU >
void BooleanRowSplit (SpDCCols< IU, bool > &A, int numsplits)
 
template<typename IU , typename NU1 , typename NU2 >
SpDCCols< IU, typename promote_trait< NU1, NU2 >::T_promote > EWiseMult (const SpDCCols< IU, NU1 > &A, const SpDCCols< IU, NU2 > &B, bool exclude)
 
template<typename N_promote , typename IU , typename NU1 , typename NU2 , typename _BinaryOperation >
SpDCCols< IU, N_promote > EWiseApply (const SpDCCols< IU, NU1 > &A, const SpDCCols< IU, NU2 > &B, _BinaryOperation __binary_op, bool notB, const NU2 &defaultBVal)
 
template<typename RETT , typename IU , typename NU1 , typename NU2 , typename _BinaryOperation , typename _BinaryPredicate >
SpDCCols< IU, RETT > EWiseApply (const SpDCCols< IU, NU1 > &A, const SpDCCols< IU, NU2 > &B, _BinaryOperation __binary_op, _BinaryPredicate do_op, bool allowANulls, bool allowBNulls, const NU1 &ANullVal, const NU2 &BNullVal, const bool allowIntersect)
 
template<class SR , class NUO , class IU , class NU1 , class NU2 >
SpTuples< IU, NUO > * Tuples_AnXBn (const SpDCCols< IU, NU1 > &A, const SpDCCols< IU, NU2 > &B, bool clearA, bool clearB)
 
template<class SR , class NUO , class IU , class NU1 , class NU2 >
SpTuples< IU, NUO > * Tuples_AnXBt (const SpDCCols< IU, NU1 > &A, const SpDCCols< IU, NU2 > &B, bool clearA, bool clearB)
 
template<class SR , class NUO , class IU , class NU1 , class NU2 >
SpTuples< IU, NUO > * Tuples_AtXBn (const SpDCCols< IU, NU1 > &A, const SpDCCols< IU, NU2 > &B, bool clearA, bool clearB)
 
template<class SR , class NUO , class IU , class NU1 , class NU2 >
SpTuples< IU, NUO > * Tuples_AtXBt (const SpDCCols< IU, NU1 > &A, const SpDCCols< IU, NU2 > &B, bool clearA, bool clearB)
 
template<typename SR , typename IU , typename NU , typename RHS , typename LHS >
void dcsc_gespmv (const SpDCCols< IU, NU > &A, const RHS *x, LHS *y)
 SpMV with dense vector. More...
 
template<typename SR , typename IU , typename NU , typename RHS , typename LHS >
void dcsc_gespmv_threaded (const SpDCCols< IU, NU > &A, const RHS *x, LHS *y)
 SpMV with dense vector (multithreaded version) 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)
 

Detailed Description

template<class IT, class NT>
class SpDCCols< IT, NT >

Definition at line 50 of file Friends.h.

Member Typedef Documentation

◆ LocalIT

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

Definition at line 53 of file SpDCCols.h.

◆ LocalNT

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

Definition at line 54 of file SpDCCols.h.

Constructor & Destructor Documentation

◆ SpDCCols() [1/5]

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

Definition at line 50 of file SpDCCols.cpp.

◆ SpDCCols() [2/5]

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

Definition at line 55 of file SpDCCols.cpp.

◆ SpDCCols() [3/5]

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

Constructor for converting SpTuples matrix -> SpDCCols (may use a private memory heap)

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

◆ SpDCCols() [4/5]

template<class IT , class NT >
SpDCCols< IT, NT >::SpDCCols ( IT  nRow,
IT  nCol,
IT  nTuples,
const tuple< IT, IT, NT > *  tuples,
bool  transpose 
)

Multithreaded Constructor for converting tuples matrix -> SpDCCols

Parameters
[in]rhsif transpose=true,
then tuples is assumed to be a row sorted list of tuple objects
else tuples is assumed to be a column sorted list of tuple objects

Definition at line 198 of file SpDCCols.cpp.

◆ SpDCCols() [5/5]

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

Definition at line 88 of file SpDCCols.cpp.

◆ ~SpDCCols()

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

Definition at line 65 of file SpDCCols.cpp.

Member Function Documentation

◆ Apply()

template<class IT, class NT>
template<typename _UnaryOperation >
void SpDCCols< IT, NT >::Apply ( _UnaryOperation  __unary_op)
inline

Definition at line 248 of file SpDCCols.h.

◆ begcol() [1/2]

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

Definition at line 196 of file SpDCCols.h.

◆ begcol() [2/2]

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

Definition at line 203 of file SpDCCols.h.

◆ begnz() [1/2]

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

Definition at line 227 of file SpDCCols.h.

◆ begnz() [2/2]

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

Definition at line 237 of file SpDCCols.h.

◆ ColConcatenate()

template<class IT , class NT >
void SpDCCols< IT, NT >::ColConcatenate ( vector< SpDCCols< IT, NT > > &  matrices)
Attention
Destroys its parameters (matrices)

Concatenates (merges) multiple matrices (cut along the columns) into 1 piece ColSplit() method should have been executed on the object beforehand

Definition at line 939 of file SpDCCols.cpp.

◆ ColSplit()

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

Splits the matrix into "parts", simply by cutting along the columns Simple algorithm that doesn't intend to split perfectly, but it should do a pretty good job Practically destructs the calling object also (frees most of its memory)

Definition at line 897 of file SpDCCols.cpp.

◆ CreateImpl() [1/3]

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

Definition at line 695 of file SpDCCols.cpp.

◆ CreateImpl() [2/3]

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

Definition at line 709 of file SpDCCols.cpp.

◆ CreateImpl() [3/3]

template<class IT , class NT >
void SpDCCols< IT, NT >::CreateImpl ( IT *  _cp,
IT *  _jc,
IT *  _ir,
NT *  _numx,
IT  _nz,
IT  _nzc,
IT  _m,
IT  _n 
)

Definition at line 682 of file SpDCCols.cpp.

◆ endcol() [1/2]

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

Definition at line 211 of file SpDCCols.h.

◆ endcol() [2/2]

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

Definition at line 219 of file SpDCCols.h.

◆ endnz() [1/2]

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

Definition at line 232 of file SpDCCols.h.

◆ endnz() [2/2]

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

Definition at line 242 of file SpDCCols.h.

◆ EWiseMult()

template<class IT , class NT >
void SpDCCols< IT, NT >::EWiseMult ( const SpDCCols< IT, NT > &  rhs,
bool  exclude 
)

Definition at line 623 of file SpDCCols.cpp.

◆ EWiseScale()

template<class IT , class NT >
void SpDCCols< IT, NT >::EWiseScale ( NT **  scaler,
IT  m_scaler,
IT  n_scaler 
)

{scaler should NOT contain any zero entries}

Definition at line 663 of file SpDCCols.cpp.

◆ get()

template<class IT , class NT >
ifstream & SpDCCols< IT, NT >::get ( ifstream &  infile)

Definition at line 1195 of file SpDCCols.cpp.

◆ GetArrays()

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

Definition at line 787 of file SpDCCols.cpp.

◆ GetDCSC() [1/2]

template<class IT, class NT>
Dcsc<IT, NT>* SpDCCols< IT, NT >::GetDCSC ( ) const
inline

Definition at line 321 of file SpDCCols.h.

◆ GetDCSC() [2/2]

template<class IT, class NT>
Dcsc<IT, NT>* SpDCCols< IT, NT >::GetDCSC ( int  i) const
inline

Definition at line 326 of file SpDCCols.h.

◆ GetEssentials()

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

Definition at line 748 of file SpDCCols.cpp.

◆ GetInternal() [1/2]

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

Definition at line 331 of file SpDCCols.h.

◆ GetInternal() [2/2]

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

Definition at line 332 of file SpDCCols.h.

◆ getncol()

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

Definition at line 299 of file SpDCCols.h.

◆ getnnz()

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

Definition at line 300 of file SpDCCols.h.

◆ getnrow()

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

Definition at line 298 of file SpDCCols.h.

◆ getnsplit()

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

Definition at line 302 of file SpDCCols.h.

◆ getnzc()

template<class IT, class NT>
IT SpDCCols< IT, NT >::getnzc ( ) const
inline

Definition at line 301 of file SpDCCols.h.

◆ isZero()

template<class IT, class NT>
bool SpDCCols< IT, NT >::isZero ( ) const
inline

Definition at line 297 of file SpDCCols.h.

◆ Merge()

template<class IT , class NT >
void SpDCCols< IT, NT >::Merge ( SpDCCols< IT, NT > &  partA,
SpDCCols< IT, NT > &  partB 
)
Attention
Destroys its parameters (partA & partB)

Merges two matrices (cut along the columns) into 1 piece Split method should have been executed on the object beforehand

Definition at line 990 of file SpDCCols.cpp.

◆ operator SpDCCols< IT, NNT >()

template<class IT , class NT >
template<typename NNT >
SpDCCols< IT, NT >::operator SpDCCols< IT, NNT > ( ) const

NNT: New numeric type.

Definition at line 760 of file SpDCCols.cpp.

◆ operator SpDCCols< NIT, NNT >()

template<class IT , class NT >
template<typename NIT , typename NNT >
SpDCCols< IT, NT >::operator SpDCCols< NIT, NNT > ( ) const

NNT: New numeric type, NIT: New index type.

Definition at line 774 of file SpDCCols.cpp.

◆ operator()() [1/2]

template<class IT , class NT >
SpDCCols< IT, NT > SpDCCols< IT, NT >::operator() ( IT  ri,
IT  ci 
) const

Definition at line 1115 of file SpDCCols.cpp.

◆ operator()() [2/2]

template<class IT , class NT >
SpDCCols< IT, NT > SpDCCols< IT, NT >::operator() ( const vector< IT > &  ri,
const vector< IT > &  ci 
) const

The almighty indexing polyalgorithm Calls different subroutines depending the sparseness of ri/ci

Definition at line 1150 of file SpDCCols.cpp.

◆ operator+=()

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

Definition at line 394 of file SpDCCols.cpp.

◆ operator=()

template<class IT , class NT >
SpDCCols< IT, NT > & SpDCCols< IT, NT >::operator= ( const SpDCCols< 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 365 of file SpDCCols.cpp.

◆ operator==()

template<class IT, class NT>
bool SpDCCols< IT, NT >::operator== ( const SpDCCols< IT, NT > &  rhs) const
inline

Definition at line 73 of file SpDCCols.h.

◆ PlusEq_AnXBn()

template<class IT , class NT >
template<typename SR >
int SpDCCols< IT, NT >::PlusEq_AnXBn ( const SpDCCols< IT, NT > &  A,
const SpDCCols< IT, NT > &  B 
)

C += A*B (Using ColByCol Algorithm) This version is currently limited to multiplication of matrices with the same precision (e.g. it can't multiply double-precision matrices with booleans) The multiplication is on the specified semiring (passed as parameter)

Definition at line 1071 of file SpDCCols.cpp.

◆ PlusEq_AnXBt()

template<class IT , class NT >
template<class SR >
int SpDCCols< IT, NT >::PlusEq_AnXBt ( const SpDCCols< IT, NT > &  A,
const SpDCCols< IT, NT > &  B 
)

C += A*B' (Using OuterProduct Algorithm) This version is currently limited to multiplication of matrices with the same precision (e.g. it can't multiply double-precision matrices with booleans) The multiplication is on the specified semiring (passed as parameter)

Definition at line 1027 of file SpDCCols.cpp.

◆ PlusEq_AtXBn()

template<class IT , class NT >
template<typename SR >
int SpDCCols< IT, NT >::PlusEq_AtXBn ( const SpDCCols< IT, NT > &  A,
const SpDCCols< IT, NT > &  B 
)

Definition at line 1099 of file SpDCCols.cpp.

◆ PlusEq_AtXBt()

template<class IT , class NT >
template<typename SR >
int SpDCCols< IT, NT >::PlusEq_AtXBt ( const SpDCCols< IT, NT > &  A,
const SpDCCols< IT, NT > &  B 
)

Definition at line 1107 of file SpDCCols.cpp.

◆ PrintInfo() [1/2]

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

Definition at line 1235 of file SpDCCols.cpp.

◆ PrintInfo() [2/2]

template<class IT , class NT >
void SpDCCols< IT, NT >::PrintInfo ( ofstream &  out) const

Definition at line 1211 of file SpDCCols.cpp.

◆ Prune()

template<class IT , class NT >
template<typename _UnaryOperation >
SpDCCols< IT, NT > * SpDCCols< IT, NT >::Prune ( _UnaryOperation  __unary_op,
bool  inPlace 
)

Definition at line 478 of file SpDCCols.cpp.

◆ PruneColumn() [1/2]

template<class IT , class NT >
template<typename _BinaryOperation >
SpDCCols< IT, NT > * SpDCCols< IT, NT >::PruneColumn ( NT *  pvals,
_BinaryOperation  __binary_op,
bool  inPlace 
)

Definition at line 527 of file SpDCCols.cpp.

◆ PruneColumn() [2/2]

template<class IT , class NT >
template<typename _BinaryOperation >
SpDCCols< IT, NT > * SpDCCols< IT, NT >::PruneColumn ( IT *  pinds,
NT *  pvals,
_BinaryOperation  __binary_op,
bool  inPlace 
)

Definition at line 575 of file SpDCCols.cpp.

◆ PruneI()

template<class IT , class NT >
template<typename _UnaryOperation , typename GlobalIT >
SpDCCols< IT, NT > * SpDCCols< IT, NT >::PruneI ( _UnaryOperation  __unary_op,
bool  inPlace,
GlobalIT  rowOffset,
GlobalIT  colOffset 
)

Definition at line 431 of file SpDCCols.cpp.

◆ put()

template<class IT , class NT >
ofstream & SpDCCols< IT, NT >::put ( ofstream &  outfile) const

Definition at line 1181 of file SpDCCols.cpp.

◆ RowSplit()

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

Definition at line 277 of file SpDCCols.h.

◆ Split()

template<class IT , class NT >
void SpDCCols< IT, NT >::Split ( SpDCCols< IT, NT > &  partA,
SpDCCols< IT, NT > &  partB 
)
Attention
Destroys calling object (*this)

Splits the matrix into two parts, simply by cutting along the columns Simple algorithm that doesn't intend to split perfectly, but it should do a pretty good job Practically destructs the calling object also (frees most of its memory)

Todo:
{special case of ColSplit, to be deprecated...}

Definition at line 867 of file SpDCCols.cpp.

◆ Transpose()

template<class IT , class NT >
void SpDCCols< IT, NT >::Transpose ( )

Mutator version, replaces the calling object.

O(nnz log(nnz)) time Transpose function

Remarks
Performs a lexicographical sort
Mutator function (replaces the calling object with its transpose)

Definition at line 815 of file SpDCCols.cpp.

◆ TransposeConst()

template<class IT , class NT >
SpDCCols< IT, NT > SpDCCols< IT, NT >::TransposeConst ( ) const

Const version, doesn't touch the existing object.

O(nnz log(nnz)) time Transpose function

Remarks
Performs a lexicographical sort
Const function (doesn't mutate the calling object)

Definition at line 838 of file SpDCCols.cpp.

◆ TransposeConstPtr()

template<class IT , class NT >
SpDCCols< IT, NT > * SpDCCols< IT, NT >::TransposeConstPtr ( ) const

O(nnz log(nnz)) time Transpose function

Remarks
Performs a lexicographical sort
Const function (doesn't mutate the calling object)

Definition at line 852 of file SpDCCols.cpp.

◆ UpdateDense()

template<class IT, class NT>
template<typename _BinaryOperation >
void SpDCCols< IT, NT >::UpdateDense ( NT **  array,
_BinaryOperation  __binary_op 
) const
inline

Definition at line 264 of file SpDCCols.h.

Friends And Related Function Documentation

◆ BooleanRowSplit

template<class IT, class NT>
template<typename IU >
void BooleanRowSplit ( SpDCCols< IU, bool > &  A,
int  numsplits 
)
friend

Definition at line 438 of file Friends.h.

◆ dcsc_gespmv

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

SpMV with dense vector.

Definition at line 63 of file Friends.h.

◆ dcsc_gespmv_threaded

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

SpMV with dense vector (multithreaded version)

Definition at line 81 of file Friends.h.

◆ EWiseApply [1/2]

template<class IT, class NT>
template<typename N_promote , typename IU , typename NU1 , typename NU2 , typename _BinaryOperation >
SpDCCols<IU, N_promote > EWiseApply ( const SpDCCols< IU, NU1 > &  A,
const SpDCCols< IU, NU2 > &  B,
_BinaryOperation  __binary_op,
bool  notB,
const NU2 &  defaultBVal 
)
friend

Definition at line 959 of file Friends.h.

◆ EWiseApply [2/2]

template<class IT, class NT>
template<typename RETT , typename IU , typename NU1 , typename NU2 , typename _BinaryOperation , typename _BinaryPredicate >
SpDCCols<IU,RETT> EWiseApply ( const SpDCCols< IU, NU1 > &  A,
const SpDCCols< IU, NU2 > &  B,
_BinaryOperation  __binary_op,
_BinaryPredicate  do_op,
bool  allowANulls,
bool  allowBNulls,
const NU1 &  ANullVal,
const NU2 &  BNullVal,
const bool  allowIntersect 
)
friend

Definition at line 1223 of file Friends.h.

◆ EWiseMult

template<class IT, class NT>
template<typename IU , typename NU1 , typename NU2 >
SpDCCols<IU, typename promote_trait<NU1,NU2>::T_promote > EWiseMult ( const SpDCCols< IU, NU1 > &  A,
const SpDCCols< IU, NU2 > &  B,
bool  exclude 
)
friend

Definition at line 934 of file Friends.h.

◆ 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 
)
friend

◆ SpDCCols

template<class IT, class NT>
template<class IU , class NU >
friend class SpDCCols
friend

Definition at line 361 of file SpDCCols.h.

◆ SpTuples

template<class IT, class NT>
template<class IU , class NU >
friend class SpTuples
friend

Definition at line 364 of file SpDCCols.h.

◆ Tuples_AnXBn

template<class IT, class NT>
template<class SR , class NUO , class IU , class NU1 , class NU2 >
SpTuples<IU, NUO>* Tuples_AnXBn ( const SpDCCols< IU, NU1 > &  A,
const SpDCCols< IU, NU2 > &  B,
bool  clearA = false,
bool  clearB = false 
)
friend

SpTuples(A*B) (Using ColByCol Algorithm) Returns the tuples for efficient merging later Support mixed precision multiplication The multiplication is on the specified semiring (passed as parameter)

Definition at line 553 of file Friends.h.

◆ Tuples_AnXBt

template<class IT, class NT>
template<class SR , class NUO , class IU , class NU1 , class NU2 >
SpTuples<IU, NUO>* Tuples_AnXBt ( const SpDCCols< IU, NU1 > &  A,
const SpDCCols< IU, NU2 > &  B,
bool  clearA = false,
bool  clearB = false 
)
friend

SpTuples(A*B') (Using OuterProduct Algorithm) Returns the tuples for efficient merging later Support mixed precision multiplication The multiplication is on the specified semiring (passed as parameter)

Definition at line 510 of file Friends.h.

◆ Tuples_AtXBn

template<class IT, class NT>
template<class SR , class NUO , class IU , class NU1 , class NU2 >
SpTuples<IU, NUO>* Tuples_AtXBn ( const SpDCCols< IU, NU1 > &  A,
const SpDCCols< IU, NU2 > &  B,
bool  clearA = false,
bool  clearB = false 
)
friend

Definition at line 590 of file Friends.h.

◆ Tuples_AtXBt

template<class IT, class NT>
template<class SR , class NUO , class IU , class NU1 , class NU2 >
SpTuples<IU, NUO>* Tuples_AtXBt ( const SpDCCols< IU, NU1 > &  A,
const SpDCCols< IU, NU2 > &  B,
bool  clearA = false,
bool  clearB = false 
)
friend

Definition at line 577 of file Friends.h.

Member Data Documentation

◆ dcsc

template<class IT, class NT>
Dcsc<IT, NT>* SpDCCols< IT, NT >::dcsc

Definition at line 350 of file SpDCCols.h.

◆ dcscarr

template<class IT, class NT>
Dcsc<IT, NT>** SpDCCols< IT, NT >::dcscarr

Definition at line 351 of file SpDCCols.h.

◆ esscount

template<class IT, class NT>
const IT SpDCCols< IT, NT >::esscount = static_cast<IT>(4)
static

Definition at line 295 of file SpDCCols.h.


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