Class ColGroupDDC
- java.lang.Object
-
- org.apache.sysds.runtime.compress.colgroup.AColGroup
-
- org.apache.sysds.runtime.compress.colgroup.AColGroupCompressed
-
- org.apache.sysds.runtime.compress.colgroup.AColGroupValue
-
- org.apache.sysds.runtime.compress.colgroup.APreAgg
-
- org.apache.sysds.runtime.compress.colgroup.ColGroupDDC
-
- All Implemented Interfaces:
Serializable
,Cloneable
- Direct Known Subclasses:
ColGroupDeltaDDC
public class ColGroupDDC extends APreAgg
Class to encapsulate information about a column group that is encoded with dense dictionary encoding (DDC).- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.sysds.runtime.compress.colgroup.AColGroup
AColGroup.CompressionType
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description AColGroup
binaryRowOpLeft(BinaryOperator op, double[] v, boolean isRowSafe)
Perform a binary row operation.AColGroup
binaryRowOpRight(BinaryOperator op, double[] v, boolean isRowSafe)
Perform a binary row operation.long
estimateInMemorySize()
Get the upper bound estimate of in memory allocation for the column group.org.apache.sysds.runtime.compress.colgroup.AColGroup.ColGroupType
getColGroupType()
AColGroup.CompressionType
getCompType()
Obtain the compression type.double
getCost(ComputationCostEstimator e, int nRows)
Get the computation cost associated with this column group.int[]
getCounts(int[] counts)
long
getExactSizeOnDisk()
Returns the exact serialized size of column group.double
getIdx(int r, int colIdx)
Get the value at a colGroup specific row/column index position.void
leftMultByMatrixNoPreAgg(MatrixBlock matrix, MatrixBlock result, int rl, int ru, int cl, int cu)
Left multiply with this column group.void
preAggregateDense(MatrixBlock m, double[] preAgg, int rl, int ru, int cl, int cu)
Pre aggregate a dense matrix block into a pre aggregate target (first step of left matrix multiplication)void
preAggregateSparse(SparseBlock sb, double[] preAgg, int rl, int ru)
void
preAggregateThatDDCStructure(ColGroupDDC that, Dictionary ret)
void
preAggregateThatSDCSingleZerosStructure(ColGroupSDCSingleZeros that, Dictionary ret)
void
preAggregateThatSDCZerosStructure(ColGroupSDCZeros that, Dictionary ret)
void
readFields(DataInput in)
Deserialize column group from data input.boolean
sameIndexStructure(AColGroupCompressed that)
AColGroup
scalarOperation(ScalarOperator op)
Perform the specified scalar operation directly on the compressed column group, without decompressing individual cells if possible.String
toString()
AColGroup
unaryOperation(UnaryOperator op)
void
write(DataOutput out)
Serializes column group to data output.-
Methods inherited from class org.apache.sysds.runtime.compress.colgroup.APreAgg
getPreAggregateSize, leftMultByAColGroup, mmWithDictionary, preAggregate, preAggregateThatIndexStructure, tsmmAColGroup
-
Methods inherited from class org.apache.sysds.runtime.compress.colgroup.AColGroupValue
centralMoment, computeColSums, containsValue, copy, decompressToDenseBlock, decompressToSparseBlock, forceMatrixBlockDictionary, getCachedCounts, getCounts, getDictionary, getNumberNonZeros, getNumValues, replace, rexpandCols, rightMultByMatrix
-
Methods inherited from class org.apache.sysds.runtime.compress.colgroup.AColGroupCompressed
getMax, getMin, preAggRows, tsmm, unaryAggregateOperations, unaryAggregateOperations
-
Methods inherited from class org.apache.sysds.runtime.compress.colgroup.AColGroup
colSum, decompressToDenseBlock, decompressToSparseBlock, get, getColIndices, getNumCols, shiftColIndices, sliceColumn, sliceColumns
-
-
-
-
Method Detail
-
getCompType
public AColGroup.CompressionType getCompType()
Description copied from class:AColGroup
Obtain the compression type.- Specified by:
getCompType
in classAColGroup
- Returns:
- How the elements of the column group are compressed.
-
getIdx
public double getIdx(int r, int colIdx)
Description copied from class:AColGroup
Get the value at a colGroup specific row/column index position.
-
getCounts
public int[] getCounts(int[] counts)
- Specified by:
getCounts
in classAColGroupValue
-
leftMultByMatrixNoPreAgg
public void leftMultByMatrixNoPreAgg(MatrixBlock matrix, MatrixBlock result, int rl, int ru, int cl, int cu)
Description copied from class:AColGroup
Left multiply with this column group.- Specified by:
leftMultByMatrixNoPreAgg
in classAColGroup
- Parameters:
matrix
- The matrix to multiply with on the leftresult
- The result to output the values into, always dense for the purpose of the column groups parallelizingrl
- The row to begin the multiplication from on the lhs matrixru
- The row to end the multiplication at on the lhs matrixcl
- The column to begin the multiplication from on the lhs matrixcu
- The column to end the multiplication at on the lhs matrix
-
preAggregateDense
public void preAggregateDense(MatrixBlock m, double[] preAgg, int rl, int ru, int cl, int cu)
Description copied from class:APreAgg
Pre aggregate a dense matrix block into a pre aggregate target (first step of left matrix multiplication)- Specified by:
preAggregateDense
in classAPreAgg
- Parameters:
m
- The matrix to preAggregatepreAgg
- The preAggregate targetrl
- Row lower on the left side matrixru
- Row upper on the left side matrixcl
- Column lower on the left side matrix (or row lower in the column group)cu
- Column upper on the left side matrix (or row upper in the column group)
-
preAggregateSparse
public void preAggregateSparse(SparseBlock sb, double[] preAgg, int rl, int ru)
- Specified by:
preAggregateSparse
in classAPreAgg
-
preAggregateThatDDCStructure
public void preAggregateThatDDCStructure(ColGroupDDC that, Dictionary ret)
-
preAggregateThatSDCZerosStructure
public void preAggregateThatSDCZerosStructure(ColGroupSDCZeros that, Dictionary ret)
-
preAggregateThatSDCSingleZerosStructure
public void preAggregateThatSDCSingleZerosStructure(ColGroupSDCSingleZeros that, Dictionary ret)
-
sameIndexStructure
public boolean sameIndexStructure(AColGroupCompressed that)
-
getColGroupType
public org.apache.sysds.runtime.compress.colgroup.AColGroup.ColGroupType getColGroupType()
-
estimateInMemorySize
public long estimateInMemorySize()
Description copied from class:AColGroup
Get the upper bound estimate of in memory allocation for the column group.- Overrides:
estimateInMemorySize
in classAColGroupValue
- Returns:
- an upper bound on the number of bytes used to store this ColGroup in memory.
-
scalarOperation
public AColGroup scalarOperation(ScalarOperator op)
Description copied from class:AColGroup
Perform the specified scalar operation directly on the compressed column group, without decompressing individual cells if possible.- Specified by:
scalarOperation
in classAColGroup
- Parameters:
op
- operation to perform- Returns:
- version of this column group with the operation applied
-
unaryOperation
public AColGroup unaryOperation(UnaryOperator op)
- Specified by:
unaryOperation
in classAColGroup
-
binaryRowOpLeft
public AColGroup binaryRowOpLeft(BinaryOperator op, double[] v, boolean isRowSafe)
Description copied from class:AColGroup
Perform a binary row operation.- Specified by:
binaryRowOpLeft
in classAColGroup
- Parameters:
op
- The operation to executev
- The vector of values to apply, should be same length as dictionary length.isRowSafe
- True if the binary op is applied to an entire zero row and all results are zero- Returns:
- A updated column group with the new values.
-
binaryRowOpRight
public AColGroup binaryRowOpRight(BinaryOperator op, double[] v, boolean isRowSafe)
Description copied from class:AColGroup
Perform a binary row operation.- Specified by:
binaryRowOpRight
in classAColGroup
- Parameters:
op
- The operation to executev
- The vector of values to apply, should be same length as dictionary length.isRowSafe
- True if the binary op is applied to an entire zero row and all results are zero- Returns:
- A updated column group with the new values.
-
write
public void write(DataOutput out) throws IOException
Description copied from class:AColGroup
Serializes column group to data output.- Overrides:
write
in classAColGroupValue
- Parameters:
out
- data output- Throws:
IOException
- if IOException occurs
-
readFields
public void readFields(DataInput in) throws IOException
Description copied from class:AColGroup
Deserialize column group from data input.- Overrides:
readFields
in classAColGroupValue
- Parameters:
in
- data input- Throws:
IOException
- if IOException occurs
-
getExactSizeOnDisk
public long getExactSizeOnDisk()
Description copied from class:AColGroup
Returns the exact serialized size of column group. This can be used for example for buffer preallocation.- Overrides:
getExactSizeOnDisk
in classAColGroupValue
- Returns:
- exact serialized size for column group
-
getCost
public double getCost(ComputationCostEstimator e, int nRows)
Description copied from class:AColGroup
Get the computation cost associated with this column group.
-
toString
public String toString()
- Overrides:
toString
in classAColGroupValue
-
-