Class Aggregation128Utils

java.lang.Object
ai.rapids.cudf.Aggregation128Utils

public class Aggregation128Utils extends Object
Utility methods for breaking apart and reassembling 128-bit values during aggregations to enable hash-based aggregations and detect overflows.
  • Constructor Details

    • Aggregation128Utils

      public Aggregation128Utils()
  • Method Details

    • extractInt32Chunk

      public static ColumnVector extractInt32Chunk(ColumnView col, DType outType, int chunkIdx)
      Extract a 32-bit chunk from a 128-bit value.
      Parameters:
      col - column of 128-bit values (e.g.: DECIMAL128)
      outType - integer type to use for the output column (e.g.: UINT32 or INT32)
      chunkIdx - index of the 32-bit chunk to extract where 0 is the least significant chunk and 3 is the most significant chunk
      Returns:
      column containing the specified 32-bit chunk of the input column values. A null input row will result in a corresponding null output row.
    • combineInt64SumChunks

      public static Table combineInt64SumChunks(Table chunks, DType type)
      Reassemble a column of 128-bit values from a table of four 64-bit integer columns and check for overflow. The 128-bit value is reconstructed by overlapping the 64-bit values by 32-bits. The least significant 32-bits of the least significant 64-bit value are used directly as the least significant 32-bits of the final 128-bit value, and the remaining 32-bits are added to the next most significant 64-bit value. The lower 32-bits of that sum become the next most significant 32-bits in the final 128-bit value, and the remaining 32-bits are added to the next most significant 64-bit input value, and so on.
      Parameters:
      chunks - table of four 64-bit integer columns with the columns ordered from least significant to most significant. The last column must be of type INT64.
      type - the type to use for the resulting 128-bit value column
      Returns:
      table containing a boolean column and a 128-bit value column of the requested type. The boolean value will be true if an overflow was detected for that row's value when it was reassembled. A null input row will result in a corresponding null output row.