libcudf  23.12.00
Files | Enumerations | Functions

Files

file  reduction.hpp
 

Enumerations

enum class  cudf::scan_type : bool { INCLUSIVE , EXCLUSIVE }
 Enum to describe scan operation type.
 

Functions

std::unique_ptr< scalarcudf::reduce (column_view const &col, reduce_aggregation const &agg, data_type output_dtype, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
 Computes the reduction of the values in all rows of a column. More...
 
std::unique_ptr< scalarcudf::reduce (column_view const &col, reduce_aggregation const &agg, data_type output_dtype, std::optional< std::reference_wrapper< scalar const >> init, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
 Computes the reduction of the values in all rows of a column with an initial value. More...
 
std::unique_ptr< columncudf::segmented_reduce (column_view const &segmented_values, device_span< size_type const > offsets, segmented_reduce_aggregation const &agg, data_type output_dtype, null_policy null_handling, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
 Compute reduction of each segment in the input column. More...
 
std::unique_ptr< columncudf::segmented_reduce (column_view const &segmented_values, device_span< size_type const > offsets, segmented_reduce_aggregation const &agg, data_type output_dtype, null_policy null_handling, std::optional< std::reference_wrapper< scalar const >> init, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
 Compute reduction of each segment in the input column with an initial value. Only SUM, PRODUCT, MIN, MAX, ANY, and ALL aggregations are supported. More...
 
std::unique_ptr< columncudf::scan (column_view const &input, scan_aggregation const &agg, scan_type inclusive, null_policy null_handling=null_policy::EXCLUDE, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
 Computes the scan of a column. More...
 
std::pair< std::unique_ptr< scalar >, std::unique_ptr< scalar > > cudf::minmax (column_view const &col, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
 Determines the minimum and maximum values of a column. More...
 

Detailed Description

Function Documentation

◆ minmax()

std::pair<std::unique_ptr<scalar>, std::unique_ptr<scalar> > cudf::minmax ( column_view const &  col,
rmm::mr::device_memory_resource mr = rmm::mr::get_current_device_resource() 
)

Determines the minimum and maximum values of a column.

Parameters
colcolumn to compute minmax
mrDevice memory resource used to allocate the returned column's device memory
Returns
A std::pair of scalars with the first scalar being the minimum value and the second scalar being the maximum value of the input column.

◆ reduce() [1/2]

std::unique_ptr<scalar> cudf::reduce ( column_view const &  col,
reduce_aggregation const &  agg,
data_type  output_dtype,
rmm::mr::device_memory_resource mr = rmm::mr::get_current_device_resource() 
)

Computes the reduction of the values in all rows of a column.

This function does not detect overflows in reductions. When output_dtype does not match the col.type(), their values may be promoted to int64_t or double for computing aggregations and then cast to output_dtype before returning.

Only min and max ops are supported for reduction of non-arithmetic types (e.g. timestamp or string).

Any null values are skipped for the operation.

If the column is empty or contains all null entries col.size()==col.null_count(), the output scalar value will be false for reduction type any and true for reduction type all. For all other reductions, the output scalar returns with is_valid()==false.

If the input column is an arithmetic type, the output_dtype can be any arithmetic type. If the input column is a non-arithmetic type (e.g. timestamp or string) the output_dtype must match the col.type(). If the reduction type is any or all, the output_dtype must be type BOOL8.

If the reduction fails, the output scalar returns with is_valid()==false.

Exceptions
cudf::logic_errorif reduction is called for non-arithmetic output type and operator other than min and max.
cudf::logic_errorif input column data type is not convertible to output_dtype.
cudf::logic_errorif min or max reduction is called and the output type does not match the input column data type.
cudf::logic_errorif any or all reduction is called and the output type is not BOOL8.
cudf::logic_errorif mean, var, or std reduction is called and the output_dtype is not floating point.
Parameters
colInput column view
aggAggregation operator applied by the reduction
output_dtypeThe output scalar type
mrDevice memory resource used to allocate the returned scalar's device memory
Returns
Output scalar with reduce result

◆ reduce() [2/2]

std::unique_ptr<scalar> cudf::reduce ( column_view const &  col,
reduce_aggregation const &  agg,
data_type  output_dtype,
std::optional< std::reference_wrapper< scalar const >>  init,
rmm::mr::device_memory_resource mr = rmm::mr::get_current_device_resource() 
)

Computes the reduction of the values in all rows of a column with an initial value.

Only sum, product, min, max, any, and all reductions are supported.

Exceptions
cudf::logic_errorif reduction is not sum, product, min, max, any, or all and init is specified.
Parameters
colInput column view
aggAggregation operator applied by the reduction
output_dtypeThe output scalar type
initThe initial value of the reduction
mrDevice memory resource used to allocate the returned scalar's device memory
Returns
Output scalar with reduce result

◆ scan()

std::unique_ptr<column> cudf::scan ( column_view const &  input,
scan_aggregation const &  agg,
scan_type  inclusive,
null_policy  null_handling = null_policy::EXCLUDE,
rmm::mr::device_memory_resource mr = rmm::mr::get_current_device_resource() 
)

Computes the scan of a column.

The null values are skipped for the operation, and if an input element at i is null, then the output element at i will also be null.

Exceptions
cudf::logic_errorif column datatype is not numeric type.
Parameters
[in]inputThe input column view for the scan
[in]aggunique_ptr to aggregation operator applied by the scan
[in]inclusiveThe flag for applying an inclusive scan if scan_type::INCLUSIVE, an exclusive scan if scan_type::EXCLUSIVE.
[in]null_handlingExclude null values when computing the result if null_policy::EXCLUDE. Include nulls if null_policy::INCLUDE. Any operation with a null results in a null.
[in]mrDevice memory resource used to allocate the returned scalar's device memory
Returns
Scanned output column

◆ segmented_reduce() [1/2]

std::unique_ptr<column> cudf::segmented_reduce ( column_view const &  segmented_values,
device_span< size_type const >  offsets,
segmented_reduce_aggregation const &  agg,
data_type  output_dtype,
null_policy  null_handling,
rmm::mr::device_memory_resource mr = rmm::mr::get_current_device_resource() 
)

Compute reduction of each segment in the input column.

This function does not detect overflows in reductions. When output_dtype does not match the segmented_values.type(), their values may be promoted to int64_t or double for computing aggregations and then cast to output_dtype before returning.

Null values are treated as identities during reduction.

If the segment is empty, the row corresponding to the result of the segment is null.

If any index in offsets is out of bound of segmented_values, the behavior is undefined.

If the input column has arithmetic type, output_dtype can be any arithmetic type. If the input column has non-arithmetic type, e.g. timestamp, the same output type must be specified.

If input is not empty, the result is always nullable.

Exceptions
cudf::logic_errorif reduction is called for non-arithmetic output type and operator other than min and max.
cudf::logic_errorif input column data type is not convertible to output_dtype type.
cudf::logic_errorif min or max reduction is called and the output_dtype does not match the input column data type.
cudf::logic_errorif any or all reduction is called and the output_dtype is not BOOL8.
Parameters
segmented_valuesColumn view of segmented inputs
offsetsEach segment's offset of segmented_values. A list of offsets with size num_segments + 1. The size of ith segment is offsets[i+1] - offsets[i].
aggAggregation operator applied by the reduction
output_dtypeThe output column type
null_handlingIf INCLUDE, the reduction is valid if all elements in a segment are valid, otherwise null. If EXCLUDE, the reduction is valid if any element in the segment is valid, otherwise null.
mrDevice memory resource used to allocate the returned scalar's device memory
Returns
Output column with results of segmented reduction

◆ segmented_reduce() [2/2]

std::unique_ptr<column> cudf::segmented_reduce ( column_view const &  segmented_values,
device_span< size_type const >  offsets,
segmented_reduce_aggregation const &  agg,
data_type  output_dtype,
null_policy  null_handling,
std::optional< std::reference_wrapper< scalar const >>  init,
rmm::mr::device_memory_resource mr = rmm::mr::get_current_device_resource() 
)

Compute reduction of each segment in the input column with an initial value. Only SUM, PRODUCT, MIN, MAX, ANY, and ALL aggregations are supported.

Parameters
segmented_valuesColumn view of segmented inputs
offsetsEach segment's offset of segmented_values. A list of offsets with size num_segments + 1. The size of ith segment is offsets[i+1] - offsets[i].
aggAggregation operator applied by the reduction
output_dtypeThe output column type
null_handlingIf INCLUDE, the reduction is valid if all elements in a segment are valid, otherwise null. If EXCLUDE, the reduction is valid if any element in the segment is valid, otherwise null.
initThe initial value of the reduction
mrDevice memory resource used to allocate the returned scalar's device memory
Returns
Output column with results of segmented reduction.