COMBINATORIAL_BLAS 1.6
 
Loading...
Searching...
No Matches
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.
 
 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)
 
 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.
 
 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)
 
 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.
 
 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)
 

Public Attributes

ITcp
 The master array, size nzc+1 (keeps column pointers)
 
ITjc
 col indices, size nzc
 
ITir
 row indices, size nz
 
NTnumx
 generic values, size nz
 
IT nz
 
IT nzc
 number of columns with at least one non-zero in them
 
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 >
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 >
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 >
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 > ( ) const

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 > ( ) const

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 >
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 >
Dcsc< IT, NT > * combblas::Dcsc< IT, NT >::Prune ( _UnaryOperation  __unary_op,
bool  inPlace 
)

◆ Prune() [3/3]

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

◆ PruneColumn() [1/6]

template<class IT , class NT >
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 >
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 >
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 >
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 >
Dcsc< IT, NT > * combblas::Dcsc< IT, NT >::PruneColumn ( NT pvals,
_BinaryOperation  __binary_op,
bool  inPlace 
)

◆ PruneColumn() [6/6]

template<class IT , class NT >
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 >
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 >
void combblas::Dcsc< IT, NT >::UpdateDense ( NT **  array,
_BinaryOperation  __binary_op 
) const

◆ UpdateDense() [3/3]

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

Friends And Related Symbol 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: