COMBINATORIAL_BLAS 1.6
combblas::Dcsc< IT, NT > Class Template Reference

#include <dcsc.h>

Public Types

typedef NT value_type
 
typedef IT index_type
 
typedef NT value_type
 
typedef IT index_type
 
typedef NT value_type
 
typedef IT index_type
 

Public Member Functions

 Dcsc ()
 
 Dcsc (IT nnz, IT nzcol)
 
 Dcsc (IT nnz, const std::vector< IT > &indices, bool isRow)
 Create a logical matrix from (row/column) indices vector. More...
 
 Dcsc (StackEntry< NT, std::pair< IT, IT > > *multstack, IT mdim, IT ndim, IT nnz)
 
 Dcsc (const Dcsc< IT, NT > &rhs)
 
Dcsc< IT, NT > & operator= (const Dcsc< IT, NT > &rhs)
 
Dcsc< IT, NT > & operator+= (const Dcsc< IT, NT > &rhs)
 
 ~Dcsc ()
 
bool operator== (const Dcsc< IT, NT > &rhs)
 
template<typename NNT >
 operator Dcsc< IT, NNT > () const
 
template<typename NIT , typename NNT >
 operator Dcsc< NIT, NNT > () const
 
void EWiseMult (const Dcsc< IT, NT > &rhs, bool exclude)
 
void SetDifference (const Dcsc< IT, NT > &rhs)
 
void EWiseScale (NT **scaler)
 
template<typename _UnaryOperation >
void Apply (_UnaryOperation __unary_op)
 
template<typename _UnaryOperation , typename GlobalIT >
Dcsc< IT, NT > * PruneI (_UnaryOperation __unary_op, bool inPlace, GlobalIT rowOffset, GlobalIT colOffset)
 
template<typename _UnaryOperation >
Dcsc< IT, NT > * Prune (_UnaryOperation __unary_op, bool inPlace)
 
template<typename _BinaryOperation >
Dcsc< IT, NT > * PruneColumn (NT *pvals, _BinaryOperation __binary_op, bool inPlace)
 
template<typename _BinaryOperation >
Dcsc< IT, NT > * PruneColumn (IT *pinds, NT *pvals, _BinaryOperation __binary_op, bool inPlace)
 
void PruneColumnByIndex (const std::vector< IT > &ci)
 
IT AuxIndex (const IT colind, bool &found, IT *aux, IT csize) const
 
void RowSplit (int numsplits)
 
void ColSplit (std::vector< Dcsc< IT, NT > * > &parts, std::vector< IT > &cuts)
 
void ColConcatenate (std::vector< Dcsc< IT, NT > * > &parts, std::vector< IT > &offsets)
 
void Split (Dcsc< IT, NT > *&A, Dcsc< IT, NT > *&B, IT cut)
 
void Merge (const Dcsc< IT, NT > *Adcsc, const Dcsc< IT, NT > *B, IT cut)
 
IT ConstructAux (IT ndim, IT *&aux) const
 
void Resize (IT nzcnew, IT nznew)
 
template<class VT >
void FillColInds (const VT *colnums, IT nind, std::vector< std::pair< IT, IT > > &colinds, IT *aux, IT csize) const
 
Dcsc< IT, NT > & AddAndAssign (StackEntry< NT, std::pair< IT, IT > > *multstack, IT mdim, IT ndim, IT nnz)
 
template<typename _BinaryOperation >
void UpdateDense (NT **array, _BinaryOperation __binary_op) const
 
 Dcsc (IT *_cp, IT *_jc, IT *_ir, NT *_numx, IT _nz, IT _nzc, bool _memowned=true)
 wrap object around pre-allocated arrays (possibly RDMA registered) More...
 
 Dcsc ()
 
 Dcsc (IT nnz, IT nzcol)
 
 Dcsc (IT nnz, const std::vector< IT > &indices, bool isRow)
 Create a logical matrix from (row/column) indices vector. More...
 
 Dcsc (StackEntry< NT, std::pair< IT, IT > > *multstack, IT mdim, IT ndim, IT nnz)
 
 Dcsc (const Dcsc< IT, NT > &rhs)
 
Dcsc< IT, NT > & operator= (const Dcsc< IT, NT > &rhs)
 
Dcsc< IT, NT > & operator+= (const Dcsc< IT, NT > &rhs)
 
 ~Dcsc ()
 
bool operator== (const Dcsc< IT, NT > &rhs)
 
template<typename NNT >
 operator Dcsc< IT, NNT > () const
 
template<typename NIT , typename NNT >
 operator Dcsc< NIT, NNT > () const
 
void EWiseMult (const Dcsc< IT, NT > &rhs, bool exclude)
 
void SetDifference (const Dcsc< IT, NT > &rhs)
 
void EWiseScale (NT **scaler)
 
template<typename _UnaryOperation >
void Apply (_UnaryOperation __unary_op)
 
template<typename _UnaryOperation , typename GlobalIT >
Dcsc< IT, NT > * PruneI (_UnaryOperation __unary_op, bool inPlace, GlobalIT rowOffset, GlobalIT colOffset)
 
template<typename _UnaryOperation >
Dcsc< IT, NT > * Prune (_UnaryOperation __unary_op, bool inPlace)
 
template<typename _BinaryOperation >
Dcsc< IT, NT > * PruneColumn (NT *pvals, _BinaryOperation __binary_op, bool inPlace)
 
template<typename _BinaryOperation >
Dcsc< IT, NT > * PruneColumn (IT *pinds, NT *pvals, _BinaryOperation __binary_op, bool inPlace)
 
void PruneColumnByIndex (const std::vector< IT > &ci)
 
IT AuxIndex (const IT colind, bool &found, IT *aux, IT csize) const
 
void RowSplit (int numsplits)
 
void ColSplit (std::vector< Dcsc< IT, NT > * > &parts, std::vector< IT > &cuts)
 
void ColConcatenate (std::vector< Dcsc< IT, NT > * > &parts, std::vector< IT > &offsets)
 
void Split (Dcsc< IT, NT > *&A, Dcsc< IT, NT > *&B, IT cut)
 
void Merge (const Dcsc< IT, NT > *Adcsc, const Dcsc< IT, NT > *B, IT cut)
 
IT ConstructAux (IT ndim, IT *&aux) const
 
void Resize (IT nzcnew, IT nznew)
 
template<class VT >
void FillColInds (const VT *colnums, IT nind, std::vector< std::pair< IT, IT > > &colinds, IT *aux, IT csize) const
 
Dcsc< IT, NT > & AddAndAssign (StackEntry< NT, std::pair< IT, IT > > *multstack, IT mdim, IT ndim, IT nnz)
 
template<typename _BinaryOperation >
void UpdateDense (NT **array, _BinaryOperation __binary_op) const
 
 Dcsc (IT *_cp, IT *_jc, IT *_ir, NT *_numx, IT _nz, IT _nzc, bool _memowned=true)
 wrap object around pre-allocated arrays (possibly RDMA registered) More...
 
 Dcsc ()
 
 Dcsc (IT nnz, IT nzcol)
 
 Dcsc (IT nnz, const std::vector< IT > &indices, bool isRow)
 Create a logical matrix from (row/column) indices vector. More...
 
 Dcsc (StackEntry< NT, std::pair< IT, IT > > *multstack, IT mdim, IT ndim, IT nnz)
 
 Dcsc (const Dcsc< IT, NT > &rhs)
 
Dcsc< IT, NT > & operator= (const Dcsc< IT, NT > &rhs)
 
Dcsc< IT, NT > & operator+= (const Dcsc< IT, NT > &rhs)
 
 ~Dcsc ()
 
bool operator== (const Dcsc< IT, NT > &rhs)
 
template<typename NNT >
 operator Dcsc< IT, NNT > () const
 
template<typename NIT , typename NNT >
 operator Dcsc< NIT, NNT > () const
 
void EWiseMult (const Dcsc< IT, NT > &rhs, bool exclude)
 
void SetDifference (const Dcsc< IT, NT > &rhs)
 
void EWiseScale (NT **scaler)
 
template<typename _UnaryOperation >
void Apply (_UnaryOperation __unary_op)
 
template<typename _UnaryOperation , typename GlobalIT >
Dcsc< IT, NT > * PruneI (_UnaryOperation __unary_op, bool inPlace, GlobalIT rowOffset, GlobalIT colOffset)
 
template<typename _UnaryOperation >
Dcsc< IT, NT > * Prune (_UnaryOperation __unary_op, bool inPlace)
 
template<typename _BinaryOperation >
Dcsc< IT, NT > * PruneColumn (NT *pvals, _BinaryOperation __binary_op, bool inPlace)
 
template<typename _BinaryOperation >
Dcsc< IT, NT > * PruneColumn (IT *pinds, NT *pvals, _BinaryOperation __binary_op, bool inPlace)
 
void PruneColumnByIndex (const std::vector< IT > &ci)
 
IT AuxIndex (const IT colind, bool &found, IT *aux, IT csize) const
 
void RowSplit (int numsplits)
 
void ColSplit (std::vector< Dcsc< IT, NT > * > &parts, std::vector< IT > &cuts)
 
void ColConcatenate (std::vector< Dcsc< IT, NT > * > &parts, std::vector< IT > &offsets)
 
void Split (Dcsc< IT, NT > *&A, Dcsc< IT, NT > *&B, IT cut)
 
void Merge (const Dcsc< IT, NT > *Adcsc, const Dcsc< IT, NT > *B, IT cut)
 
IT ConstructAux (IT ndim, IT *&aux) const
 
void Resize (IT nzcnew, IT nznew)
 
template<class VT >
void FillColInds (const VT *colnums, IT nind, std::vector< std::pair< IT, IT > > &colinds, IT *aux, IT csize) const
 
Dcsc< IT, NT > & AddAndAssign (StackEntry< NT, std::pair< IT, IT > > *multstack, IT mdim, IT ndim, IT nnz)
 
template<typename _BinaryOperation >
void UpdateDense (NT **array, _BinaryOperation __binary_op) const
 
 Dcsc (IT *_cp, IT *_jc, IT *_ir, NT *_numx, IT _nz, IT _nzc, bool _memowned=true)
 wrap object around pre-allocated arrays (possibly RDMA registered) More...
 

Public Attributes

ITcp
 The master array, size nzc+1 (keeps column pointers) More...
 
ITjc
 col indices, size nzc More...
 
ITir
 row indices, size nz More...
 
NTnumx
 generic values, size nz More...
 
IT nz
 
IT nzc
 number of columns with at least one non-zero in them More...
 
bool memowned
 

Friends

template<typename IU , typename NU1 , typename NU2 >
Dcsc< IU, typename promote_trait< NU1, NU2 >::T_promote > EWiseMult (const Dcsc< IU, NU1 > &A, const Dcsc< IU, NU2 > *B, bool exclude)
 
template<typename IU , typename NU1 , typename NU2 >
Dcsc< IU, typename promote_trait< NU1, NU2 >::T_promote > SetDifference (const Dcsc< IU, NU1 > &A, const Dcsc< IU, NU2 > *B)
 
template<typename IU , typename NU1 , typename NU2 >
Dcsc< IU, typename promote_trait< NU1, NU2 >::T_promote > EWiseMult (const Dcsc< IU, NU1 > &A, const Dcsc< IU, NU2 > *B, bool exclude)
 
template<typename IU , typename NU1 , typename NU2 >
Dcsc< IU, typename promote_trait< NU1, NU2 >::T_promote > SetDifference (const Dcsc< IU, NU1 > &A, const Dcsc< IU, NU2 > *B)
 
template<typename IU , typename NU1 , typename NU2 >
Dcsc< IU, typename promote_trait< NU1, NU2 >::T_promote > EWiseMult (const Dcsc< IU, NU1 > &A, const Dcsc< IU, NU2 > *B, bool exclude)
 
template<typename IU , typename NU1 , typename NU2 >
Dcsc< IU, typename promote_trait< NU1, NU2 >::T_promote > SetDifference (const Dcsc< IU, NU1 > &A, const Dcsc< IU, NU2 > *B)
 

Detailed Description

template<class IT, class NT>
class combblas::Dcsc< IT, NT >

Definition at line 47 of file dcsc.h.

Member Typedef Documentation

◆ index_type [1/3]

template<class IT , class NT >
typedef IT combblas::Dcsc< IT, NT >::index_type

Definition at line 51 of file dcsc.h.

◆ index_type [2/3]

template<class IT , class NT >
typedef IT combblas::Dcsc< IT, NT >::index_type

Definition at line 51 of file dcsc.h.

◆ index_type [3/3]

template<class IT , class NT >
typedef IT combblas::Dcsc< IT, NT >::index_type

Definition at line 51 of file dcsc.h.

◆ value_type [1/3]

template<class IT , class NT >
typedef NT combblas::Dcsc< IT, NT >::value_type

Definition at line 50 of file dcsc.h.

◆ value_type [2/3]

template<class IT , class NT >
typedef NT combblas::Dcsc< IT, NT >::value_type

Definition at line 50 of file dcsc.h.

◆ value_type [3/3]

template<class IT , class NT >
typedef NT combblas::Dcsc< IT, NT >::value_type

Definition at line 50 of file dcsc.h.

Constructor & Destructor Documentation

◆ Dcsc() [1/18]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::Dcsc

Definition at line 41 of file dcsc.cpp.

◆ Dcsc() [2/18]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::Dcsc ( IT  nnz,
IT  nzcol 
)

Definition at line 44 of file dcsc.cpp.

◆ Dcsc() [3/18]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::Dcsc ( IT  nnz,
const std::vector< IT > &  indices,
bool  isRow 
)

Create a logical matrix from (row/column) indices vector.

Create a logical matrix from (row/column) indices array

Remarks
This function should only be used for indexing
For these temporary matrices nz = nzc (which are both equal to nnz)

Definition at line 239 of file dcsc.cpp.

◆ Dcsc() [4/18]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::Dcsc ( StackEntry< NT, std::pair< IT, IT > > *  multstack,
IT  mdim,
IT  ndim,
IT  nnz 
)

Creates DCSC structure from an array of StackEntry's

Remarks
Complexity: O(nnz)

Definition at line 196 of file dcsc.cpp.

◆ Dcsc() [5/18]

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

Definition at line 297 of file dcsc.cpp.

◆ ~Dcsc() [1/3]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::~Dcsc

Definition at line 1346 of file dcsc.cpp.

◆ Dcsc() [6/18]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::Dcsc ( IT _cp,
IT _jc,
IT _ir,
NT _numx,
IT  _nz,
IT  _nzc,
bool  _memowned = true 
)
inline

wrap object around pre-allocated arrays (possibly RDMA registered)

Definition at line 121 of file dcsc.h.

◆ Dcsc() [7/18]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::Dcsc ( )

◆ Dcsc() [8/18]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::Dcsc ( IT  nnz,
IT  nzcol 
)

◆ Dcsc() [9/18]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::Dcsc ( IT  nnz,
const std::vector< IT > &  indices,
bool  isRow 
)

Create a logical matrix from (row/column) indices vector.

◆ Dcsc() [10/18]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::Dcsc ( StackEntry< NT, std::pair< IT, IT > > *  multstack,
IT  mdim,
IT  ndim,
IT  nnz 
)

◆ Dcsc() [11/18]

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

◆ ~Dcsc() [2/3]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::~Dcsc ( )

◆ Dcsc() [12/18]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::Dcsc ( IT _cp,
IT _jc,
IT _ir,
NT _numx,
IT  _nz,
IT  _nzc,
bool  _memowned = true 
)
inline

wrap object around pre-allocated arrays (possibly RDMA registered)

Definition at line 121 of file dcsc.h.

◆ Dcsc() [13/18]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::Dcsc ( )

◆ Dcsc() [14/18]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::Dcsc ( IT  nnz,
IT  nzcol 
)

◆ Dcsc() [15/18]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::Dcsc ( IT  nnz,
const std::vector< IT > &  indices,
bool  isRow 
)

Create a logical matrix from (row/column) indices vector.

◆ Dcsc() [16/18]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::Dcsc ( StackEntry< NT, std::pair< IT, IT > > *  multstack,
IT  mdim,
IT  ndim,
IT  nnz 
)

◆ Dcsc() [17/18]

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

◆ ~Dcsc() [3/3]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::~Dcsc ( )

◆ Dcsc() [18/18]

template<class IT , class NT >
combblas::Dcsc< IT, NT >::Dcsc ( IT _cp,
IT _jc,
IT _ir,
NT _numx,
IT  _nz,
IT  _nzc,
bool  _memowned = true 
)
inline

wrap object around pre-allocated arrays (possibly RDMA registered)

Definition at line 121 of file dcsc.h.

Member Function Documentation

◆ AddAndAssign() [1/3]

template<class IT , class NT >
Dcsc< IT, NT > & combblas::Dcsc< IT, NT >::AddAndAssign ( StackEntry< NT, std::pair< IT, IT > > *  multstack,
IT  mdim,
IT  ndim,
IT  nnz 
)

Definition at line 72 of file dcsc.cpp.

◆ AddAndAssign() [2/3]

template<class IT , class NT >
Dcsc< IT, NT > & combblas::Dcsc< IT, NT >::AddAndAssign ( StackEntry< NT, std::pair< IT, IT > > *  multstack,
IT  mdim,
IT  ndim,
IT  nnz 
)

◆ AddAndAssign() [3/3]

template<class IT , class NT >
Dcsc< IT, NT > & combblas::Dcsc< IT, NT >::AddAndAssign ( StackEntry< NT, std::pair< IT, IT > > *  multstack,
IT  mdim,
IT  ndim,
IT  nnz 
)

◆ Apply() [1/3]

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

Definition at line 78 of file dcsc.h.

◆ Apply() [2/3]

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

Definition at line 78 of file dcsc.h.

◆ Apply() [3/3]

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

Definition at line 78 of file dcsc.h.

◆ AuxIndex() [1/3]

template<class IT , class NT >
IT combblas::Dcsc< IT, NT >::AuxIndex ( const IT  colind,
bool &  found,
IT aux,
IT  csize 
) const

The first part of the indexing algorithm described in the IPDPS'08 paper

Parameters
[IT]colind {Column index to search} Find the column with colind. If it exists, return the position of it. It it doesn't exist, return value is undefined (implementation specific).

Definition at line 1084 of file dcsc.cpp.

◆ AuxIndex() [2/3]

template<class IT , class NT >
IT combblas::Dcsc< IT, NT >::AuxIndex ( const IT  colind,
bool &  found,
IT aux,
IT  csize 
) const

◆ AuxIndex() [3/3]

template<class IT , class NT >
IT combblas::Dcsc< IT, NT >::AuxIndex ( const IT  colind,
bool &  found,
IT aux,
IT  csize 
) const

◆ ColConcatenate() [1/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::ColConcatenate ( std::vector< Dcsc< IT, NT > * > &  parts,
std::vector< IT > &  offsets 
)
Precondition
{no member of "parts" is empty}
{there are at least 2 members} offsets arrays is "parallel to" parts array it shows the starts of column numbers

Definition at line 1239 of file dcsc.cpp.

◆ ColConcatenate() [2/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::ColConcatenate ( std::vector< Dcsc< IT, NT > * > &  parts,
std::vector< IT > &  offsets 
)

◆ ColConcatenate() [3/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::ColConcatenate ( std::vector< Dcsc< IT, NT > * > &  parts,
std::vector< IT > &  offsets 
)

◆ ColSplit() [1/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::ColSplit ( std::vector< Dcsc< IT, NT > * > &  parts,
std::vector< IT > &  cuts 
)

Split along the cut(s) in terms of column indices Should work even when one of the splits have no nonzeros at all vector<IT> cuts is of length "size(parts)-1"

Precondition
{ size(parts) >= 2}

Definition at line 1141 of file dcsc.cpp.

◆ ColSplit() [2/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::ColSplit ( std::vector< Dcsc< IT, NT > * > &  parts,
std::vector< IT > &  cuts 
)

◆ ColSplit() [3/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::ColSplit ( std::vector< Dcsc< IT, NT > * > &  parts,
std::vector< IT > &  cuts 
)

◆ ConstructAux() [1/3]

template<class IT , class NT >
IT combblas::Dcsc< IT, NT >::ConstructAux ( IT  ndim,
IT *&  aux 
) const
Todo:

Construct an index array called aux Return the size of the contructed array Complexity O(nzc)

Definition at line 983 of file dcsc.cpp.

◆ ConstructAux() [2/3]

template<class IT , class NT >
IT combblas::Dcsc< IT, NT >::ConstructAux ( IT  ndim,
IT *&  aux 
) const

◆ ConstructAux() [3/3]

template<class IT , class NT >
IT combblas::Dcsc< IT, NT >::ConstructAux ( IT  ndim,
IT *&  aux 
) const

◆ EWiseMult() [1/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::EWiseMult ( const Dcsc< IT, NT > &  rhs,
bool  exclude 
)
Parameters
[in]excludeif false,
then operation is A = A .* B
else operation is A = A .* not(B)

Definition at line 514 of file dcsc.cpp.

◆ EWiseMult() [2/3]

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

◆ EWiseMult() [3/3]

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

◆ EWiseScale() [1/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::EWiseScale ( NT **  scaler)

Definition at line 945 of file dcsc.cpp.

◆ EWiseScale() [2/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::EWiseScale ( NT **  scaler)

◆ EWiseScale() [3/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::EWiseScale ( NT **  scaler)

◆ FillColInds() [1/3]

template<class IT , class NT >
template<class VT >
void combblas::Dcsc< IT, NT >::FillColInds ( const VT *  colnums,
IT  nind,
std::vector< std::pair< IT, IT > > &  colinds,
IT aux,
IT  csize 
) const

param[in] nind { length(colsums), gives number of columns of A that contributes to C(:,i) } Vector type VT is allowed to be different than matrix type (IT) However, VT should be up-castable to IT (example: VT=int32_t, IT=int64_t)

Definition at line 1282 of file dcsc.cpp.

◆ FillColInds() [2/3]

template<class IT , class NT >
template<class VT >
void combblas::Dcsc< IT, NT >::FillColInds ( const VT *  colnums,
IT  nind,
std::vector< std::pair< IT, IT > > &  colinds,
IT aux,
IT  csize 
) const

◆ FillColInds() [3/3]

template<class IT , class NT >
template<class VT >
void combblas::Dcsc< IT, NT >::FillColInds ( const VT *  colnums,
IT  nind,
std::vector< std::pair< IT, IT > > &  colinds,
IT aux,
IT  csize 
) const

◆ Merge() [1/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::Merge ( const Dcsc< IT, NT > *  Adcsc,
const Dcsc< IT, NT > *  B,
IT  cut 
)
Todo:

Definition at line 1205 of file dcsc.cpp.

◆ Merge() [2/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::Merge ( const Dcsc< IT, NT > *  Adcsc,
const Dcsc< IT, NT > *  B,
IT  cut 
)

◆ Merge() [3/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::Merge ( const Dcsc< IT, NT > *  Adcsc,
const Dcsc< IT, NT > *  B,
IT  cut 
)

◆ operator Dcsc< IT, NNT >() [1/3]

template<class IT , class NT >
template<typename NNT >
combblas::Dcsc< IT, NT >::operator Dcsc< IT, NNT >

Definition at line 265 of file dcsc.cpp.

◆ operator Dcsc< IT, NNT >() [2/3]

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

◆ operator Dcsc< IT, NNT >() [3/3]

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

◆ operator Dcsc< NIT, NNT >() [1/3]

template<class IT , class NT >
template<typename NIT , typename NNT >
combblas::Dcsc< IT, NT >::operator Dcsc< NIT, NNT >

Definition at line 281 of file dcsc.cpp.

◆ operator Dcsc< NIT, NNT >() [2/3]

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

◆ operator Dcsc< NIT, NNT >() [3/3]

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

◆ operator+=() [1/3]

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

Definition at line 375 of file dcsc.cpp.

◆ operator+=() [2/3]

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

◆ operator+=() [3/3]

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

◆ operator=() [1/3]

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

Assignment operator (called on an existing object)

Definition at line 329 of file dcsc.cpp.

◆ operator=() [2/3]

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

◆ operator=() [3/3]

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

◆ operator==() [1/3]

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

Definition at line 473 of file dcsc.cpp.

◆ operator==() [2/3]

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

◆ operator==() [3/3]

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

◆ Prune() [1/3]

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

Definition at line 617 of file dcsc.cpp.

◆ Prune() [2/3]

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

◆ Prune() [3/3]

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

◆ PruneColumn() [1/6]

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

Definition at line 840 of file dcsc.cpp.

◆ PruneColumn() [2/6]

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

◆ PruneColumn() [3/6]

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

◆ PruneColumn() [4/6]

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

Definition at line 699 of file dcsc.cpp.

◆ PruneColumn() [5/6]

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

◆ PruneColumn() [6/6]

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

◆ PruneColumnByIndex() [1/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::PruneColumnByIndex ( const std::vector< IT > &  ci)

Definition at line 780 of file dcsc.cpp.

◆ PruneColumnByIndex() [2/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::PruneColumnByIndex ( const std::vector< IT > &  ci)

◆ PruneColumnByIndex() [3/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::PruneColumnByIndex ( const std::vector< IT > &  ci)

◆ PruneI() [1/3]

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

Definition at line 536 of file dcsc.cpp.

◆ PruneI() [2/3]

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

◆ PruneI() [3/3]

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

◆ Resize() [1/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::Resize ( IT  nzcnew,
IT  nznew 
)

Resizes cp & jc arrays to nzcnew, ir & numx arrays to nznew Zero overhead in case sizes stay the same

Definition at line 1017 of file dcsc.cpp.

◆ Resize() [2/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::Resize ( IT  nzcnew,
IT  nznew 
)

◆ Resize() [3/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::Resize ( IT  nzcnew,
IT  nznew 
)

◆ RowSplit() [1/3]

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

◆ RowSplit() [2/3]

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

◆ RowSplit() [3/3]

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

◆ SetDifference() [1/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::SetDifference ( const Dcsc< IT, NT > &  rhs)

operation is A = A .* not(B)

Definition at line 526 of file dcsc.cpp.

◆ SetDifference() [2/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::SetDifference ( const Dcsc< IT, NT > &  rhs)

◆ SetDifference() [3/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::SetDifference ( const Dcsc< IT, NT > &  rhs)

◆ Split() [1/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::Split ( Dcsc< IT, NT > *&  A,
Dcsc< IT, NT > *&  B,
IT  cut 
)

Split along the cut (a column index) Should work even when one of the splits have no nonzeros at all

Definition at line 1101 of file dcsc.cpp.

◆ Split() [2/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::Split ( Dcsc< IT, NT > *&  A,
Dcsc< IT, NT > *&  B,
IT  cut 
)

◆ Split() [3/3]

template<class IT , class NT >
void combblas::Dcsc< IT, NT >::Split ( Dcsc< IT, NT > *&  A,
Dcsc< IT, NT > *&  B,
IT  cut 
)

◆ UpdateDense() [1/3]

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

Updates entries of 2D dense array using __binary_op and entries of "this"

Precondition
{ __binary_op is a commutative operation}

Definition at line 964 of file dcsc.cpp.

◆ UpdateDense() [2/3]

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

◆ UpdateDense() [3/3]

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

Friends And Related Function Documentation

◆ EWiseMult [1/3]

template<class IT , class NT >
template<typename IU , typename NU1 , typename NU2 >
Dcsc< IU, typename promote_trait< NU1, NU2 >::T_promote > EWiseMult ( const Dcsc< IU, NU1 > &  A,
const Dcsc< IU, NU2 > *  B,
bool  exclude 
)
friend
Parameters
[in]excludeif false,
then operation is A = A .* B
else operation is A = A .* not(B)

Aydin (June 2021): exclude=true case of this function now calls SetDifference above, to remove code duplication

Definition at line 834 of file Friends.h.

◆ EWiseMult [2/3]

template<class IT , class NT >
template<typename IU , typename NU1 , typename NU2 >
Dcsc< IU, typename promote_trait< NU1, NU2 >::T_promote > EWiseMult ( const Dcsc< IU, NU1 > &  A,
const Dcsc< IU, NU2 > *  B,
bool  exclude 
)
friend
Parameters
[in]excludeif false,
then operation is A = A .* B
else operation is A = A .* not(B)

Aydin (June 2021): exclude=true case of this function now calls SetDifference above, to remove code duplication

Definition at line 834 of file Friends.h.

◆ EWiseMult [3/3]

template<class IT , class NT >
template<typename IU , typename NU1 , typename NU2 >
Dcsc< IU, typename promote_trait< NU1, NU2 >::T_promote > EWiseMult ( const Dcsc< IU, NU1 > &  A,
const Dcsc< IU, NU2 > *  B,
bool  exclude 
)
friend
Parameters
[in]excludeif false,
then operation is A = A .* B
else operation is A = A .* not(B)

Aydin (June 2021): exclude=true case of this function now calls SetDifference above, to remove code duplication

Definition at line 834 of file Friends.h.

◆ SetDifference [1/3]

template<class IT , class NT >
template<typename IU , typename NU1 , typename NU2 >
Dcsc< IU, typename promote_trait< NU1, NU2 >::T_promote > SetDifference ( const Dcsc< IU, NU1 > &  A,
const Dcsc< IU, NU2 > *  B 
)
friend

operation is A = A .* not(B)

Definition at line 748 of file Friends.h.

◆ SetDifference [2/3]

template<class IT , class NT >
template<typename IU , typename NU1 , typename NU2 >
Dcsc< IU, typename promote_trait< NU1, NU2 >::T_promote > SetDifference ( const Dcsc< IU, NU1 > &  A,
const Dcsc< IU, NU2 > *  B 
)
friend

operation is A = A .* not(B)

Definition at line 748 of file Friends.h.

◆ SetDifference [3/3]

template<class IT , class NT >
template<typename IU , typename NU1 , typename NU2 >
Dcsc< IU, typename promote_trait< NU1, NU2 >::T_promote > SetDifference ( const Dcsc< IU, NU1 > &  A,
const Dcsc< IU, NU2 > *  B 
)
friend

operation is A = A .* not(B)

Definition at line 748 of file Friends.h.

Member Data Documentation

◆ cp

template<class IT , class NT >
IT * combblas::Dcsc< IT, NT >::cp

The master array, size nzc+1 (keeps column pointers)

Definition at line 124 of file dcsc.h.

◆ ir

template<class IT , class NT >
IT * combblas::Dcsc< IT, NT >::ir

row indices, size nz

Definition at line 126 of file dcsc.h.

◆ jc

template<class IT , class NT >
IT * combblas::Dcsc< IT, NT >::jc

col indices, size nzc

Definition at line 125 of file dcsc.h.

◆ memowned

template<class IT , class NT >
bool combblas::Dcsc< IT, NT >::memowned

Definition at line 131 of file dcsc.h.

◆ numx

template<class IT , class NT >
NT * combblas::Dcsc< IT, NT >::numx

generic values, size nz

Definition at line 127 of file dcsc.h.

◆ nz

template<class IT , class NT >
IT combblas::Dcsc< IT, NT >::nz

Definition at line 129 of file dcsc.h.

◆ nzc

template<class IT , class NT >
IT combblas::Dcsc< IT, NT >::nzc

number of columns with at least one non-zero in them

Definition at line 130 of file dcsc.h.


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