22 #include <cudf/utilities/export.hpp>
37 namespace CUDF_EXPORT
cudf {
71 [[nodiscard]]
virtual std::size_t
do_hash()
const
73 return std::hash<int>{}(
static_cast<int>(aggregation::Kind::HOST_UDF));
90 [[nodiscard]]
virtual std::unique_ptr<host_udf_base>
clone()
const = 0;
145 std::optional<std::reference_wrapper<scalar const>> init,
209 std::optional<std::reference_wrapper<scalar const>> init,
215 namespace groupby ::detail {
216 struct aggregate_result_functor;
293 friend struct groupby::detail::aggregate_result_functor;
298 std::function<
column_view(
void)> callback_input_values;
304 std::function<
column_view(
void)> callback_grouped_values;
310 std::function<
column_view(
void)> callback_sorted_grouped_values;
315 std::function<
size_type(
void)> callback_num_groups;
320 std::function<device_span<size_type const>(
void)> callback_group_offsets;
325 std::function<device_span<size_type const>(
void)> callback_group_labels;
330 std::function<
column_view(std::unique_ptr<aggregation>)> callback_compute_aggregation;
340 CUDF_EXPECTS(callback_input_values,
"Uninitialized callback_input_values.");
341 return callback_input_values();
352 CUDF_EXPECTS(callback_grouped_values,
"Uninitialized callback_grouped_values.");
353 return callback_grouped_values();
364 CUDF_EXPECTS(callback_sorted_grouped_values,
"Uninitialized callback_sorted_grouped_values.");
365 return callback_sorted_grouped_values();
375 CUDF_EXPECTS(callback_num_groups,
"Uninitialized callback_num_groups.");
376 return callback_num_groups();
386 CUDF_EXPECTS(callback_group_offsets,
"Uninitialized callback_group_offsets.");
387 return callback_group_offsets();
397 CUDF_EXPECTS(callback_group_labels,
"Uninitialized callback_group_labels.");
398 return callback_group_labels();
412 CUDF_EXPECTS(callback_compute_aggregation,
"Uninitialized callback for computing aggregation.");
413 return callback_compute_aggregation(std::move(other_agg));
用于指定基于聚合的 API(例如...)所需聚合的表示形式。
设备数据作为元素列的非拥有、不可变视图,其中一些元素可能为 null,例如...
virtual ~host_udf_base()=default
默认析构函数。
virtual bool is_equal(host_udf_base const &other) const =0
比较派生类的两个实例是否相等。
virtual std::unique_ptr< host_udf_base > clone() const =0
克隆实例。
virtual std::size_t do_hash() const
计算实例的哈希值。
cuda::mr::async_resource_ref< cuda::mr::device_accessible > device_async_resource_ref
#define CUDF_EXPECTS(...)
用于检查(前置)条件的宏,当条件被违反时抛出异常。
int32_t size_type
列和表的行索引类型。
null_policy
枚举,指定是否包含 null 或排除 null。
功能集缩减的 C++20 std::span 设备版本。
用于 groupby 聚合上下文的基于主机的 UDF 实现接口。
device_span< size_type const > get_group_labels() const
访问组标签(与组索引相同)。
size_type get_num_groups() const
访问组的数量(即不同键的数量)。
column_view get_grouped_values() const
访问根据输入键分组的输入值,其中每个组内的值可能...
column_view get_sorted_grouped_values() const
访问根据输入键分组并在每个组内排序的输入值。
column_view get_input_values() const
访问输入值列。
column_view compute_aggregation(std::unique_ptr< aggregation > other_agg) const
计算内置的 groupby 聚合并访问其结果。
virtual std::unique_ptr< column > get_empty_output(rmm::cuda_stream_view stream, rmm::device_async_resource_ref mr) const =0
当输入值列为空时获取输出。
virtual std::unique_ptr< column > operator()(rmm::cuda_stream_view stream, rmm::device_async_resource_ref mr) const =0
执行基于主机的 UDF 的主要 groupby 计算。
device_span< size_type const > get_group_offsets() const
访问分隔组的偏移量。
virtual std::unique_ptr< scalar > operator()(column_view const &input, data_type output_dtype, std::optional< std::reference_wrapper< scalar const >> init, rmm::cuda_stream_view stream, rmm::device_async_resource_ref mr) const =0
执行归约操作。
用于分段归约上下文的基于主机的 UDF 实现接口。
virtual std::unique_ptr< column > operator()(column_view const &input, device_span< size_type const > offsets, data_type output_dtype, null_policy null_handling, std::optional< std::reference_wrapper< scalar const >> init, rmm::cuda_stream_view stream, rmm::device_async_resource_ref mr) const =0
执行分段归约操作。