stream_compaction.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2019-2025, NVIDIA CORPORATION.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #pragma once
18 
19 #include <cudf/types.hpp>
21 #include <cudf/utilities/export.hpp>
23 
24 #include <memory>
25 #include <optional>
26 #include <vector>
27 
28 namespace CUDF_EXPORT cudf {
74 std::unique_ptr<table> drop_nulls(
75  table_view const& input,
76  std::vector<size_type> const& keys,
77  cudf::size_type keep_threshold,
80 
108 std::unique_ptr<table> drop_nulls(
109  table_view const& input,
110  std::vector<size_type> const& keys,
113 
152 std::unique_ptr<table> drop_nans(
153  table_view const& input,
154  std::vector<size_type> const& keys,
155  cudf::size_type keep_threshold,
158 
187 std::unique_ptr<table> drop_nans(
188  table_view const& input,
189  std::vector<size_type> const& keys,
192 
215 std::unique_ptr<table> apply_boolean_mask(
216  table_view const& input,
217  column_view const& boolean_mask,
220 
225  KEEP_ANY = 0,
226  KEEP_FIRST,
227  KEEP_LAST,
228  KEEP_NONE
229 };
230 
259 std::unique_ptr<table> unique(
260  table_view const& input,
261  std::vector<size_type> const& keys,
263  null_equality nulls_equal = null_equality::EQUAL,
266 
287 std::unique_ptr<table> distinct(
288  table_view const& input,
289  std::vector<size_type> const& keys,
290  duplicate_keep_option keep = duplicate_keep_option::KEEP_ANY,
291  null_equality nulls_equal = null_equality::EQUAL,
292  nan_equality nans_equal = nan_equality::ALL_EQUAL,
295 
310 std::unique_ptr<column> distinct_indices(
311  table_view const& input,
312  duplicate_keep_option keep = duplicate_keep_option::KEEP_ANY,
313  null_equality nulls_equal = null_equality::EQUAL,
314  nan_equality nans_equal = nan_equality::ALL_EQUAL,
317 
341 std::unique_ptr<table> stable_distinct(
342  table_view const& input,
343  std::vector<size_type> const& keys,
344  duplicate_keep_option keep = duplicate_keep_option::KEEP_ANY,
345  null_equality nulls_equal = null_equality::EQUAL,
346  nan_equality nans_equal = nan_equality::ALL_EQUAL,
349 
367  null_policy null_handling,
368  nan_policy nan_handling,
370 
382  null_equality nulls_equal = null_equality::EQUAL,
384 
407  null_policy null_handling,
408  nan_policy nan_handling,
410 
422  null_equality nulls_equal = null_equality::EQUAL,
424 
458 std::vector<std::unique_ptr<column>> filter(
459  std::vector<column_view> const& columns,
460  std::string const& predicate_udf,
461  bool is_ptx,
462  std::optional<void*> user_data = std::nullopt,
463  std::optional<std::vector<bool>> copy_mask = std::nullopt,
466 
468 } // namespace CUDF_EXPORT cudf
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:200
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::async_resource_ref< cuda::mr::device_accessible > device_async_resource_ref
std::unique_ptr< table > drop_nulls(table_view const &input, std::vector< size_type > const &keys, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Filters a table to remove null elements.
std::unique_ptr< column > distinct_indices(table_view const &input, duplicate_keep_option keep=duplicate_keep_option::KEEP_ANY, null_equality nulls_equal=null_equality::EQUAL, nan_equality nans_equal=nan_equality::ALL_EQUAL, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Create a column of indices of all distinct rows in the input table.
std::unique_ptr< table > unique(table_view const &input, std::vector< size_type > const &keys, duplicate_keep_option keep, null_equality nulls_equal=null_equality::EQUAL, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Create a new table with consecutive duplicate rows removed.
std::unique_ptr< table > drop_nans(table_view const &input, std::vector< size_type > const &keys, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Filters a table to remove NANs.
duplicate_keep_option
Choices for drop_duplicates API for retainment of duplicate rows.
std::unique_ptr< table > apply_boolean_mask(table_view const &input, column_view const &boolean_mask, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Filters input using boolean_mask of boolean values as a mask.
cudf::size_type distinct_count(table_view const &input, null_equality nulls_equal=null_equality::EQUAL, rmm::cuda_stream_view stream=cudf::get_default_stream())
Count the distinct rows in a table.
std::unique_ptr< table > stable_distinct(table_view const &input, std::vector< size_type > const &keys, duplicate_keep_option keep=duplicate_keep_option::KEEP_ANY, null_equality nulls_equal=null_equality::EQUAL, nan_equality nans_equal=nan_equality::ALL_EQUAL, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Create a new table without duplicate rows, preserving input order.
std::unique_ptr< table > distinct(table_view const &input, std::vector< size_type > const &keys, duplicate_keep_option keep=duplicate_keep_option::KEEP_ANY, null_equality nulls_equal=null_equality::EQUAL, nan_equality nans_equal=nan_equality::ALL_EQUAL, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Create a new table without duplicate rows.
cudf::size_type unique_count(table_view const &input, null_equality nulls_equal=null_equality::EQUAL, rmm::cuda_stream_view stream=cudf::get_default_stream())
Count the number of consecutive groups of equivalent rows in a table.
std::vector< std::unique_ptr< column > > filter(std::vector< column_view > const &columns, std::string const &predicate_udf, bool is_ptx, std::optional< void * > user_data=std::nullopt, std::optional< std::vector< bool >> copy_mask=std::nullopt, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Creates a new column by applying a filter function against every element of the input columns.
@ KEEP_ANY
Keep an unspecified occurrence.
@ KEEP_NONE
Keep no (remove all) occurrences of duplicates.
@ KEEP_LAST
Keep last occurrence.
@ KEEP_FIRST
Keep first occurrence.
null_equality
Enum to consider two nulls as equal or unequal.
Definition: types.hpp:151
int32_t size_type
Row index type for columns and tables.
Definition: types.hpp:95
null_policy
Enum to specify whether to include nulls or exclude nulls.
Definition: types.hpp:126
nan_policy
Enum to treat NaN floating point value as null or non-null element.
Definition: types.hpp:134
nan_equality
Enum to consider different elements (of floating point types) holding NaN value as equal or unequal.
Definition: types.hpp:143
cuDF interfaces
Definition: host_udf.hpp:37
Type declarations for libcudf.