Package org.apache.sysds.runtime.compress.colgroup

## 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`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Method Detail

    - #### getCompType

          public AColGroup.CompressionType getCompType()

      Description copied from class: `AColGroup`
      Obtain the compression type.
      Specified by:
        `getCompType` in class `AColGroup`
      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.
      Specified by:
        `getIdx` in class `AColGroup`
      Parameters:
        `r` - row
        `colIdx` - column index in the _colIndexes.
      Returns:
        value at the row/column index position

    - #### getCounts

          public int[] getCounts​(int[] counts)

      Specified by:
        `getCounts` in class `AColGroupValue`

    - #### 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 class `AColGroup`
      Parameters:
        `matrix` - The matrix to multiply with on the left
        `result` - The result to output the values into, always dense for the purpose of the column groups parallelizing
        `rl` - The row to begin the multiplication from on the lhs matrix
        `ru` - The row to end the multiplication at on the lhs matrix
        `cl` - The column to begin the multiplication from on the lhs matrix
        `cu` - 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 class `APreAgg`
      Parameters:
        `m` - The matrix to preAggregate
        `preAgg` - The preAggregate target
        `rl` - Row lower on the left side matrix
        `ru` - Row upper on the left side matrix
        `cl` - 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 class `APreAgg`

    - #### 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 class `AColGroupValue`
      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 class `AColGroup`
      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 class `AColGroup`

    - #### binaryRowOpLeft

          public AColGroup binaryRowOpLeft​(BinaryOperator op,
                                           double[] v,
                                           boolean isRowSafe)

      Description copied from class: `AColGroup`
      Perform a binary row operation.
      Specified by:
        `binaryRowOpLeft` in class `AColGroup`
      Parameters:
        `op` - The operation to execute
        `v` - 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 class `AColGroup`
      Parameters:
        `op` - The operation to execute
        `v` - 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 class `AColGroupValue`
      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 class `AColGroupValue`
      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 class `AColGroupValue`
      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.
      Specified by:
        `getCost` in class `AColGroup`
      Parameters:
        `e` - The computation cost estimator
        `nRows` - the number of rows in the column group
      Returns:
        The cost of this column group

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `AColGroupValue`