46 template <
class IT,
class NT>
53 Dcsc (IT nnz, IT nzcol);
55 Dcsc (IT nnz,
const std::vector<IT> & indices,
bool isRow);
56 Dcsc (
StackEntry<NT, std::pair<IT,IT> > * multstack, IT mdim, IT ndim, IT nnz);
65 template <
typename NIT,
typename NNT>
operator Dcsc<NIT,NNT>()
const;
70 template <
typename IU,
typename NU1,
typename NU2>
73 template <
typename _UnaryOperation>
74 void Apply(_UnaryOperation __unary_op)
78 #pragma omp parallel for 80 for(IT i=0; i <
nz; ++i)
85 template <
typename _UnaryOperation,
typename GlobalIT>
86 Dcsc<IT,NT>*
PruneI(_UnaryOperation __unary_op,
bool inPlace, GlobalIT rowOffset, GlobalIT colOffset);
87 template <
typename _UnaryOperation>
89 template <
typename _BinaryOperation>
91 template <
typename _BinaryOperation>
95 IT
AuxIndex(
const IT colind,
bool & found, IT * aux, IT csize)
const;
105 void Resize(IT nzcnew, IT nznew);
108 void FillColInds(
const VT * colnums, IT nind, std::vector< std::pair<IT,IT> > & colinds, IT * aux, IT csize)
const;
112 template <
typename _BinaryOperation>
113 void UpdateDense(NT ** array, _BinaryOperation __binary_op)
const;
116 Dcsc (IT * _cp, IT * _jc, IT * _ir, NT * _numx, IT _nz, IT _nzc,
bool _memowned =
true)
129 void getindices (
StackEntry<NT, std::pair<IT,IT> > * multstack, IT & rindex, IT & cindex, IT & j, IT nnz);
void RowSplit(int numsplits)
void EWiseScale(NT **scaler)
Dcsc< IT, NT > * PruneColumn(NT *pvals, _BinaryOperation __binary_op, bool inPlace)
void Apply(_UnaryOperation __unary_op)
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)
void Resize(IT nzcnew, IT nznew)
IT * ir
row indices, size nz
void EWiseMult(const Dcsc< IT, NT > &rhs, bool exclude)
IT * cp
The master array, size nzc+1 (keeps column pointers)
void Merge(const Dcsc< IT, NT > *Adcsc, const Dcsc< IT, NT > *B, IT cut)
void FillColInds(const VT *colnums, IT nind, std::vector< std::pair< IT, IT > > &colinds, IT *aux, IT csize) const
Dcsc< IT, NT > * Prune(_UnaryOperation __unary_op, bool inPlace)
void ColSplit(std::vector< Dcsc< IT, NT > * > &parts, std::vector< IT > &cuts)
bool operator==(const Dcsc< IT, NT > &rhs)
IT AuxIndex(const IT colind, bool &found, IT *aux, IT csize) const
void ColConcatenate(std::vector< Dcsc< IT, NT > * > &parts, std::vector< IT > &offsets)
void UpdateDense(NT **array, _BinaryOperation __binary_op) const
Dcsc< IT, NT > & operator+=(const Dcsc< IT, NT > &rhs)
NT * numx
generic values, size nz
IT nzc
number of columns with at least one non-zero in them
IT ConstructAux(IT ndim, IT *&aux) const
Dcsc< IT, NT > * PruneI(_UnaryOperation __unary_op, bool inPlace, GlobalIT rowOffset, GlobalIT colOffset)
IT * jc
col indices, size nzc
Dcsc< IT, NT > & operator=(const Dcsc< IT, NT > &rhs)
Dcsc< IT, NT > & AddAndAssign(StackEntry< NT, std::pair< IT, IT > > *multstack, IT mdim, IT ndim, IT nnz)
void Split(Dcsc< IT, NT > *&A, Dcsc< IT, NT > *&B, IT cut)