sorting.hpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: Apache-2.0
4  */
5 
6 #pragma once
7 
8 #include <cudf/aggregation.hpp>
9 #include <cudf/types.hpp>
11 #include <cudf/utilities/export.hpp>
13 
14 #include <memory>
15 #include <vector>
16 
22 namespace CUDF_EXPORT cudf {
23 
44 std::unique_ptr<column> sorted_order(
45  table_view const& input,
46  std::vector<order> const& column_order = {},
47  std::vector<null_order> const& null_precedence = {},
50 
59 std::unique_ptr<column> stable_sorted_order(
60  table_view const& input,
61  std::vector<order> const& column_order = {},
62  std::vector<null_order> const& null_precedence = {},
65 
84  std::vector<order> const& column_order,
85  std::vector<null_order> const& null_precedence,
87 
103 std::unique_ptr<table> sort(
104  table_view const& input,
105  std::vector<order> const& column_order = {},
106  std::vector<null_order> const& null_precedence = {},
109 
115 std::unique_ptr<table> stable_sort(
116  table_view const& input,
117  std::vector<order> const& column_order = {},
118  std::vector<null_order> const& null_precedence = {},
121 
144 std::unique_ptr<table> sort_by_key(
145  table_view const& values,
146  table_view const& keys,
147  std::vector<order> const& column_order = {},
148  std::vector<null_order> const& null_precedence = {},
151 
157 std::unique_ptr<table> stable_sort_by_key(
158  table_view const& values,
159  table_view const& keys,
160  std::vector<order> const& column_order = {},
161  std::vector<null_order> const& null_precedence = {},
164 
222 std::unique_ptr<column> rank(
223  column_view const& input,
224  rank_method method,
225  order column_order,
226  null_policy null_handling,
227  null_order null_precedence,
228  bool percentage,
231 
279 std::unique_ptr<column> segmented_sorted_order(
280  table_view const& keys,
281  column_view const& segment_offsets,
282  std::vector<order> const& column_order = {},
283  std::vector<null_order> const& null_precedence = {},
286 
292 std::unique_ptr<column> stable_segmented_sorted_order(
293  table_view const& keys,
294  column_view const& segment_offsets,
295  std::vector<order> const& column_order = {},
296  std::vector<null_order> const& null_precedence = {},
299 
347 std::unique_ptr<table> segmented_sort_by_key(
348  table_view const& values,
349  table_view const& keys,
350  column_view const& segment_offsets,
351  std::vector<order> const& column_order = {},
352  std::vector<null_order> const& null_precedence = {},
355 
361 std::unique_ptr<table> stable_segmented_sort_by_key(
362  table_view const& values,
363  table_view const& keys,
364  column_view const& segment_offsets,
365  std::vector<order> const& column_order = {},
366  std::vector<null_order> const& null_precedence = {},
369 
386 std::unique_ptr<column> top_k(
387  column_view const& col,
388  size_type k,
389  order topk_order = order::DESCENDING,
392 
409 std::unique_ptr<column> top_k_order(
410  column_view const& col,
411  size_type k,
412  order topk_order = order::DESCENDING,
415 
455 std::unique_ptr<column> segmented_top_k(
456  column_view const& col,
457  column_view const& segment_offsets,
458  size_type k,
459  order topk_order = order::DESCENDING,
462 
502 std::unique_ptr<column> segmented_top_k_order(
503  column_view const& col,
504  column_view const& segment_offsets,
505  size_type k,
506  order topk_order = order::DESCENDING,
509  // end of group
511 } // namespace CUDF_EXPORT cudf
Representation for specifying desired aggregations from aggregation-based APIs, e....
A non-owning, immutable view of device data as a column of elements, some of which may be null as ind...
A set of cudf::column_view's of the same size.
Definition: table_view.hpp:206
A set of cudf::column's of the same size.
Definition: table.hpp:31
APIs for querying the default CUDA stream and per-thread default stream status.
std::unique_ptr< column > top_k(column_view const &col, size_type k, order topk_order=order::DESCENDING, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Computes the top k values of a column.
std::unique_ptr< column > segmented_top_k_order(column_view const &col, column_view const &segment_offsets, size_type k, order topk_order=order::DESCENDING, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Computes the indices of the top k values within each segment of a column.
std::unique_ptr< column > top_k_order(column_view const &col, size_type k, order topk_order=order::DESCENDING, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Computes the indices of the top k values of a column.
std::unique_ptr< column > stable_segmented_sorted_order(table_view const &keys, column_view const &segment_offsets, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Returns sorted order after stably sorting each segment in the table.
std::unique_ptr< table > stable_sort(table_view const &input, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Performs a stable lexicographic sort of the rows of a table.
std::unique_ptr< table > sort(table_view const &input, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Performs a lexicographic sort of the rows of a table.
std::unique_ptr< column > rank(column_view const &input, rank_method method, order column_order, null_policy null_handling, null_order null_precedence, bool percentage, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Computes the ranks of input column in sorted order.
std::unique_ptr< table > stable_sort_by_key(table_view const &values, table_view const &keys, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Performs a key-value stable sort.
std::unique_ptr< column > sorted_order(table_view const &input, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Computes the row indices that would produce input in a lexicographical sorted order.
bool is_sorted(cudf::table_view const &table, std::vector< order > const &column_order, std::vector< null_order > const &null_precedence, rmm::cuda_stream_view stream=cudf::get_default_stream())
Checks whether the rows of a table are sorted in a lexicographical order.
std::unique_ptr< table > stable_segmented_sort_by_key(table_view const &values, table_view const &keys, column_view const &segment_offsets, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Performs a stably lexicographic segmented sort of a table.
std::unique_ptr< table > sort_by_key(table_view const &values, table_view const &keys, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Performs a key-value sort.
std::unique_ptr< column > segmented_sorted_order(table_view const &keys, column_view const &segment_offsets, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Returns sorted order after sorting each segment in the table.
rank_method
Tie-breaker method to use for ranking the column.
Definition: aggregation.hpp:37
std::unique_ptr< column > stable_sorted_order(table_view const &input, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Computes the row indices that would produce input in a stable lexicographical sorted order.
std::unique_ptr< table > segmented_sort_by_key(table_view const &values, table_view const &keys, column_view const &segment_offsets, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Performs a lexicographic segmented sort of a table.
std::unique_ptr< column > segmented_top_k(column_view const &col, column_view const &segment_offsets, size_type k, order topk_order=order::DESCENDING, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Computes the top k values within each segment of a column.
rmm::cuda_stream_view const get_default_stream()
Get the current default stream.
rmm::device_async_resource_ref get_current_device_resource_ref()
Get the current device memory resource reference.
cuda::mr::resource_ref< cuda::mr::device_accessible > device_async_resource_ref
null_order
Indicates how null values compare against all other values.
Definition: types.hpp:140
int32_t size_type
Row index type for columns and tables.
Definition: types.hpp:76
null_policy
Enum to specify whether to include nulls or exclude nulls.
Definition: types.hpp:107
order
Indicates the order in which elements should be sorted.
Definition: types.hpp:99
APIs for getting and setting the current device memory resource.
cuDF interfaces
Definition: host_udf.hpp:26
Type declarations for libcudf.