From ab919e04bc5ee1c0e128366f68e386bad9fc7f1a Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Mon, 20 Jul 2026 04:38:43 +0000 Subject: [PATCH 01/27] Migrate zip iterators to CUDA --- cpp/benchmarks/common/generate_input.cu | 5 +-- .../random_column_generator.cu | 2 +- cpp/include/cudf/detail/null_mask.cuh | 8 ++-- cpp/src/groupby/common/m2_var_std.cu | 5 ++- cpp/src/groupby/sort/group_correlation.cu | 5 +-- cpp/src/groupby/sort/group_merge_m2.cu | 9 ++--- cpp/src/io/comp/compression.cu | 5 ++- cpp/src/io/comp/gpuinflate.cu | 5 ++- cpp/src/io/comp/nvcomp_adapter.cu | 12 +++--- cpp/src/io/json/column_tree_construction.cu | 24 +++++------ cpp/src/io/json/host_tree_algorithms.cu | 40 +++++++++---------- cpp/src/io/json/json_column.cu | 17 ++++---- cpp/src/io/json/json_tree.cu | 17 ++++---- cpp/src/io/json/nested_json_gpu.cu | 13 +++--- cpp/src/io/json/write_json.cpp | 5 +-- cpp/src/io/json/write_json.cu | 3 +- cpp/src/io/orc/stripe_enc.cu | 1 - cpp/src/io/parquet/arrow_schema_writer.cpp | 6 +-- .../experimental/hybrid_scan_helpers.cpp | 1 - cpp/src/io/parquet/page_enc.cu | 3 +- cpp/src/io/parquet/reader_impl.cpp | 4 +- cpp/src/io/parquet/reader_impl_helpers.cpp | 13 +++--- cpp/src/io/text/bgzip_data_chunk_source.cu | 14 +++---- cpp/src/io/utilities/data_casting.cu | 4 +- cpp/src/io/utilities/string_parsing.hpp | 8 ++-- cpp/src/io/utilities/type_inference.cu | 5 ++- cpp/src/join/distinct_hash_join.cu | 6 +-- .../filter_join_indices.cu | 15 ++++--- .../filter_join_indices_jit.cu | 15 ++++--- cpp/src/join/join_utils.cu | 5 +-- cpp/src/join/mixed_join.cu | 4 +- cpp/src/lists/dremel.cu | 15 ++++--- .../quantiles/tdigest/tdigest_aggregation.cu | 15 ++++--- cpp/src/reductions/histogram.cu | 7 ++-- cpp/src/reductions/scan/ewm.cu | 6 +-- cpp/src/reductions/segmented/simple.cuh | 3 +- cpp/src/replace/clamp.cu | 7 ++-- cpp/src/sort/sorted_order_radix.cu | 5 +-- cpp/src/strings/replace/multi.cu | 4 +- cpp/tests/groupby/host_udf_example_tests.cu | 5 +-- cpp/tests/io/json/json_type_cast_test.cpp | 11 ++--- cpp/tests/io/json/nested_json_test.cpp | 6 +-- cpp/tests/io/type_inference_test.cpp | 18 ++++----- cpp/tests/partitioning/partition_test.cpp | 8 ++-- .../reductions/host_udf_example_tests.cu | 5 +-- .../transform/integration/assert_unary.h | 13 +++--- .../utilities_tests/batched_memset_tests.cu | 20 +++++----- 47 files changed, 200 insertions(+), 227 deletions(-) diff --git a/cpp/benchmarks/common/generate_input.cu b/cpp/benchmarks/common/generate_input.cu index 215cb32d8110..79507ef61eaa 100644 --- a/cpp/benchmarks/common/generate_input.cu +++ b/cpp/benchmarks/common/generate_input.cu @@ -44,7 +44,6 @@ #include #include #include -#include #include #include #include @@ -514,7 +513,7 @@ std::unique_ptr create_random_utf8_string_column(data_profile cons cuda::proclaim_return_type([] __device__(auto) { return 0; }), cuda::std::logical_not{}); auto valid_lengths = thrust::make_transform_iterator( - thrust::make_zip_iterator(cuda::std::make_tuple(lengths.begin(), null_mask.begin())), + cuda::make_zip_iterator(cuda::std::make_tuple(lengths.begin(), null_mask.begin())), valid_or_zero{}); // offsets are created as INT32 or INT64 as appropriate @@ -524,7 +523,7 @@ std::unique_ptr create_random_utf8_string_column(data_profile cons auto offsets_itr = cudf::detail::offsetalator_factory::make_input_iterator(offsets->view()); rmm::device_uvector chars(chars_length, cudf::get_default_stream()); thrust::for_each_n(thrust::device, - thrust::make_zip_iterator(cuda::std::make_tuple(offsets_itr, offsets_itr + 1)), + cuda::make_zip_iterator(cuda::std::make_tuple(offsets_itr, offsets_itr + 1)), num_rows, string_generator{chars.data(), engine}); diff --git a/cpp/benchmarks/common/ndsh_data_generator/random_column_generator.cu b/cpp/benchmarks/common/ndsh_data_generator/random_column_generator.cu index 3aff4d50a111..3a451cbf9d79 100644 --- a/cpp/benchmarks/common/ndsh_data_generator/random_column_generator.cu +++ b/cpp/benchmarks/common/ndsh_data_generator/random_column_generator.cu @@ -95,7 +95,7 @@ std::unique_ptr generate_random_string_column(cudf::size_type lowe // We generate the strings in parallel into the `chars` vector using the // offsets vector generated above. thrust::for_each_n(rmm::exec_policy_nosync(stream), - thrust::make_zip_iterator(cuda::std::make_tuple(offset_itr, offset_itr + 1)), + cuda::make_zip_iterator(cuda::std::make_tuple(offset_itr, offset_itr + 1)), num_rows, random_string_generator(chars.data())); diff --git a/cpp/include/cudf/detail/null_mask.cuh b/cpp/include/cudf/detail/null_mask.cuh index 6159bf0c129a..9c5b9f4fad47 100644 --- a/cpp/include/cudf/detail/null_mask.cuh +++ b/cpp/include/cudf/detail/null_mask.cuh @@ -27,7 +27,6 @@ #include #include #include -#include #include #include @@ -577,8 +576,7 @@ rmm::device_uvector segmented_count_bits(bitmask_type const* bitmask, if (count_bits == count_bits_policy::UNSET_BITS) { // Convert from set bits counts to unset bits by subtracting the number of // set bits from the length of the segment. - auto segments_begin = - thrust::make_zip_iterator(first_bit_indices_begin, last_bit_indices_begin); + auto segments_begin = cuda::make_zip_iterator(first_bit_indices_begin, last_bit_indices_begin); auto segment_length_iterator = thrust::transform_iterator( segments_begin, cuda::proclaim_return_type([] __device__(auto const& segment) { auto const begin = cuda::std::get<0>(segment); @@ -795,7 +793,7 @@ std::pair segmented_null_mask_reduction( rmm::device_async_resource_ref mr) { auto const segments_begin = - thrust::make_zip_iterator(first_bit_indices_begin, last_bit_indices_begin); + cuda::make_zip_iterator(first_bit_indices_begin, last_bit_indices_begin); auto const segment_length_iterator = thrust::make_transform_iterator( segments_begin, cuda::proclaim_return_type([] __device__(auto const& segment) { auto const begin = cuda::std::get<0>(segment); @@ -828,7 +826,7 @@ std::pair segmented_null_mask_reduction( stream, cudf::get_current_device_resource_ref()); auto const length_and_valid_count = - thrust::make_zip_iterator(segment_length_iterator, segment_valid_counts.begin()); + cuda::make_zip_iterator(segment_length_iterator, segment_valid_counts.begin()); return cudf::detail::valid_if( length_and_valid_count, length_and_valid_count + num_segments, diff --git a/cpp/src/groupby/common/m2_var_std.cu b/cpp/src/groupby/common/m2_var_std.cu index 97ad262db67a..101965dbef79 100644 --- a/cpp/src/groupby/common/m2_var_std.cu +++ b/cpp/src/groupby/common/m2_var_std.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -15,6 +15,7 @@ #include #include +#include #include #include #include @@ -133,7 +134,7 @@ std::unique_ptr compute_variance_std(TransformFunc&& transform_fn, rmm::device_uvector validity(size, stream); auto const out_it = - thrust::make_zip_iterator(output->mutable_view().begin(), validity.begin()); + cuda::make_zip_iterator(output->mutable_view().begin(), validity.begin()); thrust::tabulate(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), out_it, out_it + size, diff --git a/cpp/src/groupby/sort/group_correlation.cu b/cpp/src/groupby/sort/group_correlation.cu index e81986122212..18140d363230 100644 --- a/cpp/src/groupby/sort/group_correlation.cu +++ b/cpp/src/groupby/sort/group_correlation.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -21,7 +21,6 @@ #include #include -#include #include #include @@ -177,7 +176,7 @@ std::unique_ptr group_correlation(column_view const& covariance, CUDF_EXPECTS(covariance.type().id() == type_id::FLOAT64, "Covariance result must be FLOAT64"); auto stddev0_ptr = stddev_0.begin(); auto stddev1_ptr = stddev_1.begin(); - auto stddev_iter = thrust::make_zip_iterator(cuda::std::make_tuple(stddev0_ptr, stddev1_ptr)); + auto stddev_iter = cuda::make_zip_iterator(cuda::std::make_tuple(stddev0_ptr, stddev1_ptr)); auto result = make_numeric_column(covariance.type(), covariance.size(), cudf::detail::copy_bitmask(covariance, stream, mr), diff --git a/cpp/src/groupby/sort/group_merge_m2.cu b/cpp/src/groupby/sort/group_merge_m2.cu index 578f3bb1fcd2..798ed5b61b91 100644 --- a/cpp/src/groupby/sort/group_merge_m2.cu +++ b/cpp/src/groupby/sort/group_merge_m2.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -13,7 +13,6 @@ #include #include -#include #include namespace cudf { @@ -87,9 +86,9 @@ std::unique_ptr merge_m2(column_view const& values, data_type(type_to_id()), num_groups, mask_state::UNALLOCATED, stream, mr); auto const out_iter = - thrust::make_zip_iterator(result_counts->mutable_view().template data(), - result_means->mutable_view().template data(), - result_M2s->mutable_view().template data()); + cuda::make_zip_iterator(result_counts->mutable_view().template data(), + result_means->mutable_view().template data(), + result_M2s->mutable_view().template data()); auto const count_valid = values.child(0); auto const mean_values = values.child(1); diff --git a/cpp/src/io/comp/compression.cu b/cpp/src/io/comp/compression.cu index b3edf63fb0b7..882c70123918 100644 --- a/cpp/src/io/comp/compression.cu +++ b/cpp/src/io/comp/compression.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -10,6 +10,7 @@ #include #include +#include #include #include @@ -33,7 +34,7 @@ writer_compression_statistics collect_compression_statistics( auto input_size_with_status = [inputs, results, stream](codec_status status) { auto const zipped_begin = - thrust::make_zip_iterator(cuda::std::make_tuple(inputs.begin(), results.begin())); + cuda::make_zip_iterator(cuda::std::make_tuple(inputs.begin(), results.begin())); auto const zipped_end = zipped_begin + inputs.size(); return thrust::transform_reduce( diff --git a/cpp/src/io/comp/gpuinflate.cu b/cpp/src/io/comp/gpuinflate.cu index ffde4417199b..044c75f3069c 100644 --- a/cpp/src/io/comp/gpuinflate.cu +++ b/cpp/src/io/comp/gpuinflate.cu @@ -44,6 +44,7 @@ Mark Adler madler@alumni.caltech.edu #include #include +#include #include #include #include @@ -1211,8 +1212,8 @@ sorted_codec_parameters sort_tasks(device_span const> // Precompute costs to avoid repeated computation during sorting rmm::device_uvector costs(inputs.size(), stream, mr); thrust::transform(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), - thrust::make_zip_iterator(inputs.begin(), outputs.begin()), - thrust::make_zip_iterator(inputs.end(), outputs.end()), + cuda::make_zip_iterator(inputs.begin(), outputs.begin()), + cuda::make_zip_iterator(inputs.end(), outputs.end()), costs.begin(), [task_type] __device__(auto const& input_output_pair) { auto const& input = cuda::std::get<0>(input_output_pair); diff --git a/cpp/src/io/comp/nvcomp_adapter.cu b/cpp/src/io/comp/nvcomp_adapter.cu index 191983a0a71e..e5c97c25ebb8 100644 --- a/cpp/src/io/comp/nvcomp_adapter.cu +++ b/cpp/src/io/comp/nvcomp_adapter.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ #include "nvcomp_adapter.cuh" @@ -10,8 +10,8 @@ #include #include +#include #include -#include #include namespace cudf::io::detail::nvcomp { @@ -27,7 +27,7 @@ batched_args create_batched_nvcomp_args(device_span c rmm::device_uvector output_data_sizes(num_comp_chunks, stream); // Prepare the input vectors - auto ins_it = thrust::make_zip_iterator(input_data_ptrs.begin(), input_data_sizes.begin()); + auto ins_it = cuda::make_zip_iterator(input_data_ptrs.begin(), input_data_sizes.begin()); thrust::transform( rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), inputs.begin(), @@ -36,7 +36,7 @@ batched_args create_batched_nvcomp_args(device_span c [] __device__(auto const& in) { return cuda::std::make_tuple(in.data(), in.size()); }); // Prepare the output vectors - auto outs_it = thrust::make_zip_iterator(output_data_ptrs.begin(), output_data_sizes.begin()); + auto outs_it = cuda::make_zip_iterator(output_data_ptrs.begin(), output_data_sizes.begin()); thrust::transform( rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), outputs.begin(), @@ -56,7 +56,7 @@ std::pair, rmm::device_uvector> create_ rmm::device_uvector input_data_ptrs(inputs.size(), stream); rmm::device_uvector input_data_sizes(inputs.size(), stream); - auto ins_it = thrust::make_zip_iterator(input_data_ptrs.begin(), input_data_sizes.begin()); + auto ins_it = cuda::make_zip_iterator(input_data_ptrs.begin(), input_data_sizes.begin()); thrust::transform( rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), inputs.begin(), @@ -108,7 +108,7 @@ void skip_unsupported_inputs(device_span input_sizes, rmm::cuda_stream_view stream) { if (max_valid_input_size.has_value()) { - auto status_size_it = thrust::make_zip_iterator(input_sizes.begin(), results.begin()); + auto status_size_it = cuda::make_zip_iterator(input_sizes.begin(), results.begin()); thrust::transform_if( rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), results.begin(), diff --git a/cpp/src/io/json/column_tree_construction.cu b/cpp/src/io/json/column_tree_construction.cu index 826ec45bb403..4deaa9298f28 100644 --- a/cpp/src/io/json/column_tree_construction.cu +++ b/cpp/src/io/json/column_tree_construction.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -23,7 +23,6 @@ #include #include #include -#include #include #include #include @@ -166,15 +165,14 @@ std::tuple reduce_to_column_tree( rmm::device_uvector column_categories(num_columns, stream); thrust::copy_n( rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), - thrust::make_zip_iterator(thrust::make_permutation_iterator( - unpermuted_tree.parent_node_ids.begin(), reordering_index.begin()), - thrust::make_permutation_iterator(unpermuted_max_row_offsets.begin(), - reordering_index.begin()), - thrust::make_permutation_iterator( - unpermuted_tree.node_categories.begin(), reordering_index.begin())), + cuda::make_zip_iterator(thrust::make_permutation_iterator( + unpermuted_tree.parent_node_ids.begin(), reordering_index.begin()), + thrust::make_permutation_iterator(unpermuted_max_row_offsets.begin(), + reordering_index.begin()), + thrust::make_permutation_iterator( + unpermuted_tree.node_categories.begin(), reordering_index.begin())), num_columns, - thrust::make_zip_iterator( - parent_col_ids_it, max_row_offsets.begin(), column_categories.begin())); + cuda::make_zip_iterator(parent_col_ids_it, max_row_offsets.begin(), column_categories.begin())); #ifdef CSR_DEBUG_PRINT print(reordering_index, "h_reordering_index", stream); @@ -214,9 +212,9 @@ std::tuple reduce_to_column_tree( if (num_columns > 1) { thrust::transform_inclusive_scan( rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), - thrust::make_zip_iterator(cuda::counting_iterator{1}, row_idx.begin() + 1), - thrust::make_zip_iterator(cuda::counting_iterator{1} + num_columns, - row_idx.end()), + cuda::make_zip_iterator(cuda::counting_iterator{1}, row_idx.begin() + 1), + cuda::make_zip_iterator(cuda::counting_iterator{1} + num_columns, + row_idx.end()), row_idx.begin() + 1, cuda::proclaim_return_type([] __device__(auto a) { auto n = cuda::std::get<0>(a); diff --git a/cpp/src/io/json/host_tree_algorithms.cu b/cpp/src/io/json/host_tree_algorithms.cu index 85afd02a0dd6..ee1f34dd752e 100644 --- a/cpp/src/io/json/host_tree_algorithms.cu +++ b/cpp/src/io/json/host_tree_algorithms.cu @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include @@ -91,12 +90,12 @@ std::vector copy_strings_to_host_sync( auto const num_strings = node_range_begin.size(); rmm::device_uvector string_offsets(num_strings, stream); rmm::device_uvector string_lengths(num_strings, stream); - auto d_offset_pairs = thrust::make_zip_iterator(node_range_begin.begin(), node_range_end.begin()); + auto d_offset_pairs = cuda::make_zip_iterator(node_range_begin.begin(), node_range_end.begin()); thrust::transform( rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), d_offset_pairs, d_offset_pairs + num_strings, - thrust::make_zip_iterator(string_offsets.begin(), string_lengths.begin()), + cuda::make_zip_iterator(string_offsets.begin(), string_lengths.begin()), [] __device__(auto const& offsets) { // Note: first character for non-field columns return cuda::std::make_tuple( @@ -107,9 +106,8 @@ std::vector copy_strings_to_host_sync( cudf::io::parse_options_view options_view{}; options_view.quotechar = '\0'; // no quotes options_view.keepquotes = true; - auto d_offset_length_it = - thrust::make_zip_iterator(string_offsets.begin(), string_lengths.begin()); - auto d_column_names = parse_data(input.data(), + auto d_offset_length_it = cuda::make_zip_iterator(string_offsets.begin(), string_lengths.begin()); + auto d_column_names = parse_data(input.data(), d_offset_length_it, num_strings, data_type{type_id::STRING}, @@ -118,7 +116,7 @@ std::vector copy_strings_to_host_sync( options_view, stream, cudf::get_current_device_resource_ref()); - auto to_host = [stream](auto const& col) { + auto to_host = [stream](auto const& col) { if (col.is_empty()) return std::vector{}; auto const scv = cudf::strings_column_view(col); auto const h_chars = cudf::detail::make_host_vector_async( @@ -525,11 +523,14 @@ void make_device_json_column(device_span input, } else if (column_category == NC_VAL || column_category == NC_STR) { col.string_offsets.resize(max_row_offsets[i] + 1, stream); col.string_lengths.resize(max_row_offsets[i] + 1, stream); - thrust::fill( - rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), - thrust::make_zip_iterator(col.string_offsets.begin(), col.string_lengths.begin()), - thrust::make_zip_iterator(col.string_offsets.end(), col.string_lengths.end()), - cuda::std::make_tuple(0, 0)); + thrust::fill(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), + col.string_offsets.begin(), + col.string_offsets.end(), + 0); + thrust::fill(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), + col.string_lengths.begin(), + col.string_lengths.end(), + 0); } else if (column_category == NC_LIST) { col.child_offsets.resize(max_row_offsets[i] + 2, stream); thrust::uninitialized_fill( @@ -546,11 +547,8 @@ void make_device_json_column(device_span input, // 2. generate nested columns tree and its device_memory // reorder unique_col_ids w.r.t. column_range_begin for order of column to be in field order. - auto h_range_col_id_it = - thrust::make_zip_iterator(column_range_beg.begin(), unique_col_ids.begin()); - std::sort(h_range_col_id_it, h_range_col_id_it + num_columns, [](auto const& a, auto const& b) { - return cuda::std::get<0>(a) < cuda::std::get<0>(b); - }); + thrust::sort_by_key( + column_range_beg.begin(), column_range_beg.begin() + num_columns, unique_col_ids.begin()); // adjacency list construction std::map> adj; for (auto const this_col_id : unique_col_ids) { @@ -1064,10 +1062,10 @@ void scatter_offsets(tree_meta_t const& tree, : col_ids[parent_node_ids[node_id]]; })); auto const list_children_end = cudf::detail::copy_if( - thrust::make_zip_iterator(cuda::counting_iterator{0}, parent_col_id), - thrust::make_zip_iterator(cuda::counting_iterator{0}, parent_col_id) + num_nodes, + cuda::make_zip_iterator(cuda::counting_iterator{0}, parent_col_id), + cuda::make_zip_iterator(cuda::counting_iterator{0}, parent_col_id) + num_nodes, cuda::counting_iterator{0}, - thrust::make_zip_iterator(node_ids.begin(), parent_col_ids.begin()), + cuda::make_zip_iterator(node_ids.begin(), parent_col_ids.begin()), [d_ignore_vals = d_ignore_vals.begin(), parent_node_ids = tree.parent_node_ids.begin(), column_categories = d_column_tree.node_categories.begin(), @@ -1081,7 +1079,7 @@ void scatter_offsets(tree_meta_t const& tree, // For children of list and in ignore_vals, find it's parent node id, and set corresponding // parent's null mask to null. Setting mixed type list rows to null. auto const num_list_children = cuda::std::distance( - thrust::make_zip_iterator(node_ids.begin(), parent_col_ids.begin()), list_children_end); + cuda::make_zip_iterator(node_ids.begin(), parent_col_ids.begin()), list_children_end); thrust::for_each_n( rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), cuda::counting_iterator{0}, diff --git a/cpp/src/io/json/json_column.cu b/cpp/src/io/json/json_column.cu index 241e3bc8af2d..cf3bedba2da2 100644 --- a/cpp/src/io/json/json_column.cu +++ b/cpp/src/io/json/json_column.cu @@ -29,7 +29,6 @@ #include #include #include -#include #include #include #include @@ -167,16 +166,16 @@ reduce_to_column_tree(tree_meta_t const& tree, thrust::copy_n( rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), - thrust::make_zip_iterator( + cuda::make_zip_iterator( thrust::make_permutation_iterator(tree.node_levels.begin(), unique_node_ids.begin()), thrust::make_permutation_iterator(tree.parent_node_ids.begin(), unique_node_ids.begin()), thrust::make_permutation_iterator(tree.node_range_begin.begin(), unique_node_ids.begin()), thrust::make_permutation_iterator(tree.node_range_end.begin(), unique_node_ids.begin())), unique_node_ids.size(), - thrust::make_zip_iterator(column_levels.begin(), - parent_col_ids.begin(), - col_range_begin.begin(), - col_range_end.begin())); + cuda::make_zip_iterator(column_levels.begin(), + parent_col_ids.begin(), + col_range_begin.begin(), + col_range_end.begin())); // convert parent_node_ids to parent_col_ids thrust::transform( @@ -344,7 +343,7 @@ std::pair, std::vector> device_json_co auto [normalized_d_input, col_offsets, col_lengths] = cudf::io::json::detail::normalize_whitespace( d_input, json_col.string_offsets, json_col.string_lengths, stream, mr); - auto offset_length_it = thrust::make_zip_iterator(col_offsets.begin(), col_lengths.begin()); + auto offset_length_it = cuda::make_zip_iterator(col_offsets.begin(), col_lengths.begin()); target_type = data_type{type_id::STRING}; // Convert strings to the inferred data type col = parse_data(normalized_d_input.data(), @@ -357,8 +356,8 @@ std::pair, std::vector> device_json_co stream, mr); } else { - auto offset_length_it = thrust::make_zip_iterator(json_col.string_offsets.begin(), - json_col.string_lengths.begin()); + auto offset_length_it = + cuda::make_zip_iterator(json_col.string_offsets.begin(), json_col.string_lengths.begin()); if (schema.has_value()) { #ifdef NJP_DEBUG_PRINT std::cout << "-> explicit type: " diff --git a/cpp/src/io/json/json_tree.cu b/cpp/src/io/json/json_tree.cu index 248179be84d5..9549d115e794 100644 --- a/cpp/src/io/json/json_tree.cu +++ b/cpp/src/io/json/json_tree.cu @@ -37,7 +37,6 @@ #include #include #include -#include #include #include #include @@ -398,7 +397,7 @@ tree_meta_t get_tree_representation(device_span tokens, rmm::device_uvector node_range_begin(num_nodes, stream, mr); rmm::device_uvector node_range_end(num_nodes, stream, mr); auto const node_range_tuple_it = - thrust::make_zip_iterator(node_range_begin.begin(), node_range_end.begin()); + cuda::make_zip_iterator(node_range_begin.begin(), node_range_end.begin()); // Whether the tokenizer stage should keep quote characters for string values // If the tokenizer keeps the quote characters, they may be stripped during type casting constexpr bool include_quote_char = true; @@ -451,8 +450,8 @@ tree_meta_t get_tree_representation(device_span tokens, })); // copy_if only struct/list's token levels, token ids, tokens. auto zipped_in_it = - thrust::make_zip_iterator(push_pop_it, cuda::counting_iterator{0}); - auto zipped_out_it = thrust::make_zip_iterator(token_levels.begin(), token_id.begin()); + cuda::make_zip_iterator(push_pop_it, cuda::counting_iterator{0}); + auto zipped_out_it = cuda::make_zip_iterator(token_levels.begin(), token_id.begin()); cudf::detail::copy_if_async( zipped_in_it, zipped_in_it + num_tokens, tokens.begin(), zipped_out_it, is_nested, stream); @@ -535,7 +534,7 @@ std::pair> remapped_field_nodes_after_uni if (num_keys == 0) { return {num_keys, rmm::device_uvector(num_keys, stream)}; } rmm::device_uvector offsets(num_keys, stream); rmm::device_uvector lengths(num_keys, stream); - auto offset_length_it = thrust::make_zip_iterator(offsets.begin(), lengths.begin()); + auto offset_length_it = cuda::make_zip_iterator(offsets.begin(), lengths.begin()); thrust::transform(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), keys.begin(), keys.end(), @@ -709,7 +708,7 @@ rmm::device_uvector hash_node_type_with_field_name(device_span compute_row_offsets(rmm::device_uvector #include #include -#include #include #include @@ -1532,11 +1531,11 @@ std::pair, rmm::device_uvector> pr // StructBegin, StructEnd. Also, all LineEnd are removed as well, as these are not relevant after // this stage anymore filter_fst.Transduce( - cuda::std::make_reverse_iterator( - thrust::make_zip_iterator(tokens.data(), token_indices.data()) + tokens.size()), + cuda::std::make_reverse_iterator(cuda::make_zip_iterator(tokens.data(), token_indices.data()) + + tokens.size()), static_cast(tokens.size()), cuda::std::make_reverse_iterator( - thrust::make_zip_iterator(filtered_tokens_out.data(), filtered_token_indices_out.data()) + + cuda::make_zip_iterator(filtered_tokens_out.data(), filtered_token_indices_out.data()) + tokens.size()), cuda::make_discard_iterator(), d_num_selected_tokens.data(), @@ -1594,7 +1593,7 @@ std::pair, rmm::device_uvector> ge // Input to the full pushdown automaton finite-state transducer, where a input symbol comprises // the combination of a character from the JSON input together with the stack context for that // character. - auto zip_in = thrust::make_zip_iterator(json_in.data(), stack_symbols.data()); + auto zip_in = cuda::make_zip_iterator(json_in.data(), stack_symbols.data()); // Spark, as the main stakeholder in the `recover_from_error` option, has the specific need to // ignore any characters that follow the first value on each JSON line. This is an FST that @@ -2138,7 +2137,7 @@ std::pair, std::vector> json_column_to // Prepare iterator that returns (string_offset, string_length)-tuples auto offset_length_it = - thrust::make_zip_iterator(d_string_offsets.begin(), d_string_lengths.begin()); + cuda::make_zip_iterator(d_string_offsets.begin(), d_string_lengths.begin()); data_type target_type{}; diff --git a/cpp/src/io/json/write_json.cpp b/cpp/src/io/json/write_json.cpp index 5e2a931d9920..17e9dacd55f8 100644 --- a/cpp/src/io/json/write_json.cpp +++ b/cpp/src/io/json/write_json.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -32,7 +32,6 @@ #include #include -#include #include #include @@ -285,7 +284,7 @@ struct column_to_strings_fn { auto column_names_view = column_names->view(); std::vector> str_column_vec; - auto i_col_begin = thrust::make_zip_iterator(cuda::counting_iterator(0), column_begin); + auto i_col_begin = cuda::make_zip_iterator(cuda::counting_iterator(0), column_begin); std::transform(i_col_begin, i_col_begin + num_columns, std::back_inserter(str_column_vec), diff --git a/cpp/src/io/json/write_json.cu b/cpp/src/io/json/write_json.cu index e45cb628a75d..3603012ca61e 100644 --- a/cpp/src/io/json/write_json.cu +++ b/cpp/src/io/json/write_json.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -45,7 +45,6 @@ #include #include #include -#include #include #include diff --git a/cpp/src/io/orc/stripe_enc.cu b/cpp/src/io/orc/stripe_enc.cu index 61a96c84f08f..d76c0dcc57ee 100644 --- a/cpp/src/io/orc/stripe_enc.cu +++ b/cpp/src/io/orc/stripe_enc.cu @@ -26,7 +26,6 @@ #include #include #include -#include #include namespace cudf::io::orc::detail { diff --git a/cpp/src/io/parquet/arrow_schema_writer.cpp b/cpp/src/io/parquet/arrow_schema_writer.cpp index adcf0d535521..9e883324d5c0 100644 --- a/cpp/src/io/parquet/arrow_schema_writer.cpp +++ b/cpp/src/io/parquet/arrow_schema_writer.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -380,9 +380,9 @@ std::string construct_arrow_schema_ipc_message(cudf::detail::LinkedColVector con // populate field offsets (aka schema fields) std::transform( - thrust::make_zip_iterator( + cuda::make_zip_iterator( cuda::std::make_tuple(linked_columns.begin(), metadata.column_metadata.begin())), - thrust::make_zip_iterator( + cuda::make_zip_iterator( cuda::std::make_tuple(linked_columns.end(), metadata.column_metadata.end())), std::back_inserter(field_offsets), [&](auto const& elem) { diff --git a/cpp/src/io/parquet/experimental/hybrid_scan_helpers.cpp b/cpp/src/io/parquet/experimental/hybrid_scan_helpers.cpp index 53cd95f92e72..7adccfcfad54 100644 --- a/cpp/src/io/parquet/experimental/hybrid_scan_helpers.cpp +++ b/cpp/src/io/parquet/experimental/hybrid_scan_helpers.cpp @@ -14,7 +14,6 @@ #include #include -#include #include #include diff --git a/cpp/src/io/parquet/page_enc.cu b/cpp/src/io/parquet/page_enc.cu index 0f635b8235fb..4c5c5523313c 100644 --- a/cpp/src/io/parquet/page_enc.cu +++ b/cpp/src/io/parquet/page_enc.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -33,7 +33,6 @@ #include #include #include -#include #include #include #include diff --git a/cpp/src/io/parquet/reader_impl.cpp b/cpp/src/io/parquet/reader_impl.cpp index 38ee9301d03f..5c27fac8f89b 100644 --- a/cpp/src/io/parquet/reader_impl.cpp +++ b/cpp/src/io/parquet/reader_impl.cpp @@ -1042,7 +1042,7 @@ void reader_impl::update_output_nullmasks_for_pruned_pages(cudf::host_span{}; auto begin_bits = std::vector{}; @@ -1128,7 +1128,7 @@ void reader_impl::update_output_nullmasks_for_pruned_pages(cudf::host_span #include #include -#include #include #include @@ -1080,9 +1079,9 @@ void aggregate_reader_metadata::apply_arrow_schema() if (std::cmp_equal(pq_schema_elem.num_children, arrow_schema.children.size())) { // true if and only if true for all children as well return std::all_of( - thrust::make_zip_iterator(cuda::std::make_tuple(arrow_schema.children.begin(), - pq_schema_elem.children_idx.begin())), - thrust::make_zip_iterator( + cuda::make_zip_iterator(cuda::std::make_tuple(arrow_schema.children.begin(), + pq_schema_elem.children_idx.begin())), + cuda::make_zip_iterator( cuda::std::make_tuple(arrow_schema.children.end(), pq_schema_elem.children_idx.end())), [&](auto const& elem) { return validate_schemas(cuda::std::get<0>(elem), cuda::std::get<1>(elem)); @@ -1096,9 +1095,9 @@ void aggregate_reader_metadata::apply_arrow_schema() std::function co_walk_schemas = [&](arrow_schema_data_types const& arrow_schema, int const schema_idx) { auto& pq_schema_elem = per_file_metadata[0].schema[schema_idx]; - std::for_each(thrust::make_zip_iterator(cuda::std::make_tuple( + std::for_each(cuda::make_zip_iterator(cuda::std::make_tuple( arrow_schema.children.begin(), pq_schema_elem.children_idx.begin())), - thrust::make_zip_iterator(cuda::std::make_tuple( + cuda::make_zip_iterator(cuda::std::make_tuple( arrow_schema.children.end(), pq_schema_elem.children_idx.end())), [&](auto const& elem) { co_walk_schemas(cuda::std::get<0>(elem), cuda::std::get<1>(elem)); @@ -1121,7 +1120,7 @@ void aggregate_reader_metadata::apply_arrow_schema() } // zip iterator to validate and co-walk the two schemas - auto schemas = thrust::make_zip_iterator( + auto schemas = cuda::make_zip_iterator( cuda::std::make_tuple(arrow_schema_root.children.begin(), pq_schema_root.children_idx.begin())); // Verify equal number of children at all sub-levels diff --git a/cpp/src/io/text/bgzip_data_chunk_source.cu b/cpp/src/io/text/bgzip_data_chunk_source.cu index 11d4e1b98eba..351e0f98a2ce 100644 --- a/cpp/src/io/text/bgzip_data_chunk_source.cu +++ b/cpp/src/io/text/bgzip_data_chunk_source.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -23,9 +23,9 @@ #include #include +#include #include #include -#include #include #include @@ -133,12 +133,12 @@ class bgzip_data_chunk_reader : public data_chunk_reader { d_decompressed_spans.resize(num_blocks(), stream); d_decompression_results.resize(num_blocks(), stream); - auto offset_it = thrust::make_zip_iterator(d_compressed_offsets.begin(), - d_compressed_offsets.begin() + 1, - d_decompressed_offsets.begin(), - d_decompressed_offsets.begin() + 1); + auto offset_it = cuda::make_zip_iterator(d_compressed_offsets.begin(), + d_compressed_offsets.begin() + 1, + d_decompressed_offsets.begin(), + d_decompressed_offsets.begin() + 1); auto span_it = - thrust::make_zip_iterator(d_compressed_spans.begin(), d_decompressed_spans.begin()); + cuda::make_zip_iterator(d_compressed_spans.begin(), d_decompressed_spans.begin()); thrust::transform( rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), offset_it, diff --git a/cpp/src/io/utilities/data_casting.cu b/cpp/src/io/utilities/data_casting.cu index 80de4860aa18..74bfbc825d7c 100644 --- a/cpp/src/io/utilities/data_casting.cu +++ b/cpp/src/io/utilities/data_casting.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -915,7 +915,7 @@ static std::unique_ptr parse_string(string_view_pair_it str_tuples, std::unique_ptr parse_data( char const* data, - thrust::zip_iterator> offset_length_begin, + cuda::zip_iterator offset_length_begin, size_type col_size, data_type col_type, rmm::device_buffer&& null_mask, diff --git a/cpp/src/io/utilities/string_parsing.hpp b/cpp/src/io/utilities/string_parsing.hpp index f77f0c2d6455..3204c1530531 100644 --- a/cpp/src/io/utilities/string_parsing.hpp +++ b/cpp/src/io/utilities/string_parsing.hpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2023-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ #pragma once @@ -13,8 +13,8 @@ #include +#include #include -#include namespace cudf::io { /** @@ -119,7 +119,7 @@ namespace detail { CUDF_EXPORT cudf::data_type infer_data_type( cudf::io::json_inference_options_view const& options, device_span data, - thrust::zip_iterator> offset_length_begin, + cuda::zip_iterator offset_length_begin, std::size_t const size, rmm::cuda_stream_view stream); } // namespace detail @@ -141,7 +141,7 @@ namespace json::detail { */ CUDF_EXPORT std::unique_ptr parse_data( char const* data, - thrust::zip_iterator> offset_length_begin, + cuda::zip_iterator offset_length_begin, size_type col_size, data_type col_type, rmm::device_buffer&& null_mask, diff --git a/cpp/src/io/utilities/type_inference.cu b/cpp/src/io/utilities/type_inference.cu index a86383d57412..ed20ff6e98a6 100644 --- a/cpp/src/io/utilities/type_inference.cu +++ b/cpp/src/io/utilities/type_inference.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -13,6 +13,7 @@ #include #include +#include #include #include @@ -247,7 +248,7 @@ cudf::io::column_type_histogram infer_column_type(OptionsView const& options, cudf::data_type infer_data_type( cudf::io::json_inference_options_view const& options, device_span data, - thrust::zip_iterator> offset_length_begin, + cuda::zip_iterator offset_length_begin, std::size_t const size, rmm::cuda_stream_view stream) { diff --git a/cpp/src/join/distinct_hash_join.cu b/cpp/src/join/distinct_hash_join.cu index 718f96bf29db..47e95ad15ea6 100644 --- a/cpp/src/join/distinct_hash_join.cu +++ b/cpp/src/join/distinct_hash_join.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ #include "join_common_utils.cuh" @@ -31,7 +31,6 @@ #include #include #include -#include #include #include @@ -302,8 +301,7 @@ distinct_hash_join::inner_join(cudf::table_view const& left, [found_iter = found_indices.begin()] __device__(size_type idx) { return cuda::std::tuple{*(found_iter + idx), idx}; })); - auto const output_begin = - thrust::make_zip_iterator(right_indices->begin(), left_indices->begin()); + auto const output_begin = cuda::make_zip_iterator(right_indices->begin(), left_indices->begin()); auto const output_end = cudf::detail::copy_if(tuple_iter, tuple_iter + left_table_num_rows, diff --git a/cpp/src/join/filter_join_indices/filter_join_indices.cu b/cpp/src/join/filter_join_indices/filter_join_indices.cu index 10cfbd1a6d8e..8986fa6d829a 100644 --- a/cpp/src/join/filter_join_indices/filter_join_indices.cu +++ b/cpp/src/join/filter_join_indices/filter_join_indices.cu @@ -37,7 +37,6 @@ #include #include #include -#include #include #include @@ -178,8 +177,8 @@ filter_join_indices(cudf::table_view const& left, auto [filtered_left_indices, filtered_right_indices] = make_result_vectors(num_valid); auto input_iter = - thrust::make_zip_iterator(cuda::std::tuple{left_indices.begin(), right_indices.begin()}); - auto output_iter = thrust::make_zip_iterator( + cuda::make_zip_iterator(cuda::std::tuple{left_indices.begin(), right_indices.begin()}); + auto output_iter = cuda::make_zip_iterator( cuda::std::tuple{filtered_left_indices->begin(), filtered_right_indices->begin()}); cudf::detail::copy_if_async( @@ -256,8 +255,8 @@ filter_join_indices(cudf::table_view const& left, auto [filtered_left_indices, filtered_right_indices] = make_result_vectors(output_size); if (num_valid > 0) { auto input_iter = - thrust::make_zip_iterator(cuda::std::tuple{left_indices.begin(), right_indices.begin()}); - auto output_iter = thrust::make_zip_iterator( + cuda::make_zip_iterator(cuda::std::tuple{left_indices.begin(), right_indices.begin()}); + auto output_iter = cuda::make_zip_iterator( cuda::std::tuple{filtered_left_indices->begin(), filtered_right_indices->begin()}); auto valid_predicate = [predicate_results_ptr] __device__(auto i) -> bool { return predicate_results_ptr[i]; @@ -322,8 +321,8 @@ filter_join_indices(cudf::table_view const& left, thrust::transform(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), cuda::counting_iterator{0}, cuda::counting_iterator{static_cast(left_indices.size())}, - thrust::make_zip_iterator(cuda::std::tuple{filtered_left_indices->begin(), - filtered_right_indices->begin()}), + cuda::make_zip_iterator(cuda::std::tuple{filtered_left_indices->begin(), + filtered_right_indices->begin()}), [=] __device__(size_type i) -> cuda::std::tuple { auto const left_idx = left_ptr[i]; auto const right_idx = right_ptr[i]; @@ -338,7 +337,7 @@ filter_join_indices(cudf::table_view const& left, // Step 2: Add secondary pairs for failed matches using stream compaction if (failed_matched_count > 0) { - auto secondary_iter = thrust::make_zip_iterator( + auto secondary_iter = cuda::make_zip_iterator( cuda::std::tuple{filtered_left_indices->begin() + left_indices.size(), filtered_right_indices->begin() + left_indices.size()}); diff --git a/cpp/src/join/filter_join_indices/filter_join_indices_jit.cu b/cpp/src/join/filter_join_indices/filter_join_indices_jit.cu index 978875d8d314..ff3a7c1470c6 100644 --- a/cpp/src/join/filter_join_indices/filter_join_indices_jit.cu +++ b/cpp/src/join/filter_join_indices/filter_join_indices_jit.cu @@ -31,7 +31,6 @@ #include #include #include -#include #include #include @@ -215,8 +214,8 @@ apply_join_semantics(cudf::table_view const& left, auto [filtered_left_indices, filtered_right_indices] = make_result_vectors(num_valid); auto input_iter = - thrust::make_zip_iterator(cuda::std::tuple{left_indices.begin(), right_indices.begin()}); - auto output_iter = thrust::make_zip_iterator( + cuda::make_zip_iterator(cuda::std::tuple{left_indices.begin(), right_indices.begin()}); + auto output_iter = cuda::make_zip_iterator( cuda::std::tuple{filtered_left_indices->begin(), filtered_right_indices->begin()}); cudf::detail::copy_if( @@ -272,8 +271,8 @@ apply_join_semantics(cudf::table_view const& left, auto [filtered_left_indices, filtered_right_indices] = make_result_vectors(output_size); if (num_valid > 0) { auto input_iter = - thrust::make_zip_iterator(cuda::std::tuple{left_indices.begin(), right_indices.begin()}); - auto output_iter = thrust::make_zip_iterator( + cuda::make_zip_iterator(cuda::std::tuple{left_indices.begin(), right_indices.begin()}); + auto output_iter = cuda::make_zip_iterator( cuda::std::tuple{filtered_left_indices->begin(), filtered_right_indices->begin()}); auto valid_predicate = [predicate_results_ptr] __device__(auto i) -> bool { return predicate_results_ptr[i]; @@ -324,8 +323,8 @@ apply_join_semantics(cudf::table_view const& left, thrust::transform(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), cuda::counting_iterator{0}, cuda::counting_iterator{static_cast(left_indices.size())}, - thrust::make_zip_iterator(cuda::std::tuple{filtered_left_indices->begin(), - filtered_right_indices->begin()}), + cuda::make_zip_iterator(cuda::std::tuple{filtered_left_indices->begin(), + filtered_right_indices->begin()}), [=] __device__(size_type i) -> cuda::std::tuple { auto const left_idx = left_ptr[i]; auto const right_idx = right_ptr[i]; @@ -336,7 +335,7 @@ apply_join_semantics(cudf::table_view const& left, }); if (failed_matched_count > 0) { - auto secondary_iter = thrust::make_zip_iterator( + auto secondary_iter = cuda::make_zip_iterator( cuda::std::tuple{filtered_left_indices->begin() + left_indices.size(), filtered_right_indices->begin() + left_indices.size()}); diff --git a/cpp/src/join/join_utils.cu b/cpp/src/join/join_utils.cu index c345eb6a9153..a10c19b9ca18 100644 --- a/cpp/src/join/join_utils.cu +++ b/cpp/src/join/join_utils.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -24,7 +24,6 @@ #include #include #include -#include #include #include #include @@ -133,7 +132,7 @@ VectorPair finalize_full_join(VectorPair&& indices, // Fused compaction: for each unmatched right row, emit (JoinNoMatch, right_idx) into // (left_out_tail, right_out_tail) in a single CUB DeviceSelect pass. auto zip_tail = - thrust::make_zip_iterator(left_out->data() + match_total, right_out->data() + match_total); + cuda::make_zip_iterator(left_out->data() + match_total, right_out->data() + match_total); auto out_iter = thrust::make_transform_output_iterator(zip_tail, to_no_match_pair{}); auto const new_end = diff --git a/cpp/src/join/mixed_join.cu b/cpp/src/join/mixed_join.cu index 79d359c7b01a..c57ca111d88f 100644 --- a/cpp/src/join/mixed_join.cu +++ b/cpp/src/join/mixed_join.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -156,7 +156,7 @@ precompute_mixed_join_data(mixed_multiset_type const& hash_table, rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), cuda::counting_iterator{0}, cuda::counting_iterator{probe_table_num_rows}, - thrust::make_zip_iterator(cuda::std::make_tuple(input_pairs.begin(), hash_indices.begin())), + cuda::make_zip_iterator(cuda::std::make_tuple(input_pairs.begin(), hash_indices.begin())), precompute_fn); return std::make_pair(std::move(input_pairs), std::move(hash_indices)); diff --git a/cpp/src/lists/dremel.cu b/cpp/src/lists/dremel.cu index 89e20748c6bb..b9f6cf2e3450 100644 --- a/cpp/src/lists/dremel.cu +++ b/cpp/src/lists/dremel.cu @@ -23,7 +23,6 @@ #include #include #include -#include #include @@ -312,13 +311,13 @@ dremel_data get_encoding(column_view h_col, // Zip the input and output value iterators so that merge operation is done only once auto input_parent_zip_it = - thrust::make_zip_iterator(cuda::std::make_tuple(input_parent_rep_it, input_parent_def_it)); + cuda::make_zip_iterator(cuda::std::make_tuple(input_parent_rep_it, input_parent_def_it)); auto input_child_zip_it = - thrust::make_zip_iterator(cuda::std::make_tuple(input_child_rep_it, input_child_def_it)); + cuda::make_zip_iterator(cuda::std::make_tuple(input_child_rep_it, input_child_def_it)); auto output_zip_it = - thrust::make_zip_iterator(cuda::std::make_tuple(rep_level.begin(), def_level.begin())); + cuda::make_zip_iterator(cuda::std::make_tuple(rep_level.begin(), def_level.begin())); auto ends = thrust::merge_by_key(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), @@ -402,13 +401,13 @@ dremel_data get_encoding(column_view h_col, // Zip the input and output value iterators so that merge operation is done only once auto input_parent_zip_it = - thrust::make_zip_iterator(cuda::std::make_tuple(input_parent_rep_it, input_parent_def_it)); + cuda::make_zip_iterator(cuda::std::make_tuple(input_parent_rep_it, input_parent_def_it)); - auto input_child_zip_it = thrust::make_zip_iterator( - cuda::std::make_tuple(temp_rep_vals.begin(), temp_def_vals.begin())); + auto input_child_zip_it = + cuda::make_zip_iterator(cuda::std::make_tuple(temp_rep_vals.begin(), temp_def_vals.begin())); auto output_zip_it = - thrust::make_zip_iterator(cuda::std::make_tuple(rep_level.begin(), def_level.begin())); + cuda::make_zip_iterator(cuda::std::make_tuple(rep_level.begin(), def_level.begin())); auto ends = thrust::merge_by_key(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), diff --git a/cpp/src/quantiles/tdigest/tdigest_aggregation.cu b/cpp/src/quantiles/tdigest/tdigest_aggregation.cu index 4c3a4ed64826..ffa3a3d7a28a 100644 --- a/cpp/src/quantiles/tdigest/tdigest_aggregation.cu +++ b/cpp/src/quantiles/tdigest/tdigest_aggregation.cu @@ -38,7 +38,6 @@ #include #include #include -#include #include #include #include @@ -1046,7 +1045,7 @@ std::unique_ptr compute_tdigests(int delta, cudf::mutable_column_view weight_col(*centroid_weights); // reduce the centroids into the clusters - auto output = thrust::make_zip_iterator(cuda::std::make_tuple( + auto output = cuda::make_zip_iterator(cuda::std::make_tuple( mean_col.begin(), weight_col.begin(), cuda::make_discard_iterator())); auto const num_values = std::distance(centroids_begin, centroids_end); @@ -1180,8 +1179,8 @@ struct typed_group_tdigest { rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), cuda::counting_iterator{0}, cuda::counting_iterator{0} + num_groups, - thrust::make_zip_iterator(cuda::std::make_tuple(min_col->mutable_view().begin(), - max_col->mutable_view().begin())), + cuda::make_zip_iterator(cuda::std::make_tuple(min_col->mutable_view().begin(), + max_col->mutable_view().begin())), get_scalar_minmax_grouped{*d_col, group_offsets, group_valid_counts.data()}); // for simple input values, the "centroids" all have a weight of 1. @@ -1259,8 +1258,8 @@ struct typed_reduce_tdigest { rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), cuda::counting_iterator{0}, cuda::counting_iterator{0} + 1, - thrust::make_zip_iterator(cuda::std::make_tuple(min_col->mutable_view().begin(), - max_col->mutable_view().begin())), + cuda::make_zip_iterator(cuda::std::make_tuple(min_col->mutable_view().begin(), + max_col->mutable_view().begin())), get_scalar_minmax{*d_col, valid_count}); // for simple input values, the "centroids" all have a weight of 1. @@ -1451,7 +1450,7 @@ std::unique_ptr merge_tdigests(tdigest_column_view const& tdv, auto merged_min_col = cudf::make_numeric_column( data_type{type_id::FLOAT64}, num_groups, mask_state::UNALLOCATED, stream, mr); auto min_iter = - thrust::make_transform_iterator(thrust::make_zip_iterator(cuda::std::make_tuple( + thrust::make_transform_iterator(cuda::make_zip_iterator(cuda::std::make_tuple( tdv.min_begin(), cudf::tdigest::detail::size_begin(tdv))), tdigest_min{}); thrust::reduce_by_key(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), @@ -1466,7 +1465,7 @@ std::unique_ptr merge_tdigests(tdigest_column_view const& tdv, auto merged_max_col = cudf::make_numeric_column( data_type{type_id::FLOAT64}, num_groups, mask_state::UNALLOCATED, stream, mr); auto max_iter = - thrust::make_transform_iterator(thrust::make_zip_iterator(cuda::std::make_tuple( + thrust::make_transform_iterator(cuda::make_zip_iterator(cuda::std::make_tuple( tdv.max_begin(), cudf::tdigest::detail::size_begin(tdv))), tdigest_max{}); thrust::reduce_by_key(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), diff --git a/cpp/src/reductions/histogram.cu b/cpp/src/reductions/histogram.cu index b70a65e4c6bb..e0408d64ee4f 100644 --- a/cpp/src/reductions/histogram.cu +++ b/cpp/src/reductions/histogram.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -23,7 +23,6 @@ #include #include #include -#include #include #include @@ -181,9 +180,9 @@ compute_row_frequencies(table_view const& input, data_type{type_to_id()}, set_size, mask_state::UNALLOCATED, stream, mr); // Copy row indices and counts to the output if counts are non-zero - auto const input_it = thrust::make_zip_iterator( + auto const input_it = cuda::make_zip_iterator( cuda::std::make_tuple(cuda::counting_iterator{0}, reduction_results.begin())); - auto const output_it = thrust::make_zip_iterator(cuda::std::make_tuple( + auto const output_it = cuda::make_zip_iterator(cuda::std::make_tuple( distinct_indices->begin(), distinct_counts->mutable_view().begin())); // Reduction results above are either group sizes of equal rows, or `0`. diff --git a/cpp/src/reductions/scan/ewm.cu b/cpp/src/reductions/scan/ewm.cu index dea775762f52..679a7d4ba2e4 100644 --- a/cpp/src/reductions/scan/ewm.cu +++ b/cpp/src/reductions/scan/ewm.cu @@ -164,7 +164,7 @@ rmm::device_uvector compute_ewma_adjust(column_view const& input, auto device_view = column_device_view::create(input, stream); auto valid_it = cudf::detail::make_validity_iterator(*device_view); auto data = - thrust::make_zip_iterator(cuda::std::make_tuple(valid_it, nullcnt.begin(), input.begin())); + cuda::make_zip_iterator(cuda::std::make_tuple(valid_it, nullcnt.begin(), input.begin())); thrust::transform_inclusive_scan( rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), @@ -242,7 +242,7 @@ rmm::device_uvector compute_ewma_noadjust(column_view const& input, // pairs are all (beta, 1-beta x_i) except for the first one if (!input.has_nulls()) { - auto data = thrust::make_zip_iterator( + auto data = cuda::make_zip_iterator( cuda::std::make_tuple(input.begin(), cuda::counting_iterator{0})); thrust::transform_inclusive_scan( rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), @@ -256,7 +256,7 @@ rmm::device_uvector compute_ewma_noadjust(column_view const& input, auto device_view = column_device_view::create(input, stream); auto valid_it = detail::make_validity_iterator(*device_view); - auto data = thrust::make_zip_iterator(cuda::std::make_tuple( + auto data = cuda::make_zip_iterator(cuda::std::make_tuple( input.begin(), cuda::counting_iterator{0}, valid_it, nullcnt.begin())); thrust::transform_inclusive_scan( diff --git a/cpp/src/reductions/segmented/simple.cuh b/cpp/src/reductions/segmented/simple.cuh index 236def072149..3668c3b53d94 100644 --- a/cpp/src/reductions/segmented/simple.cuh +++ b/cpp/src/reductions/segmented/simple.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -27,7 +27,6 @@ #include #include #include -#include #include #include diff --git a/cpp/src/replace/clamp.cu b/cpp/src/replace/clamp.cu index 601f8c669650..79986de1c11e 100644 --- a/cpp/src/replace/clamp.cu +++ b/cpp/src/replace/clamp.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -35,7 +35,6 @@ #include #include #include -#include #include namespace cudf { @@ -206,8 +205,8 @@ std::unique_ptr clamper(column_view const& input, auto output_device_view = cudf::mutable_column_device_view::create(output->mutable_view(), stream); auto input_device_view = cudf::column_device_view::create(input, stream); - auto scalar_zip_itr = thrust::make_zip_iterator( - cuda::std::make_tuple(lo_itr, lo_replace_itr, hi_itr, hi_replace_itr)); + auto scalar_zip_itr = + cuda::make_zip_iterator(cuda::std::make_tuple(lo_itr, lo_replace_itr, hi_itr, hi_replace_itr)); auto trans = cuda::proclaim_return_type([] __device__(auto element_optional, auto scalar_tuple) { diff --git a/cpp/src/sort/sorted_order_radix.cu b/cpp/src/sort/sorted_order_radix.cu index 739c3b8bf829..52be2fe3acb2 100644 --- a/cpp/src/sort/sorted_order_radix.cu +++ b/cpp/src/sort/sorted_order_radix.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -17,7 +17,6 @@ #include #include -#include #include #include @@ -109,7 +108,7 @@ struct sorted_order_radix_fn { auto dv_in = vals.begin(); auto dv_out = indices.begin(); - auto zip_out = thrust::make_zip_iterator(d_in, dv_in); + auto zip_out = cuda::make_zip_iterator(d_in, dv_in); thrust::transform(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), cuda::counting_iterator{0}, cuda::counting_iterator{input.size()}, diff --git a/cpp/src/strings/replace/multi.cu b/cpp/src/strings/replace/multi.cu index d9c53d9f8de9..1a7e4d40502b 100644 --- a/cpp/src/strings/replace/multi.cu +++ b/cpp/src/strings/replace/multi.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -344,7 +344,7 @@ std::unique_ptr replace_character_parallel(strings_column_view const& in // cudf::detail::make_counting_transform_iterator hardcodes size_type auto const copy_itr = thrust::make_transform_iterator(cuda::counting_iterator{0}, pair_generator{fn, chars_bytes}); - auto const out_itr = thrust::make_zip_iterator( + auto const out_itr = cuda::make_zip_iterator( cuda::std::make_tuple(targets_positions.begin(), targets_indices.begin())); auto const copy_end = cudf::detail::copy_if(copy_itr, copy_itr + chars_bytes, out_itr, copy_if_fn{}, stream); diff --git a/cpp/tests/groupby/host_udf_example_tests.cu b/cpp/tests/groupby/host_udf_example_tests.cu index 18c141ddb5ce..4b6793844907 100644 --- a/cpp/tests/groupby/host_udf_example_tests.cu +++ b/cpp/tests/groupby/host_udf_example_tests.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -19,7 +19,6 @@ #include #include #include -#include #include using doubles_col = cudf::test::fixed_width_column_wrapper; @@ -104,7 +103,7 @@ struct host_udf_groupby_example : cudf::groupby_host_udf { rmm::exec_policy_nosync(stream), cuda::counting_iterator{0}, cuda::counting_iterator{num_groups}, - thrust::make_zip_iterator(output->mutable_view().begin(), valid_idx.begin()), + cuda::make_zip_iterator(output->mutable_view().begin(), valid_idx.begin()), transform_fn{*values_dv_ptr, offsets, group_indices, diff --git a/cpp/tests/io/json/json_type_cast_test.cpp b/cpp/tests/io/json/json_type_cast_test.cpp index ce868eb5b1f4..f8a4bddc1371 100644 --- a/cpp/tests/io/json/json_type_cast_test.cpp +++ b/cpp/tests/io/json/json_type_cast_test.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -22,6 +22,7 @@ #include +#include #include #include @@ -62,7 +63,7 @@ TEST_F(JSONTypeCastTest, String) auto str_col = cudf::io::json::detail::parse_data( column.chars_begin(stream), - thrust::make_zip_iterator( + cuda::make_zip_iterator( cuda::std::make_tuple(column.offsets().begin(), svs_length.begin())), column.size(), type, @@ -95,7 +96,7 @@ TEST_F(JSONTypeCastTest, Int) auto col = cudf::io::json::detail::parse_data( column.chars_begin(stream), - thrust::make_zip_iterator( + cuda::make_zip_iterator( cuda::std::make_tuple(column.offsets().begin(), svs_length.begin())), column.size(), type, @@ -136,7 +137,7 @@ TEST_F(JSONTypeCastTest, StringEscapes) auto col = cudf::io::json::detail::parse_data( column.chars_begin(stream), - thrust::make_zip_iterator( + cuda::make_zip_iterator( cuda::std::make_tuple(column.offsets().begin(), svs_length.begin())), column.size(), type, @@ -206,7 +207,7 @@ TEST_F(JSONTypeCastTest, ErrorNulls) auto str_col = cudf::io::json::detail::parse_data( column.chars_begin(stream), - thrust::make_zip_iterator( + cuda::make_zip_iterator( cuda::std::make_tuple(column.offsets().begin(), svs_length.begin())), column.size(), type, diff --git a/cpp/tests/io/json/nested_json_test.cpp b/cpp/tests/io/json/nested_json_test.cpp index c5aa6f028723..9966101d6200 100644 --- a/cpp/tests/io/json/nested_json_test.cpp +++ b/cpp/tests/io/json/nested_json_test.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -18,8 +18,8 @@ #include #include +#include #include -#include #include #include @@ -835,7 +835,7 @@ TEST_F(JsonTest, PostProcessTokenStream) auto const stream = cudf::get_default_stream(); std::vector offsets(input.size()); std::vector tokens(input.size()); - auto token_tuples = thrust::make_zip_iterator(offsets.begin(), tokens.begin()); + auto token_tuples = cuda::make_zip_iterator(offsets.begin(), tokens.begin()); thrust::copy(input.cbegin(), input.cend(), token_tuples); // Initialize device-side test data diff --git a/cpp/tests/io/type_inference_test.cpp b/cpp/tests/io/type_inference_test.cpp index 09afef017492..3a3425044616 100644 --- a/cpp/tests/io/type_inference_test.cpp +++ b/cpp/tests/io/type_inference_test.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2022-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -16,8 +16,8 @@ #include #include +#include #include -#include #include #include @@ -49,7 +49,7 @@ TEST_F(TypeInference, Basic) auto const d_string_length = cudf::detail::make_device_uvector_async( string_length, cudf::get_default_stream(), cudf::get_current_device_resource_ref()); - auto d_col_strings = thrust::make_zip_iterator( + auto d_col_strings = cuda::make_zip_iterator( cuda::std::make_tuple(d_string_offset.begin(), d_string_length.begin())); auto res_type = @@ -82,7 +82,7 @@ TEST_F(TypeInference, Null) auto const d_string_length = cudf::detail::make_device_uvector_async( string_length, cudf::get_default_stream(), cudf::get_current_device_resource_ref()); - auto d_col_strings = thrust::make_zip_iterator( + auto d_col_strings = cuda::make_zip_iterator( cuda::std::make_tuple(d_string_offset.begin(), d_string_length.begin())); auto res_type = @@ -115,7 +115,7 @@ TEST_F(TypeInference, AllNull) auto const d_string_length = cudf::detail::make_device_uvector_async( string_length, cudf::get_default_stream(), cudf::get_current_device_resource_ref()); - auto d_col_strings = thrust::make_zip_iterator( + auto d_col_strings = cuda::make_zip_iterator( cuda::std::make_tuple(d_string_offset.begin(), d_string_length.begin())); auto res_type = @@ -148,7 +148,7 @@ TEST_F(TypeInference, String) auto const d_string_length = cudf::detail::make_device_uvector_async( string_length, cudf::get_default_stream(), cudf::get_current_device_resource_ref()); - auto d_col_strings = thrust::make_zip_iterator( + auto d_col_strings = cuda::make_zip_iterator( cuda::std::make_tuple(d_string_offset.begin(), d_string_length.begin())); auto res_type = @@ -181,7 +181,7 @@ TEST_F(TypeInference, Bool) auto const d_string_length = cudf::detail::make_device_uvector_async( string_length, cudf::get_default_stream(), cudf::get_current_device_resource_ref()); - auto d_col_strings = thrust::make_zip_iterator( + auto d_col_strings = cuda::make_zip_iterator( cuda::std::make_tuple(d_string_offset.begin(), d_string_length.begin())); auto res_type = @@ -214,7 +214,7 @@ TEST_F(TypeInference, Timestamp) auto const d_string_length = cudf::detail::make_device_uvector_async( string_length, cudf::get_default_stream(), cudf::get_current_device_resource_ref()); - auto d_col_strings = thrust::make_zip_iterator( + auto d_col_strings = cuda::make_zip_iterator( cuda::std::make_tuple(d_string_offset.begin(), d_string_length.begin())); auto res_type = @@ -248,7 +248,7 @@ TEST_F(TypeInference, InvalidInput) auto const d_string_length = cudf::detail::make_device_uvector_async( string_length, cudf::get_default_stream(), cudf::get_current_device_resource_ref()); - auto d_col_strings = thrust::make_zip_iterator( + auto d_col_strings = cuda::make_zip_iterator( cuda::std::make_tuple(d_string_offset.begin(), d_string_length.begin())); auto res_type = diff --git a/cpp/tests/partitioning/partition_test.cpp b/cpp/tests/partitioning/partition_test.cpp index 26c0c982f84d..1655373280dd 100644 --- a/cpp/tests/partitioning/partition_test.cpp +++ b/cpp/tests/partitioning/partition_test.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ #include @@ -14,8 +14,8 @@ #include #include +#include #include -#include #include @@ -96,9 +96,9 @@ void expect_equal_partitions(cudf::table_view expected, auto expected_split = cudf::split(expected, split_points); auto begin = - thrust::make_zip_iterator(cuda::std::make_tuple(expected_split.begin(), actual_split.begin())); + cuda::make_zip_iterator(cuda::std::make_tuple(expected_split.begin(), actual_split.begin())); auto end = - thrust::make_zip_iterator(cuda::std::make_tuple(expected_split.end(), actual_split.end())); + cuda::make_zip_iterator(cuda::std::make_tuple(expected_split.end(), actual_split.end())); std::for_each(begin, end, [](auto const& zipped) { auto [expected, actual] = zipped; diff --git a/cpp/tests/reductions/host_udf_example_tests.cu b/cpp/tests/reductions/host_udf_example_tests.cu index 0c304cb69b4c..44706c2e6e1f 100644 --- a/cpp/tests/reductions/host_udf_example_tests.cu +++ b/cpp/tests/reductions/host_udf_example_tests.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -20,7 +20,6 @@ #include #include #include -#include #include using doubles_col = cudf::test::fixed_width_column_wrapper; @@ -259,7 +258,7 @@ struct host_udf_segmented_reduction_example : cudf::segmented_reduce_host_udf { rmm::exec_policy_nosync(stream), cuda::counting_iterator{0}, cuda::counting_iterator{num_segments}, - thrust::make_zip_iterator(output->mutable_view().begin(), valid_idx.begin()), + cuda::make_zip_iterator(output->mutable_view().begin(), valid_idx.begin()), transform_fn{*input_dv_ptr, offsets, static_cast(init_value), null_handling}); auto const valid_idx_cv = cudf::column_view{ diff --git a/cpp/tests/transform/integration/assert_unary.h b/cpp/tests/transform/integration/assert_unary.h index 116bfa8c0efe..823cd8e80d05 100644 --- a/cpp/tests/transform/integration/assert_unary.h +++ b/cpp/tests/transform/integration/assert_unary.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -9,8 +9,8 @@ #include #include +#include #include -#include #include @@ -25,8 +25,8 @@ void ASSERT_UNARY(cudf::column_view const& out, cudf::column_view const& in, Typ ASSERT_EQ(out_data.size(), in_data.size()); - auto begin = thrust::make_zip_iterator(cuda::std::make_tuple(in_data.begin(), out_data.begin())); - auto end = thrust::make_zip_iterator(cuda::std::make_tuple(in_data.end(), out_data.end())); + auto begin = cuda::make_zip_iterator(cuda::std::make_tuple(in_data.begin(), out_data.begin())); + auto end = cuda::make_zip_iterator(cuda::std::make_tuple(in_data.end(), out_data.end())); std::for_each(begin, end, [ope](auto const& zipped) { auto [in_val, out_val] = zipped; @@ -39,9 +39,8 @@ void ASSERT_UNARY(cudf::column_view const& out, cudf::column_view const& in, Typ ASSERT_EQ(out_valid.size(), in_valid.size()); auto valid_begin = - thrust::make_zip_iterator(cuda::std::make_tuple(in_valid.begin(), out_valid.begin())); - auto valid_end = - thrust::make_zip_iterator(cuda::std::make_tuple(in_valid.end(), out_valid.end())); + cuda::make_zip_iterator(cuda::std::make_tuple(in_valid.begin(), out_valid.begin())); + auto valid_end = cuda::make_zip_iterator(cuda::std::make_tuple(in_valid.end(), out_valid.end())); std::for_each(valid_begin, valid_end, [](auto const& zipped) { auto [in_flag, out_flag] = zipped; diff --git a/cpp/tests/utilities_tests/batched_memset_tests.cu b/cpp/tests/utilities_tests/batched_memset_tests.cu index 5376f92da2a9..8a345a27e191 100644 --- a/cpp/tests/utilities_tests/batched_memset_tests.cu +++ b/cpp/tests/utilities_tests/batched_memset_tests.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -15,9 +15,9 @@ #include +#include #include #include -#include #include @@ -42,8 +42,8 @@ TEST(MultiBufferTestIntegral, BasicTest1) // set buffer region to other value std::for_each( - thrust::make_zip_iterator(cuda::std::make_tuple(expected.begin(), buffer_sizes.begin())), - thrust::make_zip_iterator(cuda::std::make_tuple(expected.end(), buffer_sizes.end())), + cuda::make_zip_iterator(cuda::std::make_tuple(expected.begin(), buffer_sizes.begin())), + cuda::make_zip_iterator(cuda::std::make_tuple(expected.end(), buffer_sizes.end())), [](auto elem) { std::fill_n( cuda::std::get<0>(elem).begin() + 1000, cuda::std::get<1>(elem), 0xEEEEEEEEEEEEEEEE); @@ -62,8 +62,8 @@ TEST(MultiBufferTestIntegral, BasicTest1) auto buffers = cudf::detail::make_host_vector>(device_buffers.size(), stream); std::transform( - thrust::make_zip_iterator(cuda::std::make_tuple(device_buffers.begin(), buffer_sizes.begin())), - thrust::make_zip_iterator(cuda::std::make_tuple(device_buffers.end(), buffer_sizes.end())), + cuda::make_zip_iterator(cuda::std::make_tuple(device_buffers.begin(), buffer_sizes.begin())), + cuda::make_zip_iterator(cuda::std::make_tuple(device_buffers.end(), buffer_sizes.end())), buffers.begin(), [](auto const& elem) { return cudf::device_span(cuda::std::get<0>(elem).data() + 1000, @@ -75,16 +75,16 @@ TEST(MultiBufferTestIntegral, BasicTest1) // Set all buffer regions to 0 for expected comparison std::for_each( - thrust::make_zip_iterator(cuda::std::make_tuple(expected.begin(), buffer_sizes.begin())), - thrust::make_zip_iterator(cuda::std::make_tuple(expected.end(), buffer_sizes.end())), + cuda::make_zip_iterator(cuda::std::make_tuple(expected.begin(), buffer_sizes.begin())), + cuda::make_zip_iterator(cuda::std::make_tuple(expected.end(), buffer_sizes.end())), [](auto elem) { std::fill_n(cuda::std::get<0>(elem).begin() + 1000, cuda::std::get<1>(elem), 0UL); }); // Compare to see that only given buffers are zeroed out std::for_each( - thrust::make_zip_iterator(cuda::std::make_tuple(device_buffers.begin(), expected.begin())), - thrust::make_zip_iterator(cuda::std::make_tuple(device_buffers.end(), expected.end())), + cuda::make_zip_iterator(cuda::std::make_tuple(device_buffers.begin(), expected.begin())), + cuda::make_zip_iterator(cuda::std::make_tuple(device_buffers.end(), expected.end())), [stream](auto const& elem) { auto const after_memset = cudf::detail::make_host_vector(cuda::std::get<0>(elem), stream); EXPECT_TRUE(std::equal( From 111eade9a9b4b1dd01b8d464c9214e99e0031158 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Fri, 10 Apr 2026 13:32:23 -0700 Subject: [PATCH 02/27] Migrate transform iterator --- cpp/benchmarks/common/generate_input.cu | 5 +- cpp/benchmarks/io/orc/orc_writer_chunks.cpp | 6 +- cpp/benchmarks/iterator/iterator.cu | 1 - cpp/benchmarks/transpose/transpose.cpp | 3 +- .../cudf/column/column_device_view.cuh | 11 +- cpp/include/cudf/detail/indexalator.cuh | 3 +- cpp/include/cudf/detail/iterator.cuh | 11 +- cpp/include/cudf/detail/null_mask.cuh | 15 +-- .../cudf/detail/row_operator/hashing.cuh | 4 +- cpp/include/cudf/detail/scatter.cuh | 5 +- .../cudf/detail/utilities/batched_memset.hpp | 5 +- .../utilities/transform_unary_functions.cuh | 6 +- cpp/include/cudf/lists/detail/scatter.cuh | 3 +- cpp/include/cudf/lists/list_device_view.cuh | 5 +- cpp/include/cudf/strings/detail/gather.cuh | 6 +- cpp/include/cudf/strings/detail/scatter.cuh | 4 +- .../cudf/strings/detail/strings_children.cuh | 6 +- .../detail/strings_column_factories.cuh | 4 +- cpp/include/cudf_test/column_utilities.hpp | 2 +- cpp/include/cudf_test/column_wrapper.hpp | 15 +-- cpp/include/cudf_test/iterator_utilities.hpp | 3 +- cpp/include/cudf_test/print_utilities.cuh | 4 +- cpp/src/ast/expression_parser.cpp | 4 +- cpp/src/column/column.cu | 4 +- cpp/src/column/column_view.cpp | 4 +- cpp/src/copying/contiguous_split.cu | 5 +- cpp/src/copying/gather.cu | 6 +- cpp/src/copying/scatter.cu | 3 +- cpp/src/copying/segmented_shift.cu | 2 +- cpp/src/copying/slice.cu | 4 +- cpp/src/groupby/sort/group_count.cu | 3 +- cpp/src/groupby/sort/group_nth_element.cu | 3 +- cpp/src/groupby/sort/group_nunique.cu | 1 - cpp/src/groupby/sort/group_scan_util.cuh | 5 +- cpp/src/groupby/sort/group_std.cu | 1 - cpp/src/io/csv/durations.cu | 1 - cpp/src/io/csv/reader_impl.cu | 2 +- cpp/src/io/fst/logical_stack.cuh | 11 +- cpp/src/io/json/host_tree_algorithms.cu | 2 +- cpp/src/io/json/json_normalization.cu | 4 +- cpp/src/io/json/nested_json_gpu.cu | 1 - cpp/src/io/orc/reader_impl_chunking.cu | 4 +- cpp/src/io/orc/writer_impl.cu | 3 +- .../experimental/hybrid_scan_chunking.cu | 2 +- .../parquet/experimental/page_index_filter.cu | 6 +- cpp/src/io/parquet/page_data.cu | 3 +- cpp/src/io/parquet/page_enc.cu | 1 - cpp/src/io/parquet/parquet_gpu.hpp | 3 +- .../parquet/reader_impl_preprocess_utils.cu | 1 - cpp/src/io/utilities/data_casting.cu | 2 +- cpp/src/jit/helpers.cpp | 6 +- cpp/src/jit/helpers.hpp | 2 +- cpp/src/lists/combine/concatenate_rows.cu | 11 +- cpp/src/lists/copying/scatter_helper.cu | 7 +- cpp/src/lists/dremel.cu | 8 +- cpp/src/lists/explode.cu | 11 +- cpp/src/partitioning/round_robin.cu | 9 +- cpp/src/quantiles/quantile.cu | 3 +- cpp/src/quantiles/quantiles.cu | 3 +- cpp/src/quantiles/tdigest/tdigest.cu | 3 +- .../quantiles/tdigest/tdigest_aggregation.cu | 7 +- cpp/src/reductions/all.cu | 3 +- cpp/src/reductions/any.cu | 3 +- cpp/src/reductions/compound.cuh | 8 +- cpp/src/reductions/extrema_utils.cuh | 2 +- cpp/src/reductions/minmax.cu | 6 +- cpp/src/reductions/nth_element.cu | 4 +- cpp/src/reductions/scan/ewm.cu | 2 +- cpp/src/reductions/segmented/compound.cuh | 6 +- cpp/src/reductions/segmented/simple.cuh | 5 +- cpp/src/reductions/simple.cuh | 7 +- cpp/src/replace/clamp.cu | 1 - cpp/src/reshape/interleave_columns.cu | 3 +- cpp/src/reshape/table_to_array.cu | 1 - cpp/src/reshape/tile.cu | 2 +- .../rolling/detail/rolling_collect_list.cuh | 1 - cpp/src/row_operator/row_operators.cu | 4 +- cpp/src/sort/rank.cu | 3 +- cpp/src/strings/replace/multi.cu | 2 +- cpp/src/strings/search/contains_multiple.cu | 5 +- cpp/src/strings/strings_column_factories.cu | 4 +- cpp/src/text/deduplicate.cu | 4 +- cpp/src/text/normalize.cu | 5 +- cpp/src/text/wordpiece_tokenize.cu | 3 +- cpp/src/transpose/transpose.cu | 3 +- cpp/src/utilities/linked_column.cpp | 6 +- cpp/tests/copying/copy_range_tests.cpp | 7 +- cpp/tests/copying/split_tests.cpp | 3 +- cpp/tests/copying/utility_tests.cpp | 4 +- cpp/tests/dictionary/factories_test.cpp | 4 +- cpp/tests/dictionary/remove_keys_test.cpp | 4 +- cpp/tests/dictionary/set_keys_test.cpp | 4 +- cpp/tests/io/orc_chunked_reader_test.cu | 2 +- .../iterator/value_iterator_test_transform.cu | 8 +- cpp/tests/join/semi_anti_join_tests.cpp | 2 +- .../partitioning/hash_partition_test.cpp | 7 +- .../rolling/grouped_rolling_range_test.cpp | 2 +- cpp/tests/rolling/lead_lag_test.cpp | 2 +- cpp/tests/rolling/nth_element_test.cpp | 2 +- .../rolling/range_rolling_window_test.cpp | 5 +- cpp/tests/search/search_test.cpp | 126 +++++++++--------- cpp/tests/streams/copying_test.cpp | 2 +- cpp/tests/streams/strings/attributes_test.cpp | 6 +- cpp/tests/strings/array_tests.cpp | 5 +- cpp/tests/strings/attrs_tests.cpp | 10 +- cpp/tests/strings/booleans_tests.cpp | 10 +- cpp/tests/strings/case_tests.cpp | 14 +- cpp/tests/strings/chars_types_tests.cpp | 18 +-- .../strings/combine/concatenate_tests.cpp | 14 +- .../strings/combine/join_strings_tests.cpp | 4 +- cpp/tests/strings/contains_tests.cpp | 15 +-- cpp/tests/strings/datetime_tests.cpp | 10 +- cpp/tests/strings/durations_tests.cpp | 30 ++--- cpp/tests/strings/extract_tests.cpp | 22 +-- cpp/tests/strings/find_multiple_tests.cpp | 4 +- cpp/tests/strings/findall_tests.cpp | 2 +- cpp/tests/strings/floats_tests.cpp | 14 +- cpp/tests/strings/integers_tests.cpp | 26 ++-- cpp/tests/strings/ipv4_tests.cpp | 12 +- cpp/tests/strings/pad_tests.cpp | 24 ++-- cpp/tests/strings/replace_regex_tests.cpp | 10 +- cpp/tests/strings/replace_tests.cpp | 14 +- cpp/tests/strings/split_tests.cpp | 72 +++++----- cpp/tests/strings/strip_tests.cpp | 14 +- cpp/tests/strings/translate_tests.cpp | 8 +- cpp/tests/strings/urls_tests.cpp | 20 +-- cpp/tests/text/ngrams_tests.cpp | 2 +- cpp/tests/text/ngrams_tokenize_tests.cpp | 4 +- cpp/tests/text/normalize_tests.cpp | 6 +- cpp/tests/text/replace_tests.cpp | 6 +- cpp/tests/text/stemmer_tests.cpp | 8 +- cpp/tests/text/tokenize_tests.cpp | 6 +- cpp/tests/utilities/column_utilities.cu | 11 +- .../utilities_tests/batched_memcpy_tests.cu | 1 - .../utilities_tests/batched_memset_tests.cu | 1 - .../utilities_tests/column_debug_tests.cpp | 6 +- .../column_utilities_tests.cpp | 5 +- .../main/native/src/aggregation128_utils.cu | 3 +- 138 files changed, 476 insertions(+), 526 deletions(-) diff --git a/cpp/benchmarks/common/generate_input.cu b/cpp/benchmarks/common/generate_input.cu index 2bf1bbd57d28..688c11a2b878 100644 --- a/cpp/benchmarks/common/generate_input.cu +++ b/cpp/benchmarks/common/generate_input.cu @@ -42,7 +42,6 @@ #include #include #include -#include #include #include #include @@ -419,7 +418,7 @@ rmm::device_uvector sample_indices_with_run_length(cudf::size_t thrust::device, run_lens.begin(), run_lens.end(), run_lens.begin(), cuda::std::plus{}); auto const samples_indices = sample_dist(engine, approx_run_len + 1); // This is gather. - auto avg_repeated_sample_indices_iterator = thrust::make_transform_iterator( + auto avg_repeated_sample_indices_iterator = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type( [rb = run_lens.begin(), @@ -511,7 +510,7 @@ std::unique_ptr create_random_utf8_string_column(data_profile cons lengths.begin(), cuda::proclaim_return_type([] __device__(auto) { return 0; }), cuda::std::logical_not{}); - auto valid_lengths = thrust::make_transform_iterator( + auto valid_lengths = cuda::transform_iterator( cuda::make_zip_iterator(cuda::std::make_tuple(lengths.begin(), null_mask.begin())), valid_or_zero{}); diff --git a/cpp/benchmarks/io/orc/orc_writer_chunks.cpp b/cpp/benchmarks/io/orc/orc_writer_chunks.cpp index 11530238d3da..5be967140498 100644 --- a/cpp/benchmarks/io/orc/orc_writer_chunks.cpp +++ b/cpp/benchmarks/io/orc/orc_writer_chunks.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include #include @@ -92,10 +92,10 @@ void nvbench_orc_chunked_write(nvbench::state& state) auto mem_stats_logger = cudf::memory_stats_logger(); - auto size_iter = thrust::make_transform_iterator( + auto size_iter = cuda::transform_iterator( tables.begin(), [](auto const& i) { return i->num_columns() * i->num_rows(); }); auto row_count_iter = - thrust::make_transform_iterator(tables.begin(), [](auto const& i) { return i->num_rows(); }); + cuda::transform_iterator(tables.begin(), [](auto const& i) { return i->num_rows(); }); auto total_elements = std::accumulate(size_iter, size_iter + num_tables, 0); auto total_rows = std::accumulate(row_count_iter, row_count_iter + num_tables, 0); diff --git a/cpp/benchmarks/iterator/iterator.cu b/cpp/benchmarks/iterator/iterator.cu index 5965776e6469..895c84fb47b8 100644 --- a/cpp/benchmarks/iterator/iterator.cu +++ b/cpp/benchmarks/iterator/iterator.cu @@ -16,7 +16,6 @@ #include #include #include -#include #include #include diff --git a/cpp/benchmarks/transpose/transpose.cpp b/cpp/benchmarks/transpose/transpose.cpp index beb88f26e12d..e85d13b6d9c0 100644 --- a/cpp/benchmarks/transpose/transpose.cpp +++ b/cpp/benchmarks/transpose/transpose.cpp @@ -12,7 +12,6 @@ #include #include -#include #include @@ -22,7 +21,7 @@ void bench_transpose(nvbench::state& state) constexpr auto column_type_id = cudf::type_id::INT32; auto int_column_generator = - thrust::make_transform_iterator(cuda::counting_iterator{0}, [count](int i) { + cuda::transform_iterator(cuda::counting_iterator{0}, [count](int i) { return cudf::make_numeric_column( cudf::data_type{column_type_id}, count, cudf::mask_state::ALL_VALID); }); diff --git a/cpp/include/cudf/column/column_device_view.cuh b/cpp/include/cudf/column/column_device_view.cuh index 027031ca246a..b55f5581e02d 100644 --- a/cpp/include/cudf/column/column_device_view.cuh +++ b/cpp/include/cudf/column/column_device_view.cuh @@ -18,7 +18,6 @@ #include #include -#include #include @@ -226,7 +225,7 @@ class alignas(16) column_device_view : public column_device_view_core { * @brief Iterator for navigating this column */ template - using const_iterator = thrust::transform_iterator, count_it>; + using const_iterator = cuda::transform_iterator, count_it>; /** * @brief Return an iterator to the first element of the column. @@ -274,14 +273,14 @@ class alignas(16) column_device_view : public column_device_view_core { */ template using const_optional_iterator = - thrust::transform_iterator, count_it>; + cuda::transform_iterator, count_it>; /** * @brief Pair iterator for navigating this column */ template using const_pair_iterator = - thrust::transform_iterator, count_it>; + cuda::transform_iterator, count_it>; /** * @brief Pair rep iterator for navigating this column @@ -290,7 +289,7 @@ class alignas(16) column_device_view : public column_device_view_core { */ template using const_pair_rep_iterator = - thrust::transform_iterator, count_it>; + cuda::transform_iterator, count_it>; /** * @brief Return an optional iterator to the first element of the column. @@ -694,7 +693,7 @@ class alignas(16) mutable_column_device_view : public mutable_column_device_view * @brief Iterator for navigating this column */ template - using iterator = thrust::transform_iterator, count_it>; + using iterator = cuda::transform_iterator, count_it>; /** * @brief Return first element (accounting for offset) after underlying data diff --git a/cpp/include/cudf/detail/indexalator.cuh b/cpp/include/cudf/detail/indexalator.cuh index ad085f976a03..060a530be8be 100644 --- a/cpp/include/cudf/detail/indexalator.cuh +++ b/cpp/include/cudf/detail/indexalator.cuh @@ -16,7 +16,6 @@ #include #include #include -#include namespace cudf { namespace detail { @@ -344,7 +343,7 @@ struct indexalator_factory { */ static auto make_input_optional_iterator(scalar const& input, rmm::cuda_stream_view stream) { - return thrust::make_transform_iterator(cuda::make_constant_iterator(0), + return cuda::transform_iterator(cuda::make_constant_iterator(0), scalar_optional_index_accessor{input, stream}); } }; diff --git a/cpp/include/cudf/detail/iterator.cuh b/cpp/include/cudf/detail/iterator.cuh index 60298da37e8f..5ab9985ad1dc 100644 --- a/cpp/include/cudf/detail/iterator.cuh +++ b/cpp/include/cudf/detail/iterator.cuh @@ -30,12 +30,11 @@ #include #include #include -#include namespace cudf { namespace detail { /** - * @brief Convenience wrapper for creating a `thrust::transform_iterator` over a + * @brief Convenience wrapper for creating a `cuda::transform_iterator` over a * `cuda::counting_iterator` within the range [0, INT_MAX]. * * @@ -65,7 +64,7 @@ CUDF_HOST_DEVICE inline auto make_counting_transform_iterator(CountingIterType s cuda::std::numeric_limits::digits, "The `start` for the counting_transform_iterator must be size_type or smaller type"); - return thrust::make_transform_iterator(cuda::counting_iterator{start}, f); + return cuda::transform_iterator(cuda::counting_iterator{start}, f); } /** @@ -381,7 +380,7 @@ auto inline make_scalar_iterator(scalar const& scalar_value) { CUDF_EXPECTS(data_type(type_to_id()) == scalar_value.type(), "the data type mismatch"); CUDF_EXPECTS(scalar_value.is_valid(), "the scalar value must be valid"); - return thrust::make_transform_iterator(cuda::make_constant_iterator(0), + return cuda::transform_iterator(cuda::make_constant_iterator(0), scalar_value_accessor{scalar_value}); } @@ -577,7 +576,7 @@ auto inline make_optional_iterator(scalar const& scalar_value, Nullate has_nulls { CUDF_EXPECTS(type_id_matches_device_storage_type(scalar_value.type().id()), "the data type mismatch"); - return thrust::make_transform_iterator( + return cuda::transform_iterator( cuda::make_constant_iterator(0), scalar_optional_accessor{scalar_value, has_nulls}); } @@ -608,7 +607,7 @@ auto inline make_pair_iterator(scalar const& scalar_value) { CUDF_EXPECTS(type_id_matches_device_storage_type(scalar_value.type().id()), "the data type mismatch"); - return thrust::make_transform_iterator(cuda::make_constant_iterator(0), + return cuda::transform_iterator(cuda::make_constant_iterator(0), scalar_pair_accessor{scalar_value}); } diff --git a/cpp/include/cudf/detail/null_mask.cuh b/cpp/include/cudf/detail/null_mask.cuh index 9c5b9f4fad47..7151901131d4 100644 --- a/cpp/include/cudf/detail/null_mask.cuh +++ b/cpp/include/cudf/detail/null_mask.cuh @@ -26,7 +26,6 @@ #include #include #include -#include #include #include @@ -536,11 +535,11 @@ rmm::device_uvector segmented_count_bits(bitmask_type const* bitmask, static_cast(std::distance(first_bit_indices_begin, first_bit_indices_end)); rmm::device_uvector d_bit_counts(num_ranges, stream); - auto num_set_bits_in_word = thrust::make_transform_iterator(bitmask, popcount{}); + auto num_set_bits_in_word = cuda::transform_iterator(bitmask, popcount{}); auto first_word_indices = - thrust::make_transform_iterator(first_bit_indices_begin, bit_to_word_index{true}); + cuda::transform_iterator(first_bit_indices_begin, bit_to_word_index{true}); auto last_word_indices = - thrust::make_transform_iterator(last_bit_indices_begin, bit_to_word_index{false}); + cuda::transform_iterator(last_bit_indices_begin, bit_to_word_index{false}); // Allocate temporary memory. size_t temp_storage_bytes{0}; @@ -577,7 +576,7 @@ rmm::device_uvector segmented_count_bits(bitmask_type const* bitmask, // Convert from set bits counts to unset bits by subtracting the number of // set bits from the length of the segment. auto segments_begin = cuda::make_zip_iterator(first_bit_indices_begin, last_bit_indices_begin); - auto segment_length_iterator = thrust::transform_iterator( + auto segment_length_iterator = cuda::transform_iterator( segments_begin, cuda::proclaim_return_type([] __device__(auto const& segment) { auto const begin = cuda::std::get<0>(segment); auto const end = cuda::std::get<1>(segment); @@ -683,10 +682,10 @@ std::vector segmented_count_bits(bitmask_type const* bitmask, make_device_uvector_async(h_indices, stream, cudf::get_current_device_resource_ref()); // Compute the bit counts over each segment. - auto first_bit_indices_begin = thrust::make_transform_iterator( + auto first_bit_indices_begin = cuda::transform_iterator( cuda::counting_iterator{0}, index_alternator{false, d_indices.data()}); auto const first_bit_indices_end = first_bit_indices_begin + num_segments; - auto last_bit_indices_begin = thrust::make_transform_iterator( + auto last_bit_indices_begin = cuda::transform_iterator( cuda::counting_iterator{0}, index_alternator{true, d_indices.data()}); rmm::device_uvector d_bit_counts = cudf::detail::segmented_count_bits(bitmask, @@ -794,7 +793,7 @@ std::pair segmented_null_mask_reduction( { auto const segments_begin = cuda::make_zip_iterator(first_bit_indices_begin, last_bit_indices_begin); - auto const segment_length_iterator = thrust::make_transform_iterator( + auto const segment_length_iterator = cuda::transform_iterator( segments_begin, cuda::proclaim_return_type([] __device__(auto const& segment) { auto const begin = cuda::std::get<0>(segment); auto const end = cuda::std::get<1>(segment); diff --git a/cpp/include/cudf/detail/row_operator/hashing.cuh b/cpp/include/cudf/detail/row_operator/hashing.cuh index e71fc5213483..0c948c0f0033 100644 --- a/cpp/include/cudf/detail/row_operator/hashing.cuh +++ b/cpp/include/cudf/detail/row_operator/hashing.cuh @@ -24,7 +24,7 @@ #include #include -#include +#include #include @@ -126,7 +126,7 @@ class device_row_hasher { auto const init = has_columns ? hasher(_table.column(0)) : _seed; auto const start_col = static_cast(has_columns); - auto it = thrust::make_transform_iterator(_table.begin() + start_col, hasher); + auto it = cuda::transform_iterator(_table.begin() + start_col, hasher); return detail::accumulate( it, it + (_table.num_columns() - start_col), init, [](auto hash, auto h) { return cudf::hashing::detail::hash_combine(hash, h); diff --git a/cpp/include/cudf/detail/scatter.cuh b/cpp/include/cudf/detail/scatter.cuh index b2610b99f966..29d3eb85ae0e 100644 --- a/cpp/include/cudf/detail/scatter.cuh +++ b/cpp/include/cudf/detail/scatter.cuh @@ -28,7 +28,6 @@ #include #include -#include #include #include #include @@ -380,9 +379,9 @@ std::unique_ptr scatter(table_view const& source, // Transform negative indices to index + target size. auto updated_scatter_map_begin = - thrust::make_transform_iterator(scatter_map_begin, index_converter{target.num_rows()}); + cuda::transform_iterator(scatter_map_begin, index_converter{target.num_rows()}); auto updated_scatter_map_end = - thrust::make_transform_iterator(scatter_map_end, index_converter{target.num_rows()}); + cuda::transform_iterator(scatter_map_end, index_converter{target.num_rows()}); auto result = std::vector>(target.num_columns()); std::transform(source.begin(), diff --git a/cpp/include/cudf/detail/utilities/batched_memset.hpp b/cpp/include/cudf/detail/utilities/batched_memset.hpp index 77f3af1a1835..8a25f328c455 100644 --- a/cpp/include/cudf/detail/utilities/batched_memset.hpp +++ b/cpp/include/cudf/detail/utilities/batched_memset.hpp @@ -16,7 +16,6 @@ #include #include #include -#include #include namespace CUDF_EXPORT cudf { @@ -43,7 +42,7 @@ void batched_memset(cudf::host_span const> host_buffers, host_buffers, stream, cudf::get_current_device_resource_ref()); // Vector of sizes of all buffer spans - auto sizes = thrust::make_transform_iterator( + auto sizes = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type( [buffers = buffers.data()] __device__(std::size_t i) { return buffers[i].size(); })); @@ -52,7 +51,7 @@ void batched_memset(cudf::host_span const> host_buffers, auto iter_in = cuda::make_constant_iterator(cuda::make_constant_iterator(value)); // Iterator to each device span pointer - auto iter_out = thrust::make_transform_iterator( + auto iter_out = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type( [buffers = buffers.data()] __device__(std::size_t i) { return buffers[i].data(); })); diff --git a/cpp/include/cudf/detail/utilities/transform_unary_functions.cuh b/cpp/include/cudf/detail/utilities/transform_unary_functions.cuh index baff8c9fdcfd..c2b015e914f3 100644 --- a/cpp/include/cudf/detail/utilities/transform_unary_functions.cuh +++ b/cpp/include/cudf/detail/utilities/transform_unary_functions.cuh @@ -4,11 +4,11 @@ */ /** - * @brief unary functions for thrust::transform_iterator + * @brief unary functions for cuda::transform_iterator * @file transform_unary_functions.cuh * * These are designed for using as AdaptableUnaryFunction - * for thrust::transform_iterator. + * for cuda::transform_iterator. * For the detail of example cases, * @see iterator.cuh iterator_test.cu */ @@ -16,7 +16,7 @@ #pragma once #include -#include +#include namespace cudf { /** diff --git a/cpp/include/cudf/lists/detail/scatter.cuh b/cpp/include/cudf/lists/detail/scatter.cuh index 8c7a3a987dd3..6e0384ee3c46 100644 --- a/cpp/include/cudf/lists/detail/scatter.cuh +++ b/cpp/include/cudf/lists/detail/scatter.cuh @@ -23,7 +23,6 @@ #include #include -#include #include #include #include @@ -104,7 +103,7 @@ std::unique_ptr scatter_impl(rmm::device_uvector cons auto const target_lists_column_view = lists_column_view(target); // Checks that target is a list column. - auto list_size_begin = thrust::make_transform_iterator( + auto list_size_begin = cuda::transform_iterator( target_vector.begin(), cuda::proclaim_return_type([] __device__(unbound_list_view l) { return l.size(); })); auto offsets_column = std::get<0>(cudf::detail::make_offsets_child_column( diff --git a/cpp/include/cudf/lists/list_device_view.cuh b/cpp/include/cudf/lists/list_device_view.cuh index dc421d24fa73..4da97f233187 100644 --- a/cpp/include/cudf/lists/list_device_view.cuh +++ b/cpp/include/cudf/lists/list_device_view.cuh @@ -12,7 +12,6 @@ #include #include #include -#include namespace CUDF_EXPORT cudf { @@ -144,12 +143,12 @@ class list_device_view { /// const pair iterator for the list template using const_pair_iterator = - thrust::transform_iterator, cuda::counting_iterator>; + cuda::transform_iterator, cuda::counting_iterator>; /// const pair iterator type for the list template using const_pair_rep_iterator = - thrust::transform_iterator, cuda::counting_iterator>; + cuda::transform_iterator, cuda::counting_iterator>; /** * @brief Fetcher for a pair iterator to the first element in the list_device_view. diff --git a/cpp/include/cudf/strings/detail/gather.cuh b/cpp/include/cudf/strings/detail/gather.cuh index 759448ac58a7..124434da2170 100644 --- a/cpp/include/cudf/strings/detail/gather.cuh +++ b/cpp/include/cudf/strings/detail/gather.cuh @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include @@ -234,7 +234,7 @@ std::unique_ptr gather(strings_column_view const& strings, strings.is_empty() ? make_empty_column(type_id::INT32)->view() : strings.offsets(), strings.offset()); - auto sizes_itr = thrust::make_transform_iterator( + auto sizes_itr = cuda::transform_iterator( begin, cuda::proclaim_return_type( [d_strings = *d_strings, d_in_offsets] __device__(size_type idx) { @@ -289,7 +289,7 @@ std::unique_ptr gather(strings_column_view const& strings, d_strings->begin(), d_out_chars, offsets_view, begin, output_count); } else { // Iterator over the character column of input strings to gather - auto in_chars_itr = thrust::make_transform_iterator( + auto in_chars_itr = cuda::transform_iterator( begin, cuda::proclaim_return_type([d_strings = *d_strings] __device__(size_type idx) { if (NullifyOutOfBounds && (idx < 0 || idx >= d_strings.size())) { diff --git a/cpp/include/cudf/strings/detail/scatter.cuh b/cpp/include/cudf/strings/detail/scatter.cuh index a377d6587cbe..4b3eb3969ae4 100644 --- a/cpp/include/cudf/strings/detail/scatter.cuh +++ b/cpp/include/cudf/strings/detail/scatter.cuh @@ -17,7 +17,7 @@ #include #include -#include +#include #include namespace cudf { @@ -64,7 +64,7 @@ std::unique_ptr scatter(SourceIterator begin, // this ensures empty strings are not mapped to nulls in the make_strings_column function auto const size = cuda::std::distance(begin, end); - auto itr = thrust::make_transform_iterator( + auto itr = cuda::transform_iterator( begin, cuda::proclaim_return_type([] __device__(string_view const sv) { return sv.empty() ? string_view{} : sv; })); diff --git a/cpp/include/cudf/strings/detail/strings_children.cuh b/cpp/include/cudf/strings/detail/strings_children.cuh index d15e5fa199f1..a2e60237c4bf 100644 --- a/cpp/include/cudf/strings/detail/strings_children.cuh +++ b/cpp/include/cudf/strings/detail/strings_children.cuh @@ -70,7 +70,7 @@ rmm::device_uvector make_chars_buffer(column_view const& offsets, auto chars_data = rmm::device_uvector(chars_size, stream, mr); auto const d_offsets = cudf::detail::offsetalator_factory::make_input_iterator(offsets); - auto const src_ptrs = thrust::make_transform_iterator( + auto const src_ptrs = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type([begin] __device__(uint32_t idx) { // Due to a bug in cub (https://github.com/NVIDIA/cccl/issues/586), @@ -78,11 +78,11 @@ rmm::device_uvector make_chars_buffer(column_view const& offsets, // This should be fine as long as we only read but not write anything to the source. return reinterpret_cast(const_cast(begin[idx].first)); })); - auto const src_sizes = thrust::make_transform_iterator( + auto const src_sizes = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type( [begin] __device__(uint32_t idx) { return begin[idx].second; })); - auto const dst_ptrs = thrust::make_transform_iterator( + auto const dst_ptrs = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type([offsets = d_offsets, output = chars_data.data()] __device__( uint32_t idx) { return output + offsets[idx]; })); diff --git a/cpp/include/cudf/strings/detail/strings_column_factories.cuh b/cpp/include/cudf/strings/detail/strings_column_factories.cuh index d98cb994415d..c7b968874990 100644 --- a/cpp/include/cudf/strings/detail/strings_column_factories.cuh +++ b/cpp/include/cudf/strings/detail/strings_column_factories.cuh @@ -18,7 +18,7 @@ #include #include #include -#include +#include namespace cudf { namespace strings { @@ -56,7 +56,7 @@ std::unique_ptr make_strings_column(IndexPairIterator begin, cuda::proclaim_return_type([] __device__(string_index_pair item) -> size_type { return (item.first != nullptr ? static_cast(item.second) : size_type{0}); }); - auto offsets_transformer_itr = thrust::make_transform_iterator(begin, offsets_transformer); + auto offsets_transformer_itr = cuda::transform_iterator(begin, offsets_transformer); auto [offsets_column, bytes] = cudf::strings::detail::make_offsets_child_column( offsets_transformer_itr, offsets_transformer_itr + strings_count, stream, mr); diff --git a/cpp/include/cudf_test/column_utilities.hpp b/cpp/include/cudf_test/column_utilities.hpp index 1f695d1dd2b1..659e83236793 100644 --- a/cpp/include/cudf_test/column_utilities.hpp +++ b/cpp/include/cudf_test/column_utilities.hpp @@ -16,7 +16,7 @@ #include #include -#include +#include namespace CUDF_EXPORT cudf { namespace test { diff --git a/cpp/include/cudf_test/column_wrapper.hpp b/cpp/include/cudf_test/column_wrapper.hpp index f0a7a64e3d29..f0d8c219149d 100644 --- a/cpp/include/cudf_test/column_wrapper.hpp +++ b/cpp/include/cudf_test/column_wrapper.hpp @@ -32,7 +32,6 @@ #include #include #include -#include #include #include @@ -157,7 +156,7 @@ rmm::device_buffer make_elements(InputIterator begin, InputIterator end) { static_assert(cudf::is_fixed_width(), "Unexpected non-fixed width type."); auto transformer = fixed_width_type_converter{}; - auto transform_begin = thrust::make_transform_iterator(begin, transformer); + auto transform_begin = cuda::transform_iterator(begin, transformer); auto const size = cudf::distance(begin, end); auto const elements = thrust::host_vector(transform_begin, transform_begin + size); return rmm::device_buffer{ @@ -187,7 +186,7 @@ rmm::device_buffer make_elements(InputIterator begin, InputIterator end) { using RepType = typename ElementTo::rep; auto transformer = fixed_width_type_converter{}; - auto transform_begin = thrust::make_transform_iterator(begin, transformer); + auto transform_begin = cuda::transform_iterator(begin, transformer); auto const size = cudf::distance(begin, end); auto const elements = thrust::host_vector(transform_begin, transform_begin + size); return rmm::device_buffer{ @@ -218,7 +217,7 @@ rmm::device_buffer make_elements(InputIterator begin, InputIterator end) "Only zero-scale fixed-point values are supported"); auto to_rep = [](ElementTo fp) { return fp.value(); }; - auto transformer_begin = thrust::make_transform_iterator(begin, to_rep); + auto transformer_begin = cuda::transform_iterator(begin, to_rep); auto const size = cudf::distance(begin, end); auto const elements = thrust::host_vector(transformer_begin, transformer_begin + size); return rmm::device_buffer{ @@ -518,10 +517,10 @@ class fixed_width_column_wrapper : public detail::column_wrapper { fixed_width_column_wrapper(std::initializer_list> elements) { auto begin = - thrust::make_transform_iterator(elements.begin(), [](auto const& e) { return e.first; }); + cuda::transform_iterator(elements.begin(), [](auto const& e) { return e.first; }); auto end = begin + elements.size(); auto v = - thrust::make_transform_iterator(elements.begin(), [](auto const& e) { return e.second; }); + cuda::transform_iterator(elements.begin(), [](auto const& e) { return e.second; }); wrapped = fixed_width_column_wrapper(begin, end, v).release(); } }; @@ -906,10 +905,10 @@ class strings_column_wrapper : public detail::column_wrapper { strings_column_wrapper(std::initializer_list> strings) { auto begin = - thrust::make_transform_iterator(strings.begin(), [](auto const& s) { return s.first; }); + cuda::transform_iterator(strings.begin(), [](auto const& s) { return s.first; }); auto end = begin + strings.size(); auto v = - thrust::make_transform_iterator(strings.begin(), [](auto const& s) { return s.second; }); + cuda::transform_iterator(strings.begin(), [](auto const& s) { return s.second; }); wrapped = strings_column_wrapper(begin, end, v).release(); } }; diff --git a/cpp/include/cudf_test/iterator_utilities.hpp b/cpp/include/cudf_test/iterator_utilities.hpp index 22cd5196f6ae..1245469f8cb4 100644 --- a/cpp/include/cudf_test/iterator_utilities.hpp +++ b/cpp/include/cudf_test/iterator_utilities.hpp @@ -10,7 +10,6 @@ #include #include -#include #include @@ -165,7 +164,7 @@ template template [[maybe_unused]] static auto nulls_from_nullptrs(std::vector const& ptrs) { - return thrust::make_transform_iterator(ptrs.begin(), [](auto ptr) { return ptr != nullptr; }); + return cuda::transform_iterator(ptrs.begin(), [](auto ptr) { return ptr != nullptr; }); } } // namespace iterators diff --git a/cpp/include/cudf_test/print_utilities.cuh b/cpp/include/cudf_test/print_utilities.cuh index b614d07c3719..c75873aa0d39 100644 --- a/cpp/include/cudf_test/print_utilities.cuh +++ b/cpp/include/cudf_test/print_utilities.cuh @@ -11,7 +11,7 @@ #include -#include +#include #include @@ -55,7 +55,7 @@ auto hex(InItT it) { using value_t = typename std::iterator_traits::value_type; using tagged_t = hex_t; - return thrust::make_transform_iterator(it, ToTaggedType{}); + return cuda::transform_iterator(it, ToTaggedType{}); } template && std::is_signed_v)> diff --git a/cpp/src/ast/expression_parser.cpp b/cpp/src/ast/expression_parser.cpp index 8392779e388d..854df2d611f0 100644 --- a/cpp/src/ast/expression_parser.cpp +++ b/cpp/src/ast/expression_parser.cpp @@ -10,7 +10,7 @@ #include #include -#include +#include #include #include @@ -223,7 +223,7 @@ cudf::size_type expression_parser::visit(operation const& expr) auto const operand_data_ref_indices = visit_operands(expr.get_operands()); // Resolve operand types auto data_ref = [this](auto const& index) { return _data_references[index].data_type; }; - auto begin = thrust::make_transform_iterator(operand_data_ref_indices.cbegin(), data_ref); + auto begin = cuda::transform_iterator(operand_data_ref_indices.cbegin(), data_ref); auto end = begin + operand_data_ref_indices.size(); auto const operand_types = std::vector(begin, end); diff --git a/cpp/src/column/column.cu b/cpp/src/column/column.cu index 5aeddc4f1063..58293e961a05 100644 --- a/cpp/src/column/column.cu +++ b/cpp/src/column/column.cu @@ -27,7 +27,7 @@ #include #include -#include +#include #include #include @@ -197,7 +197,7 @@ struct create_column_from_view { requires(cudf::is_fixed_width()) { auto op = [&](auto const& child) { return std::make_unique(child, stream, mr); }; - auto begin = thrust::make_transform_iterator(view.child_begin(), op); + auto begin = cuda::transform_iterator(view.child_begin(), op); auto children = std::vector>(begin, begin + view.num_children()); return std::make_unique( diff --git a/cpp/src/column/column_view.cpp b/cpp/src/column/column_view.cpp index bcb619084e30..8696e5fb1a5c 100644 --- a/cpp/src/column/column_view.cpp +++ b/cpp/src/column/column_view.cpp @@ -14,7 +14,7 @@ #include #include -#include +#include #include #include @@ -214,7 +214,7 @@ void const* mutable_column_view::get_data() const noexcept size_type count_descendants(column_view parent) { auto descendants = [](auto const& child) { return count_descendants(child); }; - auto begin = thrust::make_transform_iterator(parent.child_begin(), descendants); + auto begin = cuda::transform_iterator(parent.child_begin(), descendants); return std::accumulate(begin, begin + parent.num_children(), size_type{parent.num_children()}); } diff --git a/cpp/src/copying/contiguous_split.cu b/cpp/src/copying/contiguous_split.cu index 5c0bfdd6d7a8..42eb2a436752 100644 --- a/cpp/src/copying/contiguous_split.cu +++ b/cpp/src/copying/contiguous_split.cu @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include @@ -437,7 +436,7 @@ OutputIter setup_src_buf_data(InputIter begin, InputIter end, OutputIter out_buf template size_type count_src_bufs(InputIter begin, InputIter end) { - auto buf_iter = thrust::make_transform_iterator(begin, [](column_view const& col) { + auto buf_iter = cuda::transform_iterator(begin, [](column_view const& col) { auto const children_counts = count_src_bufs(col.child_begin(), col.child_end()); return 1 + (col.nullable() ? 1 : 0) + children_counts; }); @@ -1876,7 +1875,7 @@ struct contiguous_split_state { auto const keys = cudf::detail::make_counting_transform_iterator( 0, out_to_in_index_function{chunk_iter_state->d_batch_offsets.begin(), (int)num_bufs}); - auto values = thrust::make_transform_iterator( + auto values = cuda::transform_iterator( chunk_iter_state->d_batched_dst_buf_info.begin(), cuda::proclaim_return_type( [] __device__(dst_buf_info const& info) { return info.valid_count; })); diff --git a/cpp/src/copying/gather.cu b/cpp/src/copying/gather.cu index 5a3288646b42..2510b922ba5c 100644 --- a/cpp/src/copying/gather.cu +++ b/cpp/src/copying/gather.cu @@ -17,7 +17,7 @@ #include #include -#include +#include #include @@ -42,8 +42,8 @@ std::unique_ptr
gather(table_view const& source_table, auto idx_converter = cuda::proclaim_return_type( [n_rows] __device__(size_type in) { return in < 0 ? in + n_rows : in; }); return gather(source_table, - thrust::make_transform_iterator(map_begin, idx_converter), - thrust::make_transform_iterator(map_end, idx_converter), + cuda::transform_iterator(map_begin, idx_converter), + cuda::transform_iterator(map_end, idx_converter), bounds_policy, stream, mr); diff --git a/cpp/src/copying/scatter.cu b/cpp/src/copying/scatter.cu index df790e6905bb..cd57df7e66a3 100644 --- a/cpp/src/copying/scatter.cu +++ b/cpp/src/copying/scatter.cu @@ -31,7 +31,6 @@ #include #include #include -#include #include #include @@ -349,7 +348,7 @@ std::unique_ptr
scatter(std::vector> // note: the intermediate ((in % n_rows) + n_rows) will overflow a size_type for any value of `in` // > (2^31)/2, but the end result after the final (% n_rows) will fit. so we'll do the computation // using a signed 64 bit value. - auto scatter_iter = thrust::make_transform_iterator( + auto scatter_iter = cuda::transform_iterator( map_begin, cuda::proclaim_return_type( [n_rows = static_cast(n_rows)] __device__(size_type in) -> size_type { diff --git a/cpp/src/copying/segmented_shift.cu b/cpp/src/copying/segmented_shift.cu index 2baf35ff0460..d666c55a1ad0 100644 --- a/cpp/src/copying/segmented_shift.cu +++ b/cpp/src/copying/segmented_shift.cu @@ -17,7 +17,7 @@ #include #include -#include +#include namespace cudf { namespace detail { diff --git a/cpp/src/copying/slice.cu b/cpp/src/copying/slice.cu index 9c63022cd307..cae1908d9575 100644 --- a/cpp/src/copying/slice.cu +++ b/cpp/src/copying/slice.cu @@ -15,7 +15,7 @@ #include -#include +#include #include #include @@ -104,7 +104,7 @@ std::vector slice(table_view const& input, // 2d arrangement of column_views that represent the outgoing table_views sliced_table[i][j] // where i is the i'th column of the j'th table_view auto op = [&indices, &stream](auto const& c) { return cudf::detail::slice(c, indices, stream); }; - auto f = thrust::make_transform_iterator(input.begin(), op); + auto f = cuda::transform_iterator(input.begin(), op); auto sliced_table = std::vector>(f, f + input.num_columns()); sliced_table.reserve(indices.size() + 1); diff --git a/cpp/src/groupby/sort/group_count.cu b/cpp/src/groupby/sort/group_count.cu index 822ebca0909b..d11e4d6baf8c 100644 --- a/cpp/src/groupby/sort/group_count.cu +++ b/cpp/src/groupby/sort/group_count.cu @@ -17,7 +17,6 @@ #include #include #include -#include namespace cudf { namespace groupby { @@ -43,7 +42,7 @@ std::unique_ptr group_count_valid(column_view const& values, // make_validity_iterator returns a boolean iterator that sums to 1 (1+1=1) // so we need to transform it to cast it to an integer type auto bitmask_iterator = - thrust::make_transform_iterator(cudf::detail::make_validity_iterator(*values_view), + cuda::transform_iterator(cudf::detail::make_validity_iterator(*values_view), cuda::proclaim_return_type([] __device__(auto b) { return static_cast(b); })); diff --git a/cpp/src/groupby/sort/group_nth_element.cu b/cpp/src/groupby/sort/group_nth_element.cu index a959572e3215..13f2f8fc3668 100644 --- a/cpp/src/groupby/sort/group_nth_element.cu +++ b/cpp/src/groupby/sort/group_nth_element.cu @@ -20,7 +20,6 @@ #include #include -#include #include #include #include @@ -72,7 +71,7 @@ std::unique_ptr group_nth_element(column_view const& values, // Returns index of nth value. auto values_view = column_device_view::create(values, stream); auto bitmask_iterator = - thrust::make_transform_iterator(cudf::detail::make_validity_iterator(*values_view), + cuda::transform_iterator(cudf::detail::make_validity_iterator(*values_view), cuda::proclaim_return_type([] __device__(auto b) { return static_cast(b); })); diff --git a/cpp/src/groupby/sort/group_nunique.cu b/cpp/src/groupby/sort/group_nunique.cu index 96aaa4cace1c..e9380eae13fe 100644 --- a/cpp/src/groupby/sort/group_nunique.cu +++ b/cpp/src/groupby/sort/group_nunique.cu @@ -15,7 +15,6 @@ #include #include -#include namespace cudf { namespace groupby { diff --git a/cpp/src/groupby/sort/group_scan_util.cuh b/cpp/src/groupby/sort/group_scan_util.cuh index 922a7f939432..d32416a7d44a 100644 --- a/cpp/src/groupby/sort/group_scan_util.cuh +++ b/cpp/src/groupby/sort/group_scan_util.cuh @@ -28,7 +28,6 @@ #include #include -#include #include namespace cudf { @@ -118,13 +117,13 @@ struct group_scan_functor() }; if (values.has_nulls()) { - auto input = thrust::make_transform_iterator( + auto input = cuda::transform_iterator( make_null_replacement_iterator(*values_view, OpType::template identity()), cudf::detail::cast_fn{}); do_scan(input, result_view->begin(), OpType{}); result->set_null_mask(cudf::detail::copy_bitmask(values, stream, mr), values.null_count()); } else { - auto input = thrust::make_transform_iterator(values_view->begin(), + auto input = cuda::transform_iterator(values_view->begin(), cudf::detail::cast_fn{}); do_scan(input, result_view->begin(), OpType{}); } diff --git a/cpp/src/groupby/sort/group_std.cu b/cpp/src/groupby/sort/group_std.cu index 287b2306b084..c82e0670f36d 100644 --- a/cpp/src/groupby/sort/group_std.cu +++ b/cpp/src/groupby/sort/group_std.cu @@ -23,7 +23,6 @@ #include #include -#include #include namespace cudf { diff --git a/cpp/src/io/csv/durations.cu b/cpp/src/io/csv/durations.cu index 02988ac4870c..f42701cfb3d4 100644 --- a/cpp/src/io/csv/durations.cu +++ b/cpp/src/io/csv/durations.cu @@ -18,7 +18,6 @@ #include #include #include -#include namespace cudf { namespace io { diff --git a/cpp/src/io/csv/reader_impl.cu b/cpp/src/io/csv/reader_impl.cu index 9990f39f3d72..37fca8c16caa 100644 --- a/cpp/src/io/csv/reader_impl.cu +++ b/cpp/src/io/csv/reader_impl.cu @@ -1026,7 +1026,7 @@ table_with_metadata read_csv(cudf::io::datasource* source, *replaced_all_view, cudf::nullate::DYNAMIC{replaced_all_col->nullable()}); auto const* original_pairs = buffer->_strings->data(); - auto const original_iter = thrust::make_transform_iterator( + auto const original_iter = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type>( [original_pairs] __device__( diff --git a/cpp/src/io/fst/logical_stack.cuh b/cpp/src/io/fst/logical_stack.cuh index 2c4e01b84177..1a571b02c076 100644 --- a/cpp/src/io/fst/logical_stack.cuh +++ b/cpp/src/io/fst/logical_stack.cuh @@ -17,6 +17,7 @@ #include #include +#include #include #include #include @@ -323,7 +324,7 @@ void sparse_stack_op_to_top_of_stack(StackSymbolItT d_symbols, using StackSymbolToStackOpT = detail::StackSymbolToStackOp; // transform_iterator converting stack symbols to stack operations - using TransformInputItT = thrust::transform_iterator; + using TransformInputItT = cuda::transform_iterator; constexpr bool supports_reset_op = SupportResetOperation == stack_op_support::WITH_RESET_SUPPORT; @@ -354,7 +355,7 @@ void sparse_stack_op_to_top_of_stack(StackSymbolItT d_symbols, // with the empty_stack_symbol StackOpT const empty_stack{0, empty_stack_symbol}; - thrust::transform_iterator, StackOpT*> kv_ops_scan_in( + cuda::transform_iterator, StackOpT*> kv_ops_scan_in( nullptr, detail::RemapEmptyStack{empty_stack}); StackOpT* kv_ops_scan_out = nullptr; @@ -367,7 +368,7 @@ void sparse_stack_op_to_top_of_stack(StackSymbolItT d_symbols, // operation if constexpr (supports_reset_op) { // Iterator that returns `1` for every symbol that corresponds to a `reset` operation - auto reset_segments_it = thrust::make_transform_iterator( + auto reset_segments_it = cuda::transform_iterator( d_symbols, detail::NewlineToResetStackSegmentOp{symbol_to_stack_op}); @@ -468,7 +469,7 @@ void sparse_stack_op_to_top_of_stack(StackSymbolItT d_symbols, // Compute prefix sum of the stack level after each operation if constexpr (supports_reset_op) { // Iterator that returns `1` for every symbol that corresponds to a `reset` operation - auto reset_segments_it = thrust::make_transform_iterator( + auto reset_segments_it = cuda::transform_iterator( d_symbols, detail::NewlineToResetStackSegmentOp{symbol_to_stack_op}); @@ -543,7 +544,7 @@ void sparse_stack_op_to_top_of_stack(StackSymbolItT d_symbols, read_symbol); // transform_iterator the stack operations to the stack symbol they represent - thrust::transform_iterator kv_op_to_stack_sym_it( + cuda::transform_iterator kv_op_to_stack_sym_it( kv_ops_scan_out, detail::StackOpToStackSymbol{}); // Scatter the stack symbols to the output tape (spots that are not scattered to have been diff --git a/cpp/src/io/json/host_tree_algorithms.cu b/cpp/src/io/json/host_tree_algorithms.cu index 1b3149cc768c..c9e42182983d 100644 --- a/cpp/src/io/json/host_tree_algorithms.cu +++ b/cpp/src/io/json/host_tree_algorithms.cu @@ -1052,7 +1052,7 @@ void scatter_offsets(tree_meta_t const& tree, // col[parent_col_id].child_offsets[row_offset[parent_node_id]] auto& parent_col_ids = sorted_col_ids; // reuse sorted_col_ids - auto parent_col_id = thrust::make_transform_iterator( + auto parent_col_id = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type( [col_ids = col_ids.begin(), diff --git a/cpp/src/io/json/json_normalization.cu b/cpp/src/io/json/json_normalization.cu index b0256e464611..7a75181a5e77 100644 --- a/cpp/src/io/json/json_normalization.cu +++ b/cpp/src/io/json/json_normalization.cu @@ -356,12 +356,12 @@ std:: inbuf_offsets.begin(), 0); - auto input_it = thrust::make_transform_iterator( + auto input_it = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type( [d_input = d_input.begin(), col_offsets = col_offsets.begin()] __device__( std::size_t i) -> char const* { return &d_input[col_offsets[i]]; })); - auto output_it = thrust::make_transform_iterator( + auto output_it = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type( [inbuf = inbuf.begin(), inbuf_offsets = inbuf_offsets.cbegin()] __device__( diff --git a/cpp/src/io/json/nested_json_gpu.cu b/cpp/src/io/json/nested_json_gpu.cu index 2d35da95baba..7582b886b2b1 100644 --- a/cpp/src/io/json/nested_json_gpu.cu +++ b/cpp/src/io/json/nested_json_gpu.cu @@ -29,7 +29,6 @@ #include #include -#include #include #include diff --git a/cpp/src/io/orc/reader_impl_chunking.cu b/cpp/src/io/orc/reader_impl_chunking.cu index c60e1f6c0906..6d7951c8a49f 100644 --- a/cpp/src/io/orc/reader_impl_chunking.cu +++ b/cpp/src/io/orc/reader_impl_chunking.cu @@ -21,7 +21,7 @@ #include #include -#include +#include #include #include @@ -144,7 +144,7 @@ std::vector find_splits(host_span cumulative_sizes, [[maybe_unused]] std::size_t cur_cumulative_rows{0}; - auto const start = thrust::make_transform_iterator( + auto const start = cuda::transform_iterator( cumulative_sizes.begin(), [&](auto const& size) { return size.size_bytes - cur_cumulative_size; }); auto const end = start + cumulative_sizes.size(); diff --git a/cpp/src/io/orc/writer_impl.cu b/cpp/src/io/orc/writer_impl.cu index 62ff8f165c3e..27e5b3940d6d 100644 --- a/cpp/src/io/orc/writer_impl.cu +++ b/cpp/src/io/orc/writer_impl.cu @@ -45,7 +45,6 @@ #include #include #include -#include #include #include #include @@ -1341,7 +1340,7 @@ encoded_footer_statistics finish_statistic_blobs(Footer const& footer, persisted_statistics& per_chunk_stats, rmm::cuda_stream_view stream) { - auto stripe_size_iter = thrust::make_transform_iterator(per_chunk_stats.stripe_stat_merge.begin(), + auto stripe_size_iter = cuda::transform_iterator(per_chunk_stats.stripe_stat_merge.begin(), [](auto const& s) { return s.size(); }); auto const num_columns = footer.types.size() - 1; diff --git a/cpp/src/io/parquet/experimental/hybrid_scan_chunking.cu b/cpp/src/io/parquet/experimental/hybrid_scan_chunking.cu index 7c819d0f5657..633d85a6ff2f 100644 --- a/cpp/src/io/parquet/experimental/hybrid_scan_chunking.cu +++ b/cpp/src/io/parquet/experimental/hybrid_scan_chunking.cu @@ -148,7 +148,7 @@ void hybrid_scan_reader_impl::setup_next_pass( // store off how much memory we've used so far. This includes the compressed page data and the // decompressed dictionary data. we will subtract this from the available total memory for the // subpasses - auto chunk_iter = thrust::make_transform_iterator(pass.chunks.d_begin(), + auto chunk_iter = cuda::transform_iterator(pass.chunks.d_begin(), parquet::detail::get_chunk_compressed_size{}); pass.base_mem_size = decomp_dict_data_size + diff --git a/cpp/src/io/parquet/experimental/page_index_filter.cu b/cpp/src/io/parquet/experimental/page_index_filter.cu index c8374da7b2bd..4900700d8dbf 100644 --- a/cpp/src/io/parquet/experimental/page_index_filter.cu +++ b/cpp/src/io/parquet/experimental/page_index_filter.cu @@ -250,7 +250,7 @@ struct page_stats_caster : public stats_caster_base { auto row_str_chars = rmm::device_buffer(total_bytes, stream, mr); // Iterator for input (page-level) string chars - auto src_iter = thrust::make_transform_iterator( + auto src_iter = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type( [chars = page_str_chars.begin(), @@ -261,7 +261,7 @@ struct page_stats_caster : public stats_caster_base { })); // Iterator for output (row-level) string chars - auto dst_iter = thrust::make_transform_iterator( + auto dst_iter = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type( [chars = reinterpret_cast(row_str_chars.data()), @@ -270,7 +270,7 @@ struct page_stats_caster : public stats_caster_base { })); // Iterator for string sizes - auto size_iter = thrust::make_transform_iterator( + auto size_iter = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type( [sizes = row_str_sizes.begin()] __device__(std::size_t index) { return sizes[index]; })); diff --git a/cpp/src/io/parquet/page_data.cu b/cpp/src/io/parquet/page_data.cu index 2e31b0f7c6ba..6a27d543e229 100644 --- a/cpp/src/io/parquet/page_data.cu +++ b/cpp/src/io/parquet/page_data.cu @@ -13,7 +13,6 @@ #include #include -#include namespace cudf::io::parquet::detail { @@ -563,7 +562,7 @@ void write_final_offsets(host_span offsets, auto d_src_data = cudf::detail::make_device_uvector_async( offsets, stream, cudf::get_current_device_resource_ref()); // Iterator for the source (scalar) data - auto src_iter = thrust::make_transform_iterator( + auto src_iter = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type( [src = d_src_data.begin()] __device__(std::size_t i) { return src + i; })); diff --git a/cpp/src/io/parquet/page_enc.cu b/cpp/src/io/parquet/page_enc.cu index 4c5c5523313c..1e308b59a983 100644 --- a/cpp/src/io/parquet/page_enc.cu +++ b/cpp/src/io/parquet/page_enc.cu @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include diff --git a/cpp/src/io/parquet/parquet_gpu.hpp b/cpp/src/io/parquet/parquet_gpu.hpp index b8324b3f570a..a74e9bca83b6 100644 --- a/cpp/src/io/parquet/parquet_gpu.hpp +++ b/cpp/src/io/parquet/parquet_gpu.hpp @@ -22,6 +22,7 @@ #include #include +#include #include #include @@ -392,7 +393,7 @@ struct get_page_key { */ inline auto make_page_key_iterator(device_span pages) { - return thrust::make_transform_iterator(pages.begin(), get_page_key{}); + return cuda::transform_iterator(pages.begin(), get_page_key{}); } /** diff --git a/cpp/src/io/parquet/reader_impl_preprocess_utils.cu b/cpp/src/io/parquet/reader_impl_preprocess_utils.cu index 9ee4ceecf87d..a65c2f855b76 100644 --- a/cpp/src/io/parquet/reader_impl_preprocess_utils.cu +++ b/cpp/src/io/parquet/reader_impl_preprocess_utils.cu @@ -20,7 +20,6 @@ #include #include #include -#include #include #include #include diff --git a/cpp/src/io/utilities/data_casting.cu b/cpp/src/io/utilities/data_casting.cu index 74bfbc825d7c..f819747ffc58 100644 --- a/cpp/src/io/utilities/data_casting.cu +++ b/cpp/src/io/utilities/data_casting.cu @@ -935,7 +935,7 @@ std::unique_ptr parse_data( } // Prepare iterator that returns (string_ptr, string_length)-pairs needed by type conversion - auto str_tuples = thrust::make_transform_iterator(offset_length_begin, to_string_view_pair{data}); + auto str_tuples = cuda::transform_iterator(offset_length_begin, to_string_view_pair{data}); if (col_type == cudf::data_type{cudf::type_id::STRING}) { return parse_string( diff --git a/cpp/src/jit/helpers.cpp b/cpp/src/jit/helpers.cpp index a016ca34dce5..e5c97ee9c38b 100644 --- a/cpp/src/jit/helpers.cpp +++ b/cpp/src/jit/helpers.cpp @@ -15,6 +15,8 @@ #include +#include + namespace cudf { namespace jit { @@ -54,8 +56,8 @@ size_type get_projection_size(std::span build_ptx_params(std::span output_typenames, diff --git a/cpp/src/jit/helpers.hpp b/cpp/src/jit/helpers.hpp index 9def0042525e..2abc300adeee 100644 --- a/cpp/src/jit/helpers.hpp +++ b/cpp/src/jit/helpers.hpp @@ -10,7 +10,7 @@ #include #include -#include +#include #include #include diff --git a/cpp/src/lists/combine/concatenate_rows.cu b/cpp/src/lists/combine/concatenate_rows.cu index 2964276a3fbc..e83196cfb202 100644 --- a/cpp/src/lists/combine/concatenate_rows.cu +++ b/cpp/src/lists/combine/concatenate_rows.cu @@ -21,7 +21,6 @@ #include #include -#include #include namespace cudf { @@ -72,13 +71,13 @@ generate_regrouped_offsets_and_null_mask(table_device_view const& input, data_type{type_to_id()}, input.num_rows() + 1, mask_state::UNALLOCATED, stream, mr); auto keys = - thrust::make_transform_iterator(cuda::counting_iterator{0}, + cuda::transform_iterator(cuda::counting_iterator{0}, cuda::proclaim_return_type( [num_columns = input.num_columns()] __device__( std::size_t i) -> size_type { return i / num_columns; })); // generate sizes for the regrouped rows - auto values = thrust::make_transform_iterator( + auto values = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type([input, row_null_counts = row_null_counts.data(), @@ -153,12 +152,12 @@ rmm::device_uvector generate_null_counts(table_device_view const& inp rmm::device_uvector null_counts(input.num_rows(), stream); auto keys = - thrust::make_transform_iterator(cuda::counting_iterator{0}, + cuda::transform_iterator(cuda::counting_iterator{0}, cuda::proclaim_return_type( [num_columns = input.num_columns()] __device__( std::size_t i) -> size_type { return i / num_columns; })); - auto null_values = thrust::make_transform_iterator( + auto null_values = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type([input] __device__(std::size_t i) -> size_type { auto const col_index = i % input.num_columns(); @@ -265,7 +264,7 @@ std::unique_ptr concatenate_rows(table_view const& input, // what we want. the data of the children will be exactly what we want, but will be grouped as if // we had concatenated all the rows together instead of concatenating within the rows. To fix // this we can simply swap in a new set of offsets that re-groups them. bmo - auto iter = thrust::make_transform_iterator( + auto iter = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type( [num_columns = input.num_columns(), diff --git a/cpp/src/lists/copying/scatter_helper.cu b/cpp/src/lists/copying/scatter_helper.cu index a6295576b0fa..a902f3d42193 100644 --- a/cpp/src/lists/copying/scatter_helper.cu +++ b/cpp/src/lists/copying/scatter_helper.cu @@ -18,7 +18,6 @@ #include #include #include -#include #include namespace cudf { @@ -326,7 +325,7 @@ struct list_child_constructor { // child_list_views should now have been populated, with source and target references. - auto begin = thrust::make_transform_iterator( + auto begin = cuda::transform_iterator( child_list_views.begin(), cuda::proclaim_return_type([] __device__(auto const& row) { return row.size(); })); @@ -400,7 +399,7 @@ struct list_child_constructor { {structs_list_offsets, structs_member})); }; - auto const iter_source_member_as_list = thrust::make_transform_iterator( + auto const iter_source_member_as_list = cuda::transform_iterator( cuda::counting_iterator{0}, [&](auto child_idx) { return project_member_as_list_view(source_structs.child(child_idx), source_lists_column_view.size(), @@ -409,7 +408,7 @@ struct list_child_constructor { source_lists_column_view.null_count()); }); - auto const iter_target_member_as_list = thrust::make_transform_iterator( + auto const iter_target_member_as_list = cuda::transform_iterator( cuda::counting_iterator{0}, [&](auto child_idx) { return project_member_as_list_view(target_structs.child(child_idx), target_lists_column_view.size(), diff --git a/cpp/src/lists/dremel.cu b/cpp/src/lists/dremel.cu index b9f6cf2e3450..42a8c4711ed9 100644 --- a/cpp/src/lists/dremel.cu +++ b/cpp/src/lists/dremel.cu @@ -292,7 +292,7 @@ dremel_data get_encoding(column_view h_col, auto input_parent_rep_it = cuda::make_constant_iterator(level); auto input_parent_def_it = - thrust::make_transform_iterator(empties_idx.begin(), + cuda::transform_iterator(empties_idx.begin(), def_level_fn{d_nesting_levels + level, d_nullability.data(), start_at_sub_level[level], @@ -302,7 +302,7 @@ dremel_data get_encoding(column_view h_col, // `nesting_levels.size()` == no of list levels + leaf. Max repetition level = no of list levels auto input_child_rep_it = cuda::make_constant_iterator(nesting_levels.size() - 1); auto input_child_def_it = - thrust::make_transform_iterator(cuda::counting_iterator{column_offsets[level + 1]}, + cuda::transform_iterator(cuda::counting_iterator{column_offsets[level + 1]}, def_level_fn{d_nesting_levels + level + 1, d_nullability.data(), start_at_sub_level[level + 1], @@ -388,11 +388,11 @@ dremel_data get_encoding(column_view h_col, std::swap(temp_def_vals, def_level); // Merge empty at parent level with the rep, def level vals at current level - auto transformed_empties = thrust::make_transform_iterator(empties.begin(), offset_transformer); + auto transformed_empties = cuda::transform_iterator(empties.begin(), offset_transformer); auto input_parent_rep_it = cuda::make_constant_iterator(level); auto input_parent_def_it = - thrust::make_transform_iterator(empties_idx.begin(), + cuda::transform_iterator(empties_idx.begin(), def_level_fn{d_nesting_levels + level, d_nullability.data(), start_at_sub_level[level], diff --git a/cpp/src/lists/explode.cu b/cpp/src/lists/explode.cu index 95ee740ea591..60b73f2968b6 100644 --- a/cpp/src/lists/explode.cu +++ b/cpp/src/lists/explode.cu @@ -24,7 +24,6 @@ #include #include #include -#include #include #include @@ -50,7 +49,7 @@ std::unique_ptr
build_table( rmm::cuda_stream_view stream, rmm::device_async_resource_ref mr) { - auto select_iter = thrust::make_transform_iterator( + auto select_iter = cuda::transform_iterator( cuda::counting_iterator{0}, [explode_column_idx](size_type i) { return i >= explode_column_idx ? i + 1 : i; }); @@ -111,7 +110,7 @@ std::unique_ptr
explode(table_view const& input_table, // Sliced columns may require rebasing of the offsets. auto offsets = explode_col.offsets_begin(); // offsets + 1 here to skip the 0th offset, which removes a - 1 operation later. - auto offsets_minus_one = thrust::make_transform_iterator( + auto offsets_minus_one = cuda::transform_iterator( cuda::std::next(offsets), cuda::proclaim_return_type([offsets] __device__(auto i) { return (i - offsets[0]) - 1; })); @@ -149,7 +148,7 @@ std::unique_ptr
explode_position(table_view const& input_table, // Sliced columns may require rebasing of the offsets. auto offsets = explode_col.offsets_begin(); // offsets + 1 here to skip the 0th offset, which removes a - 1 operation later. - auto offsets_minus_one = thrust::make_transform_iterator( + auto offsets_minus_one = cuda::transform_iterator( offsets + 1, cuda::proclaim_return_type([offsets] __device__(auto i) { return (i - offsets[0]) - 1; })); @@ -201,7 +200,7 @@ std::unique_ptr
explode_outer(table_view const& input_table, // number of nulls or empty lists found so far in the explode column rmm::device_uvector null_or_empty_offset(explode_col.size(), stream); - auto null_or_empty = thrust::make_transform_iterator( + auto null_or_empty = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type( [offsets, offsets_size = explode_col.size() - 1] __device__(int idx) { @@ -228,7 +227,7 @@ std::unique_ptr
explode_outer(table_view const& input_table, rmm::device_uvector pos(include_position ? gather_map_size : 0, stream, mr); // offsets + 1 here to skip the 0th offset, which removes a - 1 operation later. - auto offsets_minus_one = thrust::make_transform_iterator( + auto offsets_minus_one = cuda::transform_iterator( cuda::std::next(offsets), cuda::proclaim_return_type([offsets] __device__(auto i) { return (i - offsets[0]) - 1; })); diff --git a/cpp/src/partitioning/round_robin.cu b/cpp/src/partitioning/round_robin.cu index 5a6d3080fa0e..7a44151d7560 100644 --- a/cpp/src/partitioning/round_robin.cu +++ b/cpp/src/partitioning/round_robin.cu @@ -27,7 +27,6 @@ #include #include #include -#include #include #include @@ -78,7 +77,7 @@ std::pair, std::vector> degenerate auto nrows = input.num_rows(); // iterator for partition index rotated right by start_partition positions: - auto rotated_iter_begin = thrust::make_transform_iterator( + auto rotated_iter_begin = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type( [num_partitions, start_partition] __device__(auto index) { @@ -124,7 +123,7 @@ std::pair, std::vector> degenerate // iterator for number of edges of the transposed bipartite graph; // this composes rotated_iter transform (above) iterator with // calculating number of edges of transposed bi-graph: - auto nedges_iter_begin = thrust::make_transform_iterator( + auto nedges_iter_begin = cuda::transform_iterator( rotated_iter_begin, cuda::proclaim_return_type( [nrows] __device__(auto index) { return (index < nrows ? 1 : 0); })); @@ -203,7 +202,7 @@ std::pair, std::vector> round_robin_part (start_partition - num_partitions_min_size) * max_partition_size : start_partition * (max_partition_size - 1)); - auto iter_begin = thrust::make_transform_iterator( + auto iter_begin = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type([nrows, num_partitions, @@ -239,7 +238,7 @@ std::pair, std::vector> round_robin_part // this has the effect of rotating the set of partition sizes // right by start_partition positions: // - auto rotated_iter_begin = thrust::make_transform_iterator( + auto rotated_iter_begin = cuda::transform_iterator( cuda::counting_iterator{0}, [num_partitions, start_partition, max_partition_size, num_partitions_max_size](auto index) { return ((index + num_partitions - start_partition) % num_partitions < num_partitions_max_size diff --git a/cpp/src/quantiles/quantile.cu b/cpp/src/quantiles/quantile.cu index 9bb5fe49d2b2..250bd81f41c8 100644 --- a/cpp/src/quantiles/quantile.cu +++ b/cpp/src/quantiles/quantile.cu @@ -27,7 +27,6 @@ #include #include -#include #include #include @@ -105,7 +104,7 @@ struct quantile_functor { } if (input.nullable()) { - auto sorted_validity = thrust::make_transform_iterator( + auto sorted_validity = cuda::transform_iterator( ordered_indices, cuda::proclaim_return_type( [input = *d_input] __device__(size_type idx) { return input.is_valid_nocheck(idx); })); diff --git a/cpp/src/quantiles/quantiles.cu b/cpp/src/quantiles/quantiles.cu index edc6d078ae27..baf205f11649 100644 --- a/cpp/src/quantiles/quantiles.cu +++ b/cpp/src/quantiles/quantiles.cu @@ -21,7 +21,6 @@ #include #include -#include #include #include @@ -46,7 +45,7 @@ std::unique_ptr
quantiles(table_view const& input, auto const q_device = cudf::detail::make_device_uvector_async(q, stream, cudf::get_current_device_resource_ref()); - auto quantile_idx_iter = thrust::make_transform_iterator(q_device.begin(), quantile_idx_lookup); + auto quantile_idx_iter = cuda::transform_iterator(q_device.begin(), quantile_idx_lookup); return detail::gather(input, quantile_idx_iter, diff --git a/cpp/src/quantiles/tdigest/tdigest.cu b/cpp/src/quantiles/tdigest/tdigest.cu index bf793aecb3bc..0b1e445f44f4 100644 --- a/cpp/src/quantiles/tdigest/tdigest.cu +++ b/cpp/src/quantiles/tdigest/tdigest.cu @@ -29,7 +29,6 @@ #include #include #include -#include #include #include @@ -374,7 +373,7 @@ std::unique_ptr percentile_approx(tdigest_column_view const& input, // if any of the input digests are empty, nullify the corresponding output rows (values will be // uninitialized) auto [bitmask, null_count] = [stream, mr, &tdv]() { - auto tdigest_is_empty = thrust::make_transform_iterator( + auto tdigest_is_empty = cuda::transform_iterator( detail::size_begin(tdv), cuda::proclaim_return_type( [] __device__(size_type tdigest_size) -> size_type { return tdigest_size == 0; })); diff --git a/cpp/src/quantiles/tdigest/tdigest_aggregation.cu b/cpp/src/quantiles/tdigest/tdigest_aggregation.cu index ffa3a3d7a28a..c6d36f577f1a 100644 --- a/cpp/src/quantiles/tdigest/tdigest_aggregation.cu +++ b/cpp/src/quantiles/tdigest/tdigest_aggregation.cu @@ -37,7 +37,6 @@ #include #include #include -#include #include #include #include @@ -1027,7 +1026,7 @@ std::unique_ptr compute_tdigests(int delta, // to represent cluster indices (for example, if a tdigest had 100 clusters, the keys should fall // into the range 0-99). But since we have multiple tdigests, we need to keep the keys unique // between the groups, so we add our group start offset. - auto keys = thrust::make_transform_iterator( + auto keys = cuda::transform_iterator( cuda::counting_iterator{0}, compute_tdigests_keys_fn{delta, cinfo.cluster_wl.begin(), @@ -1450,7 +1449,7 @@ std::unique_ptr merge_tdigests(tdigest_column_view const& tdv, auto merged_min_col = cudf::make_numeric_column( data_type{type_id::FLOAT64}, num_groups, mask_state::UNALLOCATED, stream, mr); auto min_iter = - thrust::make_transform_iterator(cuda::make_zip_iterator(cuda::std::make_tuple( + cuda::transform_iterator(cuda::make_zip_iterator(cuda::std::make_tuple( tdv.min_begin(), cudf::tdigest::detail::size_begin(tdv))), tdigest_min{}); thrust::reduce_by_key(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), @@ -1465,7 +1464,7 @@ std::unique_ptr merge_tdigests(tdigest_column_view const& tdv, auto merged_max_col = cudf::make_numeric_column( data_type{type_id::FLOAT64}, num_groups, mask_state::UNALLOCATED, stream, mr); auto max_iter = - thrust::make_transform_iterator(cuda::make_zip_iterator(cuda::std::make_tuple( + cuda::transform_iterator(cuda::make_zip_iterator(cuda::std::make_tuple( tdv.max_begin(), cudf::tdigest::detail::size_begin(tdv))), tdigest_max{}); thrust::reduce_by_key(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), diff --git a/cpp/src/reductions/all.cu b/cpp/src/reductions/all.cu index 8807eb9c67db..a523db2d9fbc 100644 --- a/cpp/src/reductions/all.cu +++ b/cpp/src/reductions/all.cu @@ -13,7 +13,6 @@ #include #include #include -#include #include namespace cudf { @@ -54,7 +53,7 @@ struct all_fn { auto null_iter = op::min{}.template get_null_replacing_element_transformer(); auto pair_iter = cudf::dictionary::detail::make_dictionary_pair_iterator(*d_dict, input.has_nulls()); - return thrust::make_transform_iterator(pair_iter, null_iter); + return cuda::transform_iterator(pair_iter, null_iter); }(); auto d_result = cudf::detail::device_scalar(1, stream, cudf::get_current_device_resource_ref()); diff --git a/cpp/src/reductions/any.cu b/cpp/src/reductions/any.cu index 39816394a3f7..a5beb01034ca 100644 --- a/cpp/src/reductions/any.cu +++ b/cpp/src/reductions/any.cu @@ -13,7 +13,6 @@ #include #include #include -#include #include namespace cudf { @@ -54,7 +53,7 @@ struct any_fn { auto null_iter = op::max{}.template get_null_replacing_element_transformer(); auto pair_iter = cudf::dictionary::detail::make_dictionary_pair_iterator(*d_dict, input.has_nulls()); - return thrust::make_transform_iterator(pair_iter, null_iter); + return cuda::transform_iterator(pair_iter, null_iter); }(); auto d_result = cudf::detail::device_scalar(0, stream, cudf::get_current_device_resource_ref()); diff --git a/cpp/src/reductions/compound.cuh b/cpp/src/reductions/compound.cuh index 2a712685c445..f82c141b4ebc 100644 --- a/cpp/src/reductions/compound.cuh +++ b/cpp/src/reductions/compound.cuh @@ -14,7 +14,7 @@ #include #include -#include +#include #include #include @@ -62,19 +62,19 @@ std::unique_ptr compound_reduction(column_view const& col, if (!cudf::is_dictionary(col.type())) { if (col.has_nulls()) { - auto it = thrust::make_transform_iterator( + auto it = cuda::transform_iterator( dcol->pair_begin(), compound_op.template get_null_replacing_element_transformer()); return cudf::reduction::detail::reduce( it, col.size(), compound_op, valid_count, ddof, stream, mr); } else { - auto it = thrust::make_transform_iterator( + auto it = cuda::transform_iterator( dcol->begin(), compound_op.template get_element_transformer()); return cudf::reduction::detail::reduce( it, col.size(), compound_op, valid_count, ddof, stream, mr); } } else { - auto it = thrust::make_transform_iterator( + auto it = cuda::transform_iterator( cudf::dictionary::detail::make_dictionary_pair_iterator(*dcol, col.has_nulls()), compound_op.template get_null_replacing_element_transformer()); return cudf::reduction::detail::reduce( diff --git a/cpp/src/reductions/extrema_utils.cuh b/cpp/src/reductions/extrema_utils.cuh index 19a635d55275..ef52a7625d4e 100644 --- a/cpp/src/reductions/extrema_utils.cuh +++ b/cpp/src/reductions/extrema_utils.cuh @@ -128,7 +128,7 @@ class arg_minmax_dispatcher { auto const d_input = column_device_view::create(input, stream); auto const transformer = Op{}.template get_null_replacing_element_transformer(); auto const it = - thrust::make_transform_iterator(d_input->pair_begin(), transformer); + cuda::transform_iterator(d_input->pair_begin(), transformer); return find_extremum_idx(it, input.size(), stream); } else { return find_extremum_idx(input.begin(), input.size(), stream); diff --git a/cpp/src/reductions/minmax.cu b/cpp/src/reductions/minmax.cu index 1a03e01df946..8f1d1bb1a86b 100644 --- a/cpp/src/reductions/minmax.cu +++ b/cpp/src/reductions/minmax.cu @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include @@ -150,12 +150,12 @@ struct minmax_functor { auto device_col = column_device_view::create(col, stream); // compute minimum and maximum values if (col.has_nulls()) { - auto pair_to_minmax = thrust::make_transform_iterator( + auto pair_to_minmax = cuda::transform_iterator( make_pair_iterator(*device_col), create_minmax_with_nulls{}); return reduce_device(pair_to_minmax, col.size(), minmax_binary_op{}, stream); } else { auto col_to_minmax = - thrust::make_transform_iterator(device_col->begin(), create_minmax{}); + cuda::transform_iterator(device_col->begin(), create_minmax{}); return reduce_device(col_to_minmax, col.size(), minmax_binary_op{}, stream); } } diff --git a/cpp/src/reductions/nth_element.cu b/cpp/src/reductions/nth_element.cu index 8a5f64267fa1..dfce98e91344 100644 --- a/cpp/src/reductions/nth_element.cu +++ b/cpp/src/reductions/nth_element.cu @@ -16,7 +16,7 @@ #include #include -#include +#include #include namespace cudf::reduction::detail { @@ -35,7 +35,7 @@ std::unique_ptr nth_element(column_view const& col, CUDF_EXPECTS(n >= 0 and n < valid_count, "Index out of bounds"); auto dcol = column_device_view::create(col, stream); auto bitmask_iterator = - thrust::make_transform_iterator(cudf::detail::make_validity_iterator(*dcol), + cuda::transform_iterator(cudf::detail::make_validity_iterator(*dcol), cuda::proclaim_return_type([] __device__(auto b) { return static_cast(b); })); diff --git a/cpp/src/reductions/scan/ewm.cu b/cpp/src/reductions/scan/ewm.cu index 679a7d4ba2e4..57a8a8c132db 100644 --- a/cpp/src/reductions/scan/ewm.cu +++ b/cpp/src/reductions/scan/ewm.cu @@ -136,7 +136,7 @@ rmm::device_uvector null_roll_up(column_view const& input, rmm::device_uvector output(input.size(), stream); auto device_view = column_device_view::create(input, stream); - auto invalid_it = thrust::make_transform_iterator( + auto invalid_it = cuda::transform_iterator( cudf::detail::make_validity_iterator(*device_view), cuda::proclaim_return_type([] __device__(int valid) -> int { return 1 - valid; })); diff --git a/cpp/src/reductions/segmented/compound.cuh b/cpp/src/reductions/segmented/compound.cuh index d86aeb59adcf..8cb21ea290cb 100644 --- a/cpp/src/reductions/segmented/compound.cuh +++ b/cpp/src/reductions/segmented/compound.cuh @@ -16,7 +16,7 @@ #include #include -#include +#include namespace cudf { namespace reduction { @@ -66,12 +66,12 @@ std::unique_ptr compound_segmented_reduction(column_view const& col, // Run segmented reduction if (col.has_nulls()) { auto nrt = compound_op.template get_null_replacing_element_transformer(); - auto itr = thrust::make_transform_iterator(d_col->pair_begin(), nrt); + auto itr = cuda::transform_iterator(d_col->pair_begin(), nrt); cudf::reduction::detail::segmented_reduce( itr, offsets.begin(), offsets.end(), out_itr, compound_op, ddof, counts.data(), stream); } else { auto et = compound_op.template get_element_transformer(); - auto itr = thrust::make_transform_iterator(d_col->begin(), et); + auto itr = cuda::transform_iterator(d_col->begin(), et); cudf::reduction::detail::segmented_reduce( itr, offsets.begin(), offsets.end(), out_itr, compound_op, ddof, counts.data(), stream); } diff --git a/cpp/src/reductions/segmented/simple.cuh b/cpp/src/reductions/segmented/simple.cuh index 3668c3b53d94..a7a08bb0ee0b 100644 --- a/cpp/src/reductions/segmented/simple.cuh +++ b/cpp/src/reductions/segmented/simple.cuh @@ -26,7 +26,6 @@ #include #include -#include #include #include @@ -87,12 +86,12 @@ std::unique_ptr simple_segmented_reduction( if (col.has_nulls()) { auto f = simple_op.template get_null_replacing_element_transformer(); - auto it = thrust::make_transform_iterator(dcol->pair_begin(), f); + auto it = cuda::transform_iterator(dcol->pair_begin(), f); cudf::reduction::detail::segmented_reduce( it, offsets.begin(), offsets.end(), outit, binary_op, initial_value, stream); } else { auto f = simple_op.template get_element_transformer(); - auto it = thrust::make_transform_iterator(dcol->begin(), f); + auto it = cuda::transform_iterator(dcol->begin(), f); cudf::reduction::detail::segmented_reduce( it, offsets.begin(), offsets.end(), outit, binary_op, initial_value, stream); } diff --git a/cpp/src/reductions/simple.cuh b/cpp/src/reductions/simple.cuh index 7ea6b2b608a9..0371b4ea450e 100644 --- a/cpp/src/reductions/simple.cuh +++ b/cpp/src/reductions/simple.cuh @@ -23,7 +23,6 @@ #include #include -#include #include namespace cudf { @@ -68,11 +67,11 @@ std::unique_ptr simple_reduction(column_view const& col, auto result = [&] { if (col.has_nulls()) { auto f = simple_op.template get_null_replacing_element_transformer(); - auto it = thrust::make_transform_iterator(dcol->pair_begin(), f); + auto it = cuda::transform_iterator(dcol->pair_begin(), f); return cudf::reduction::detail::reduce(it, col.size(), simple_op, initial_value, stream, mr); } else { auto f = simple_op.template get_element_transformer(); - auto it = thrust::make_transform_iterator(dcol->begin(), f); + auto it = cuda::transform_iterator(dcol->begin(), f); return cudf::reduction::detail::reduce(it, col.size(), simple_op, initial_value, stream, mr); } }(); @@ -155,7 +154,7 @@ std::unique_ptr dictionary_reduction( auto f = simple_op.template get_null_replacing_element_transformer(); auto p = cudf::dictionary::detail::make_dictionary_pair_iterator(*dcol, col.has_nulls()); - auto it = thrust::make_transform_iterator(p, f); + auto it = cuda::transform_iterator(p, f); return cudf::reduction::detail::reduce(it, col.size(), simple_op, {}, stream, mr); }(); diff --git a/cpp/src/replace/clamp.cu b/cpp/src/replace/clamp.cu index 79986de1c11e..afe115f49c27 100644 --- a/cpp/src/replace/clamp.cu +++ b/cpp/src/replace/clamp.cu @@ -34,7 +34,6 @@ #include #include #include -#include #include namespace cudf { diff --git a/cpp/src/reshape/interleave_columns.cu b/cpp/src/reshape/interleave_columns.cu index 5f80f9827697..8ca3951ed011 100644 --- a/cpp/src/reshape/interleave_columns.cu +++ b/cpp/src/reshape/interleave_columns.cu @@ -26,7 +26,6 @@ #include #include #include -#include #include namespace cudf { @@ -87,7 +86,7 @@ struct interleave_columns_impl> output_struct_members; for (size_type child_idx = 0; child_idx < num_children; ++child_idx) { // Collect children columns from the input structs columns at index `child_idx`. - auto const child_iter = thrust::make_transform_iterator( + auto const child_iter = cuda::transform_iterator( structs_columns.begin(), [&stream = stream, child_idx](auto const& col) { return structs_column_view(col).get_sliced_child(child_idx, stream); }); diff --git a/cpp/src/reshape/table_to_array.cu b/cpp/src/reshape/table_to_array.cu index 0f1a13ea89bc..d01247c46d1f 100644 --- a/cpp/src/reshape/table_to_array.cu +++ b/cpp/src/reshape/table_to_array.cu @@ -23,7 +23,6 @@ #include #include #include -#include namespace cudf { namespace detail { diff --git a/cpp/src/reshape/tile.cu b/cpp/src/reshape/tile.cu index c0316ab110e6..1c7b430078d4 100644 --- a/cpp/src/reshape/tile.cu +++ b/cpp/src/reshape/tile.cu @@ -17,7 +17,7 @@ #include -#include +#include #include diff --git a/cpp/src/rolling/detail/rolling_collect_list.cuh b/cpp/src/rolling/detail/rolling_collect_list.cuh index f438ee68ce68..ee3f19f4476f 100644 --- a/cpp/src/rolling/detail/rolling_collect_list.cuh +++ b/cpp/src/rolling/detail/rolling_collect_list.cuh @@ -18,7 +18,6 @@ #include #include #include -#include #include namespace cudf { diff --git a/cpp/src/row_operator/row_operators.cu b/cpp/src/row_operator/row_operators.cu index 698b184abef8..5bd70e191387 100644 --- a/cpp/src/row_operator/row_operators.cu +++ b/cpp/src/row_operator/row_operators.cu @@ -22,7 +22,7 @@ #include #include -#include +#include #include #include @@ -40,7 +40,7 @@ namespace { std::vector unslice_children(column_view const& c) { if (c.type().id() == type_id::STRUCT) { - auto child_it = thrust::make_transform_iterator(c.child_begin(), [](auto const& child) { + auto child_it = cuda::transform_iterator(c.child_begin(), [](auto const& child) { return column_view( child.type(), child.offset() + child.size(), // This is hacky, we don't know the actual unsliced size but diff --git a/cpp/src/sort/rank.cu b/cpp/src/sort/rank.cu index 27e9f3596845..088adcc22bbd 100644 --- a/cpp/src/sort/rank.cu +++ b/cpp/src/sort/rank.cu @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include @@ -136,7 +135,7 @@ void tie_break_ranks_transform(cudf::device_span dense_rank_sor tie_breaker); using TransformerReturnType = cuda::std::decay_t>; - auto sorted_tied_rank = thrust::make_transform_iterator( + auto sorted_tied_rank = cuda::transform_iterator( dense_rank_sorted.begin(), cuda::proclaim_return_type( [tied_rank = tie_sorted.begin(), transformer] __device__(auto dense_pos) { diff --git a/cpp/src/strings/replace/multi.cu b/cpp/src/strings/replace/multi.cu index 1a7e4d40502b..5c394e4bf9dd 100644 --- a/cpp/src/strings/replace/multi.cu +++ b/cpp/src/strings/replace/multi.cu @@ -342,7 +342,7 @@ std::unique_ptr replace_character_parallel(strings_column_view const& in auto targets_indices = rmm::device_uvector(target_count, stream); // cudf::detail::make_counting_transform_iterator hardcodes size_type - auto const copy_itr = thrust::make_transform_iterator(cuda::counting_iterator{0}, + auto const copy_itr = cuda::transform_iterator(cuda::counting_iterator{0}, pair_generator{fn, chars_bytes}); auto const out_itr = cuda::make_zip_iterator( cuda::std::make_tuple(targets_positions.begin(), targets_indices.begin())); diff --git a/cpp/src/strings/search/contains_multiple.cu b/cpp/src/strings/search/contains_multiple.cu index 542aea6b4177..f81535580470 100644 --- a/cpp/src/strings/search/contains_multiple.cu +++ b/cpp/src/strings/search/contains_multiple.cu @@ -29,7 +29,6 @@ #include #include #include -#include #include #include #include @@ -194,7 +193,7 @@ std::unique_ptr
contains_multiple(strings_column_view const& input, auto first_bytes = rmm::device_uvector(targets.size(), stream); auto indices = rmm::device_uvector(targets.size(), stream); { - auto tgt_itr = thrust::make_transform_iterator( + auto tgt_itr = cuda::transform_iterator( d_targets->begin(), cuda::proclaim_return_type([] __device__(auto const& d_tgt) -> u_char { return d_tgt.empty() ? u_char{0} : static_cast(d_tgt.data()[0]); @@ -239,7 +238,7 @@ std::unique_ptr
contains_multiple(strings_column_view const& input, auto results = std::vector>(results_iter, results_iter + targets.size()); auto d_results = [&] { auto host_results_pointer_iter = - thrust::make_transform_iterator(results.begin(), [](auto const& results_column) { + cuda::transform_iterator(results.begin(), [](auto const& results_column) { return results_column->mutable_view().template data(); }); auto host_results_pointers = diff --git a/cpp/src/strings/strings_column_factories.cu b/cpp/src/strings/strings_column_factories.cu index 3ad65d2c0945..a98e9db4534a 100644 --- a/cpp/src/strings/strings_column_factories.cu +++ b/cpp/src/strings/strings_column_factories.cu @@ -20,7 +20,7 @@ #include #include -#include +#include #include #include @@ -216,7 +216,7 @@ std::unique_ptr make_strings_column(device_span strin CUDF_FUNC_RANGE(); auto it_pair = - thrust::make_transform_iterator(string_views.begin(), string_view_to_pair{null_placeholder}); + cuda::transform_iterator(string_views.begin(), string_view_to_pair{null_placeholder}); return cudf::strings::detail::make_strings_column( it_pair, it_pair + string_views.size(), stream, mr); } diff --git a/cpp/src/text/deduplicate.cu b/cpp/src/text/deduplicate.cu index 3ba002f549a6..1bd344097d39 100644 --- a/cpp/src/text/deduplicate.cu +++ b/cpp/src/text/deduplicate.cu @@ -430,10 +430,10 @@ std::unique_ptr resolve_duplicates_pair_impl( auto const chars_span2 = cudf::device_span(d_input_chars2, chars_size2); auto const itr1 = - thrust::make_transform_iterator(indices1.begin(), index_to_prefix_fn{chars_span1}); + cuda::transform_iterator(indices1.begin(), index_to_prefix_fn{chars_span1}); auto const end1 = itr1 + indices1.size(); auto const itr2 = - thrust::make_transform_iterator(indices2.begin(), index_to_string_fn{chars_span2}); + cuda::transform_iterator(indices2.begin(), index_to_string_fn{chars_span2}); auto const end2 = itr2 + indices2.size(); // vectorized lower-bound and upper-bound of prefix strings improves performance of the diff --git a/cpp/src/text/normalize.cu b/cpp/src/text/normalize.cu index fe89efcb6bb2..19cdfa13f1c2 100644 --- a/cpp/src/text/normalize.cu +++ b/cpp/src/text/normalize.cu @@ -33,6 +33,7 @@ #include #include +#include #include #include #include @@ -286,7 +287,7 @@ CUDF_KERNEL void special_tokens_kernel(uint32_t* d_normalized, if (match == end) { return; } char candidate[8]; auto const ch_begin = - thrust::transform_iterator(begin, [](auto v) { return static_cast(v); }); + cuda::transform_iterator(begin, [](auto v) { return static_cast(v); }); auto const ch_end = ch_begin + cuda::std::distance(begin, match + 1); auto last = thrust::copy_if( thrust::seq, ch_begin, ch_end, candidate, [](auto c) { return c != 0 && c != ' '; }); @@ -432,7 +433,7 @@ rmm::device_uvector compute_sizes(cudf::device_span([offset] __device__(auto o) { return o - offset; })); cub::DeviceSegmentedReduce::Sum( diff --git a/cpp/src/text/wordpiece_tokenize.cu b/cpp/src/text/wordpiece_tokenize.cu index 18604469b314..242e86dede37 100644 --- a/cpp/src/text/wordpiece_tokenize.cu +++ b/cpp/src/text/wordpiece_tokenize.cu @@ -39,7 +39,6 @@ #include #include #include -#include #include namespace nvtext { @@ -258,7 +257,7 @@ wordpiece_vocabulary::wordpiece_vocabulary(cudf::strings_column_view const& inpu rmm::mr::polymorphic_allocator{mr}, stream.value()); // insert them without the '##' prefix since that is how they will be looked up - auto iter_sub = thrust::make_transform_iterator(sub_map_indices.begin(), key_pair{}); + auto iter_sub = cuda::transform_iterator(sub_map_indices.begin(), key_pair{}); vocab_sub_map->insert_async(iter_sub, iter_sub + sub_map_indices.size(), stream.value()); // prefetch the [unk] vocab entry diff --git a/cpp/src/transpose/transpose.cu b/cpp/src/transpose/transpose.cu index 735137eb6d11..2a6694949d48 100644 --- a/cpp/src/transpose/transpose.cu +++ b/cpp/src/transpose/transpose.cu @@ -18,7 +18,6 @@ #include #include -#include namespace cudf { namespace detail { @@ -40,7 +39,7 @@ std::pair, table_view> transpose(table_view const& input auto output_column = cudf::detail::interleave_columns(input, stream, mr); auto one_iter = cuda::counting_iterator{1}; - auto splits_iter = thrust::make_transform_iterator( + auto splits_iter = cuda::transform_iterator( one_iter, [width = input.num_columns()](size_type idx) { return idx * width; }); auto splits = std::vector(splits_iter, splits_iter + input.num_rows() - 1); auto output_column_views = detail::split(output_column->view(), splits, stream); diff --git a/cpp/src/utilities/linked_column.cpp b/cpp/src/utilities/linked_column.cpp index 24ce1bbca317..2409ae82cbf9 100644 --- a/cpp/src/utilities/linked_column.cpp +++ b/cpp/src/utilities/linked_column.cpp @@ -5,7 +5,7 @@ #include -#include +#include namespace cudf::detail { @@ -23,7 +23,7 @@ linked_column_view::linked_column_view(linked_column_view* parent, column_view c linked_column_view::operator column_view() const { - auto child_it = thrust::make_transform_iterator( + auto child_it = cuda::transform_iterator( children.begin(), [](auto const& c) { return static_cast(*c); }); return column_view(this->type(), this->size(), @@ -36,7 +36,7 @@ linked_column_view::operator column_view() const LinkedColVector table_to_linked_columns(table_view const& table) { - auto linked_it = thrust::make_transform_iterator( + auto linked_it = cuda::transform_iterator( table.begin(), [](auto const& c) { return std::make_shared(c); }); return LinkedColVector(linked_it, linked_it + table.num_columns()); } diff --git a/cpp/tests/copying/copy_range_tests.cpp b/cpp/tests/copying/copy_range_tests.cpp index 1f7f3dd4d5d6..a95d8679d6d7 100644 --- a/cpp/tests/copying/copy_range_tests.cpp +++ b/cpp/tests/copying/copy_range_tests.cpp @@ -15,7 +15,6 @@ #include #include -#include #include @@ -338,11 +337,11 @@ TEST_F(CopyRangeTestFixture, CopyDictionary) CUDF_TEST_EXPECT_COLUMNS_EQUAL(*decoded, expected); } - auto source_validity = thrust::make_transform_iterator( + auto source_validity = cuda::transform_iterator( cuda::counting_iterator{0}, [](auto i) { return i != 3; }); - auto target_validity = thrust::make_transform_iterator( + auto target_validity = cuda::transform_iterator( cuda::counting_iterator{0}, [](auto i) { return i != 3 && i != 9; }); - auto expected_validity = thrust::make_transform_iterator( + auto expected_validity = cuda::transform_iterator( cuda::counting_iterator{0}, [](auto i) { return i != 5 && i != 9; }); { auto source = cudf::dictionary::encode(cudf::test::strings_column_wrapper( diff --git a/cpp/tests/copying/split_tests.cpp b/cpp/tests/copying/split_tests.cpp index 72faa23df0c2..f2b78b1802cf 100644 --- a/cpp/tests/copying/split_tests.cpp +++ b/cpp/tests/copying/split_tests.cpp @@ -23,7 +23,6 @@ #include #include -#include #include #include @@ -219,7 +218,7 @@ void split_custom_column(SplitFunc Split, std::vector base_strings( {"banana", "pear", "apple", "pecans", "vanilla", "cat", "mouse", "green"}); - auto string_randomizer = thrust::make_transform_iterator( + auto string_randomizer = cuda::transform_iterator( cuda::counting_iterator{0}, [&base_strings](cudf::size_type i) { return base_strings[rand() % base_strings.size()]; }); diff --git a/cpp/tests/copying/utility_tests.cpp b/cpp/tests/copying/utility_tests.cpp index 5868fc6c2096..06ecd4cff978 100644 --- a/cpp/tests/copying/utility_tests.cpp +++ b/cpp/tests/copying/utility_tests.cpp @@ -15,7 +15,7 @@ #include #include -#include +#include #include @@ -58,7 +58,7 @@ TEST_F(EmptyLikeStringTest, ColumnStringTest) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto got = cudf::empty_like(strings); check_empty_string_columns(got->view(), strings); diff --git a/cpp/tests/dictionary/factories_test.cpp b/cpp/tests/dictionary/factories_test.cpp index fc0ff4042335..124804bf9e38 100644 --- a/cpp/tests/dictionary/factories_test.cpp +++ b/cpp/tests/dictionary/factories_test.cpp @@ -11,7 +11,7 @@ #include #include -#include +#include struct DictionaryFactoriesTest : public cudf::test::BaseFixture {}; @@ -32,7 +32,7 @@ TEST_F(DictionaryFactoriesTest, ColumnViewsWithNulls) cudf::test::fixed_width_column_wrapper keys{-11.75, 4.25, 7.125, 0.5, 12.0}; std::vector h_values{1, 3, 2, 0, 1, 4, 1}; cudf::test::fixed_width_column_wrapper indices( - h_values.begin(), h_values.end(), thrust::make_transform_iterator(h_values.begin(), [](auto v) { + h_values.begin(), h_values.end(), cuda::transform_iterator(h_values.begin(), [](auto v) { return v > 0; })); auto dictionary = cudf::make_dictionary_column(keys, indices); diff --git a/cpp/tests/dictionary/remove_keys_test.cpp b/cpp/tests/dictionary/remove_keys_test.cpp index a249243f1ed2..3ce41403d669 100644 --- a/cpp/tests/dictionary/remove_keys_test.cpp +++ b/cpp/tests/dictionary/remove_keys_test.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include #include @@ -35,7 +35,7 @@ TEST_F(DictionaryRemoveKeysTest, StringsColumn) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); auto const decoded = cudf::dictionary::decode(result->view()); CUDF_TEST_EXPECT_COLUMNS_EQUAL(decoded->view(), expected); } diff --git a/cpp/tests/dictionary/set_keys_test.cpp b/cpp/tests/dictionary/set_keys_test.cpp index 9a88ab9356c1..7ccb1582b150 100644 --- a/cpp/tests/dictionary/set_keys_test.cpp +++ b/cpp/tests/dictionary/set_keys_test.cpp @@ -12,7 +12,7 @@ #include #include -#include +#include #include @@ -34,7 +34,7 @@ TEST_F(DictionarySetKeysTest, StringsKeys) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); auto decoded = cudf::dictionary::decode(result->view()); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*decoded, expected); } diff --git a/cpp/tests/io/orc_chunked_reader_test.cu b/cpp/tests/io/orc_chunked_reader_test.cu index 4b8d2cac8d68..345a89fea502 100644 --- a/cpp/tests/io/orc_chunked_reader_test.cu +++ b/cpp/tests/io/orc_chunked_reader_test.cu @@ -1445,7 +1445,7 @@ TEST_F(OrcChunkedReaderInputLimitTest, SizeTypeRowsOverflow) static_assert(total_rows > std::numeric_limits::max()); auto const it = - thrust::make_transform_iterator(cuda::counting_iterator{0}, [num_rows](int64_t i) { + cuda::transform_iterator(cuda::counting_iterator{0}, [num_rows](int64_t i) { return (i % num_rows) % static_cast(std::numeric_limits::max() / 2); }); auto const col = data_col(it, it + num_rows); diff --git a/cpp/tests/iterator/value_iterator_test_transform.cu b/cpp/tests/iterator/value_iterator_test_transform.cu index 8551d04e4535..abfbe7837305 100644 --- a/cpp/tests/iterator/value_iterator_test_transform.cu +++ b/cpp/tests/iterator/value_iterator_test_transform.cu @@ -8,7 +8,7 @@ #include #include -#include +#include struct TransformedIteratorTest : public IteratorTest {}; @@ -56,7 +56,7 @@ TEST_F(TransformedIteratorTest, null_iterator_upcast) // GPU test auto it_dev = cudf::detail::make_null_replacement_iterator(*d_col, T{0}); - auto it_dev_upcast = thrust::make_transform_iterator(it_dev, cast_fn{}); + auto it_dev_upcast = cuda::transform_iterator(it_dev, cast_fn{}); this->iterator_test_thrust(replaced_array, it_dev_upcast, d_col->size()); this->iterator_test_cub(expected_value, it_dev, d_col->size()); } @@ -99,8 +99,8 @@ TEST_F(TransformedIteratorTest, null_iterator_square) // GPU test auto it_dev = cudf::detail::make_null_replacement_iterator(*d_col, T{0}); - auto it_dev_upcast = thrust::make_transform_iterator(it_dev, cast_fn{}); - auto it_dev_squared = thrust::make_transform_iterator(it_dev_upcast, transformer); + auto it_dev_upcast = cuda::transform_iterator(it_dev, cast_fn{}); + auto it_dev_squared = cuda::transform_iterator(it_dev_upcast, transformer); this->iterator_test_thrust(replaced_array, it_dev_squared, d_col->size()); this->iterator_test_cub(expected_value, it_dev_squared, d_col->size()); } diff --git a/cpp/tests/join/semi_anti_join_tests.cpp b/cpp/tests/join/semi_anti_join_tests.cpp index 37aee3640314..24d1eef7bbac 100644 --- a/cpp/tests/join/semi_anti_join_tests.cpp +++ b/cpp/tests/join/semi_anti_join_tests.cpp @@ -25,7 +25,7 @@ #include #include -#include +#include #include #include diff --git a/cpp/tests/partitioning/hash_partition_test.cpp b/cpp/tests/partitioning/hash_partition_test.cpp index 0a9d4f4992fc..7a30b1fb7f52 100644 --- a/cpp/tests/partitioning/hash_partition_test.cpp +++ b/cpp/tests/partitioning/hash_partition_test.cpp @@ -22,7 +22,6 @@ #include #include -#include #include @@ -239,11 +238,11 @@ TEST_F(HashPartition, LargePartitionCountWithNulls) cudf::size_type const num_rows = 200; cudf::size_type const num_partitions = partitions_exceeding_shared_memory(); auto const iter = cuda::counting_iterator{0}; - auto const valids = thrust::make_transform_iterator(iter, [](auto i) { return i % 4 != 0; }); + auto const valids = cuda::transform_iterator(iter, [](auto i) { return i % 4 != 0; }); fixed_width_column_wrapper ints(iter, iter + num_rows, valids); auto const str_iter = - thrust::make_transform_iterator(iter, [](auto i) { return std::to_string(i); }); + cuda::transform_iterator(iter, [](auto i) { return std::to_string(i); }); strings_column_wrapper strings(str_iter, str_iter + num_rows, valids); auto const input = cudf::table_view({ints, strings}); @@ -396,7 +395,7 @@ void run_fixed_width_test(size_t cols, if (has_nulls) { std::generate_n(std::back_inserter(columns), cols, [rows]() { auto iter = cuda::counting_iterator{0}; - auto valids = thrust::make_transform_iterator(iter, [](auto i) { return i % 4 != 0; }); + auto valids = cuda::transform_iterator(iter, [](auto i) { return i % 4 != 0; }); return fixed_width_column_wrapper(iter, iter + rows, valids); }); } else { diff --git a/cpp/tests/rolling/grouped_rolling_range_test.cpp b/cpp/tests/rolling/grouped_rolling_range_test.cpp index 13a10083048d..f6e30cd496c2 100644 --- a/cpp/tests/rolling/grouped_rolling_range_test.cpp +++ b/cpp/tests/rolling/grouped_rolling_range_test.cpp @@ -403,7 +403,7 @@ struct GroupedRollingRangeOrderByDecimalTypedTest /// For scale == 2, the rep values are: [0, 1, 2, 3, ... 11, 12, 13] [[nodiscard]] column_ptr generate_order_by_column(numeric::scale_type scale) const { - auto const begin = thrust::make_transform_iterator( + auto const begin = cuda::transform_iterator( cuda::counting_iterator{0}, [&](auto i) -> Rep { return (i * 10000) / base::pow10[scale + 2]; }); diff --git a/cpp/tests/rolling/lead_lag_test.cpp b/cpp/tests/rolling/lead_lag_test.cpp index 5a4072cf02de..86ca304d7f4f 100644 --- a/cpp/tests/rolling/lead_lag_test.cpp +++ b/cpp/tests/rolling/lead_lag_test.cpp @@ -17,7 +17,7 @@ #include #include -#include +#include #include #include diff --git a/cpp/tests/rolling/nth_element_test.cpp b/cpp/tests/rolling/nth_element_test.cpp index 51856100dc17..2fad17e2f8b9 100644 --- a/cpp/tests/rolling/nth_element_test.cpp +++ b/cpp/tests/rolling/nth_element_test.cpp @@ -12,7 +12,7 @@ #include #include -#include +#include #include #include diff --git a/cpp/tests/rolling/range_rolling_window_test.cpp b/cpp/tests/rolling/range_rolling_window_test.cpp index 35aa8beb0ce8..d9687ce1980c 100644 --- a/cpp/tests/rolling/range_rolling_window_test.cpp +++ b/cpp/tests/rolling/range_rolling_window_test.cpp @@ -13,7 +13,6 @@ #include #include -#include #include @@ -91,7 +90,7 @@ void verify_results_for_ascending(WindowExecT exec) auto const n_rows = exec.num_rows(); auto const all_valid = cuda::make_constant_iterator(true); auto const all_invalid = cuda::make_constant_iterator(false); - auto const last_invalid = thrust::make_transform_iterator( + auto const last_invalid = cuda::transform_iterator( cuda::counting_iterator{0}, [&n_rows](auto i) { return i != (n_rows - 1); }); CUDF_TEST_EXPECT_COLUMNS_EQUAL( @@ -174,7 +173,7 @@ void verify_results_for_descending(WindowExecT exec) { auto const all_valid = cuda::make_constant_iterator(true); auto const all_invalid = cuda::make_constant_iterator(false); - auto const first_invalid = thrust::make_transform_iterator( + auto const first_invalid = cuda::transform_iterator( cuda::counting_iterator{0}, [](auto i) { return i != 0; }); CUDF_TEST_EXPECT_COLUMNS_EQUAL( diff --git a/cpp/tests/search/search_test.cpp b/cpp/tests/search/search_test.cpp index 520f07c88b7f..9116725ea074 100644 --- a/cpp/tests/search/search_test.cpp +++ b/cpp/tests/search/search_test.cpp @@ -15,7 +15,7 @@ #include #include -#include +#include #include #include @@ -647,13 +647,13 @@ TEST_F(SearchTest, empty_table_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - thrust::make_transform_iterator(h_col_strings.begin(), + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - thrust::make_transform_iterator(h_val_strings.begin(), + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; @@ -676,13 +676,13 @@ TEST_F(SearchTest, empty_values_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - thrust::make_transform_iterator(h_col_strings.begin(), + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - thrust::make_transform_iterator(h_val_strings.begin(), + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{}; @@ -706,13 +706,13 @@ TEST_F(SearchTest, non_null_column__find_first_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - thrust::make_transform_iterator(h_col_strings.begin(), + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - thrust::make_transform_iterator(h_val_strings.begin(), + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{0, 0, 0, 1, 2, 3, 3, 4, 4, 5}; @@ -736,13 +736,13 @@ TEST_F(SearchTest, non_null_column__find_last_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - thrust::make_transform_iterator(h_col_strings.begin(), + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - thrust::make_transform_iterator(h_val_strings.begin(), + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{0, 0, 1, 1, 3, 3, 4, 4, 5, 5}; @@ -766,13 +766,13 @@ TEST_F(SearchTest, non_null_column_desc__find_first_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - thrust::make_transform_iterator(h_col_strings.begin(), + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - thrust::make_transform_iterator(h_val_strings.begin(), + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{5, 5, 4, 4, 2, 2, 1, 1, 0, 0}; @@ -796,13 +796,13 @@ TEST_F(SearchTest, non_null_column_desc__find_last_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - thrust::make_transform_iterator(h_col_strings.begin(), + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - thrust::make_transform_iterator(h_val_strings.begin(), + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{5, 5, 5, 4, 3, 2, 2, 1, 1, 0}; @@ -826,13 +826,13 @@ TEST_F(SearchTest, nullable_column__find_last__nulls_as_smallest_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - thrust::make_transform_iterator(h_col_strings.begin(), + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - thrust::make_transform_iterator(h_val_strings.begin(), + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{2, 2, 3, 3, 5, 5, 6, 6, 7, 7}; @@ -856,13 +856,13 @@ TEST_F(SearchTest, nullable_column__find_first__nulls_as_smallest_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - thrust::make_transform_iterator(h_col_strings.begin(), + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - thrust::make_transform_iterator(h_val_strings.begin(), + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{0, 2, 2, 3, 4, 5, 5, 6, 6, 7}; @@ -886,13 +886,13 @@ TEST_F(SearchTest, nullable_column__find_last__nulls_as_largest_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - thrust::make_transform_iterator(h_col_strings.begin(), + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - thrust::make_transform_iterator(h_val_strings.begin(), + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{0, 1, 1, 3, 3, 4, 4, 5, 5, 7}; @@ -935,13 +935,13 @@ TEST_F(SearchTest, nullable_column__find_first__nulls_as_largest_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - thrust::make_transform_iterator(h_col_strings.begin(), + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - thrust::make_transform_iterator(h_val_strings.begin(), + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{0, 0, 1, 2, 3, 3, 4, 4, 5, 5}; @@ -978,25 +978,25 @@ TEST_F(SearchTest, table__find_first_string) cudf::test::strings_column_wrapper column_0( h_col_0_strings.begin(), h_col_0_strings.end(), - thrust::make_transform_iterator(h_col_0_strings.begin(), + cuda::transform_iterator(h_col_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper column_2( h_col_2_strings.begin(), h_col_2_strings.end(), - thrust::make_transform_iterator(h_col_2_strings.begin(), + cuda::transform_iterator(h_col_2_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_0( h_val_0_strings.begin(), h_val_0_strings.end(), - thrust::make_transform_iterator(h_val_0_strings.begin(), + cuda::transform_iterator(h_val_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_2( h_val_2_strings.begin(), h_val_2_strings.end(), - thrust::make_transform_iterator(h_val_2_strings.begin(), + cuda::transform_iterator(h_val_2_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> columns; @@ -1047,25 +1047,25 @@ TEST_F(SearchTest, table__find_last_string) cudf::test::strings_column_wrapper column_0( h_col_0_strings.begin(), h_col_0_strings.end(), - thrust::make_transform_iterator(h_col_0_strings.begin(), + cuda::transform_iterator(h_col_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper column_2( h_col_2_strings.begin(), h_col_2_strings.end(), - thrust::make_transform_iterator(h_col_2_strings.begin(), + cuda::transform_iterator(h_col_2_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_0( h_val_0_strings.begin(), h_val_0_strings.end(), - thrust::make_transform_iterator(h_val_0_strings.begin(), + cuda::transform_iterator(h_val_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_2( h_val_2_strings.begin(), h_val_2_strings.end(), - thrust::make_transform_iterator(h_val_2_strings.begin(), + cuda::transform_iterator(h_val_2_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> columns; @@ -1116,25 +1116,25 @@ TEST_F(SearchTest, table_partial_desc__find_first_string) cudf::test::strings_column_wrapper column_0( h_col_0_strings.begin(), h_col_0_strings.end(), - thrust::make_transform_iterator(h_col_0_strings.begin(), + cuda::transform_iterator(h_col_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper column_2( h_col_2_strings.begin(), h_col_2_strings.end(), - thrust::make_transform_iterator(h_col_2_strings.begin(), + cuda::transform_iterator(h_col_2_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_0( h_val_0_strings.begin(), h_val_0_strings.end(), - thrust::make_transform_iterator(h_val_0_strings.begin(), + cuda::transform_iterator(h_val_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_2( h_val_2_strings.begin(), h_val_2_strings.end(), - thrust::make_transform_iterator(h_val_2_strings.begin(), + cuda::transform_iterator(h_val_2_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> columns; @@ -1186,25 +1186,25 @@ TEST_F(SearchTest, table_partial_desc__find_last_string) cudf::test::strings_column_wrapper column_0( h_col_0_strings.begin(), h_col_0_strings.end(), - thrust::make_transform_iterator(h_col_0_strings.begin(), + cuda::transform_iterator(h_col_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper column_2( h_col_2_strings.begin(), h_col_2_strings.end(), - thrust::make_transform_iterator(h_col_2_strings.begin(), + cuda::transform_iterator(h_col_2_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_0( h_val_0_strings.begin(), h_val_0_strings.end(), - thrust::make_transform_iterator(h_val_0_strings.begin(), + cuda::transform_iterator(h_val_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_2( h_val_2_strings.begin(), h_val_2_strings.end(), - thrust::make_transform_iterator(h_val_2_strings.begin(), + cuda::transform_iterator(h_val_2_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> columns; @@ -1253,25 +1253,25 @@ TEST_F(SearchTest, table__find_first__nulls_as_smallest_string) cudf::test::strings_column_wrapper column_0( h_col_0_strings.begin(), h_col_0_strings.end(), - thrust::make_transform_iterator(h_col_0_strings.begin(), + cuda::transform_iterator(h_col_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper column_2( h_col_2_strings.begin(), h_col_2_strings.end(), - thrust::make_transform_iterator(h_col_2_strings.begin(), + cuda::transform_iterator(h_col_2_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_0( h_val_0_strings.begin(), h_val_0_strings.end(), - thrust::make_transform_iterator(h_val_0_strings.begin(), + cuda::transform_iterator(h_val_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_2( h_val_2_strings.begin(), h_val_2_strings.end(), - thrust::make_transform_iterator(h_val_2_strings.begin(), + cuda::transform_iterator(h_val_2_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> columns; @@ -1320,25 +1320,25 @@ TEST_F(SearchTest, table__find_last__nulls_as_smallest_string) cudf::test::strings_column_wrapper column_0( h_col_0_strings.begin(), h_col_0_strings.end(), - thrust::make_transform_iterator(h_col_0_strings.begin(), + cuda::transform_iterator(h_col_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper column_2( h_col_2_strings.begin(), h_col_2_strings.end(), - thrust::make_transform_iterator(h_col_2_strings.begin(), + cuda::transform_iterator(h_col_2_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_0( h_val_0_strings.begin(), h_val_0_strings.end(), - thrust::make_transform_iterator(h_val_0_strings.begin(), + cuda::transform_iterator(h_val_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_2( h_val_2_strings.begin(), h_val_2_strings.end(), - thrust::make_transform_iterator(h_val_2_strings.begin(), + cuda::transform_iterator(h_val_2_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> columns; @@ -1387,25 +1387,25 @@ TEST_F(SearchTest, table__find_first__nulls_as_largest_string) cudf::test::strings_column_wrapper column_0( h_col_0_strings.begin(), h_col_0_strings.end(), - thrust::make_transform_iterator(h_col_0_strings.begin(), + cuda::transform_iterator(h_col_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper column_2( h_col_2_strings.begin(), h_col_2_strings.end(), - thrust::make_transform_iterator(h_col_2_strings.begin(), + cuda::transform_iterator(h_col_2_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_0( h_val_0_strings.begin(), h_val_0_strings.end(), - thrust::make_transform_iterator(h_val_0_strings.begin(), + cuda::transform_iterator(h_val_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_2( h_val_2_strings.begin(), h_val_2_strings.end(), - thrust::make_transform_iterator(h_val_2_strings.begin(), + cuda::transform_iterator(h_val_2_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> columns; @@ -1454,25 +1454,25 @@ TEST_F(SearchTest, table__find_last__nulls_as_largest_string) cudf::test::strings_column_wrapper column_0( h_col_0_strings.begin(), h_col_0_strings.end(), - thrust::make_transform_iterator(h_col_0_strings.begin(), + cuda::transform_iterator(h_col_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper column_2( h_col_2_strings.begin(), h_col_2_strings.end(), - thrust::make_transform_iterator(h_col_2_strings.begin(), + cuda::transform_iterator(h_col_2_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_0( h_val_0_strings.begin(), h_val_0_strings.end(), - thrust::make_transform_iterator(h_val_0_strings.begin(), + cuda::transform_iterator(h_val_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_2( h_val_2_strings.begin(), h_val_2_strings.end(), - thrust::make_transform_iterator(h_val_2_strings.begin(), + cuda::transform_iterator(h_val_2_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> columns; @@ -1509,7 +1509,7 @@ TEST_F(SearchTest, contains_true_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - thrust::make_transform_iterator(h_col_strings.begin(), + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); bool expect = true; @@ -1528,7 +1528,7 @@ TEST_F(SearchTest, contains_false_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - thrust::make_transform_iterator(h_col_strings.begin(), + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); bool expect = false; @@ -1547,7 +1547,7 @@ TEST_F(SearchTest, contains_empty_value_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - thrust::make_transform_iterator(h_col_strings.begin(), + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); bool expect = false; @@ -1566,7 +1566,7 @@ TEST_F(SearchTest, contains_empty_column_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - thrust::make_transform_iterator(h_col_strings.begin(), + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); bool expect = false; @@ -1585,7 +1585,7 @@ TEST_F(SearchTest, contains_nullable_column_true_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - thrust::make_transform_iterator(h_col_strings.begin(), + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); bool result = false; @@ -1604,7 +1604,7 @@ TEST_F(SearchTest, contains_nullable_column_false_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - thrust::make_transform_iterator(h_col_strings.begin(), + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); bool result = false; @@ -1715,13 +1715,13 @@ TEST_F(SearchTest, multi_contains_some_string_with_nulls) cudf::test::strings_column_wrapper haystack( h_haystack_strings.begin(), h_haystack_strings.end(), - thrust::make_transform_iterator(h_haystack_strings.begin(), + cuda::transform_iterator(h_haystack_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper needles( h_needles_strings.begin(), h_needles_strings.end(), - thrust::make_transform_iterator(h_needles_strings.begin(), + cuda::transform_iterator(h_needles_strings.begin(), [](auto str) { return str != nullptr; })); auto result = cudf::contains(haystack, needles); @@ -1739,13 +1739,13 @@ TEST_F(SearchTest, multi_contains_none_string_with_nulls) cudf::test::strings_column_wrapper haystack( h_haystack_strings.begin(), h_haystack_strings.end(), - thrust::make_transform_iterator(h_haystack_strings.begin(), + cuda::transform_iterator(h_haystack_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper needles( h_needles_strings.begin(), h_needles_strings.end(), - thrust::make_transform_iterator(h_needles_strings.begin(), + cuda::transform_iterator(h_needles_strings.begin(), [](auto str) { return str != nullptr; })); auto result = cudf::contains(haystack, needles); diff --git a/cpp/tests/streams/copying_test.cpp b/cpp/tests/streams/copying_test.cpp index 502f34606a9f..80ac01aca25f 100644 --- a/cpp/tests/streams/copying_test.cpp +++ b/cpp/tests/streams/copying_test.cpp @@ -340,7 +340,7 @@ TEST_F(CopyingTest, ContiguousSplit) std::vector base_strings( {"banana", "pear", "apple", "pecans", "vanilla", "cat", "mouse", "green"}); - auto string_randomizer = thrust::make_transform_iterator( + auto string_randomizer = cuda::transform_iterator( cuda::counting_iterator{0}, [&base_strings](cudf::size_type i) { return base_strings[rand() % base_strings.size()]; }); diff --git a/cpp/tests/streams/strings/attributes_test.cpp b/cpp/tests/streams/strings/attributes_test.cpp index d3c1765642c2..e58a63957f4e 100644 --- a/cpp/tests/streams/strings/attributes_test.cpp +++ b/cpp/tests/streams/strings/attributes_test.cpp @@ -8,6 +8,8 @@ #include #include + +#include #include struct StringsAttributesTest : public cudf::test::BaseFixture {}; @@ -18,7 +20,7 @@ TEST_F(StringsAttributesTest, CodePoints) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::code_points(strings_view, cudf::test::get_default_stream()); @@ -41,7 +43,7 @@ TEST_F(StringsAttributesTest, CountBytes) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::count_bytes(strings_view, cudf::test::get_default_stream()); diff --git a/cpp/tests/strings/array_tests.cpp b/cpp/tests/strings/array_tests.cpp index 5ccd725df8b2..d3e5055c8cd6 100644 --- a/cpp/tests/strings/array_tests.cpp +++ b/cpp/tests/strings/array_tests.cpp @@ -16,7 +16,6 @@ #include #include -#include #include @@ -61,7 +60,7 @@ TEST_P(SliceParmsTest, Slice) cudf::test::strings_column_wrapper expected( h_strings.begin() + start, h_strings.begin() + end, - thrust::make_transform_iterator(h_strings.begin() + start, + cuda::transform_iterator(h_strings.begin() + start, [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUIVALENT(*results, expected); } @@ -81,7 +80,7 @@ TEST_P(SliceParmsTest, SliceAllNulls) cudf::test::strings_column_wrapper expected( h_strings.begin() + start, h_strings.begin() + end, - thrust::make_transform_iterator(h_strings.begin() + start, + cuda::transform_iterator(h_strings.begin() + start, [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } diff --git a/cpp/tests/strings/attrs_tests.cpp b/cpp/tests/strings/attrs_tests.cpp index ecf6bfe93728..8cdd836a9cfc 100644 --- a/cpp/tests/strings/attrs_tests.cpp +++ b/cpp/tests/strings/attrs_tests.cpp @@ -11,7 +11,7 @@ #include #include -#include +#include #include @@ -23,7 +23,7 @@ TEST_F(StringsAttributesTest, CodePoints) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); { @@ -57,7 +57,7 @@ TEST_F(StringsAttributesTest, StringsLengths) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); { @@ -66,7 +66,7 @@ TEST_F(StringsAttributesTest, StringsLengths) cudf::test::fixed_width_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } { @@ -75,7 +75,7 @@ TEST_F(StringsAttributesTest, StringsLengths) cudf::test::fixed_width_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } diff --git a/cpp/tests/strings/booleans_tests.cpp b/cpp/tests/strings/booleans_tests.cpp index 0675502128ff..532c30437774 100644 --- a/cpp/tests/strings/booleans_tests.cpp +++ b/cpp/tests/strings/booleans_tests.cpp @@ -10,7 +10,7 @@ #include #include -#include +#include #include @@ -22,7 +22,7 @@ TEST_F(StringsConvertTest, ToBooleans) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto true_scalar = cudf::string_scalar("true"); @@ -32,7 +32,7 @@ TEST_F(StringsConvertTest, ToBooleans) cudf::test::fixed_width_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -42,13 +42,13 @@ TEST_F(StringsConvertTest, FromBooleans) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); std::vector h_column{true, false, false, true, true, false}; cudf::test::fixed_width_column_wrapper column( h_column.begin(), h_column.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto true_scalar = cudf::string_scalar("true"); auto false_scalar = cudf::string_scalar("false"); diff --git a/cpp/tests/strings/case_tests.cpp b/cpp/tests/strings/case_tests.cpp index e264468c689f..201c5968151c 100644 --- a/cpp/tests/strings/case_tests.cpp +++ b/cpp/tests/strings/case_tests.cpp @@ -12,7 +12,7 @@ #include #include -#include +#include #include @@ -28,7 +28,7 @@ TEST_F(StringsCaseTest, ToLower) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::to_lower(strings_view); @@ -36,7 +36,7 @@ TEST_F(StringsCaseTest, ToLower) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -50,7 +50,7 @@ TEST_F(StringsCaseTest, ToUpper) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::to_upper(strings_view); @@ -58,7 +58,7 @@ TEST_F(StringsCaseTest, ToUpper) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -72,7 +72,7 @@ TEST_F(StringsCaseTest, Swapcase) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::swapcase(strings_view); @@ -80,7 +80,7 @@ TEST_F(StringsCaseTest, Swapcase) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } diff --git a/cpp/tests/strings/chars_types_tests.cpp b/cpp/tests/strings/chars_types_tests.cpp index c61b88564fab..4bfdfeeab198 100644 --- a/cpp/tests/strings/chars_types_tests.cpp +++ b/cpp/tests/strings/chars_types_tests.cpp @@ -11,7 +11,7 @@ #include #include -#include +#include #include #include @@ -60,7 +60,7 @@ TEST_P(CharsTypes, AllTypes) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::all_characters_of_type(strings_view, is_parm); @@ -75,7 +75,7 @@ TEST_P(CharsTypes, AllTypes) cudf::test::fixed_width_column_wrapper expected( sub_expected, sub_expected + strings_count, - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -132,7 +132,7 @@ TEST_F(StringsCharsTest, Alphanumeric) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::all_characters_of_type( @@ -157,7 +157,7 @@ TEST_F(StringsCharsTest, Alphanumeric) cudf::test::fixed_width_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -183,7 +183,7 @@ TEST_F(StringsCharsTest, AlphaNumericSpace) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto types = @@ -210,7 +210,7 @@ TEST_F(StringsCharsTest, AlphaNumericSpace) cudf::test::fixed_width_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -236,7 +236,7 @@ TEST_F(StringsCharsTest, Numerics) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto types = cudf::strings::string_character_types::DIGIT | @@ -264,7 +264,7 @@ TEST_F(StringsCharsTest, Numerics) cudf::test::fixed_width_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } diff --git a/cpp/tests/strings/combine/concatenate_tests.cpp b/cpp/tests/strings/combine/concatenate_tests.cpp index 3e081c7638fa..dfef73aa3ff2 100644 --- a/cpp/tests/strings/combine/concatenate_tests.cpp +++ b/cpp/tests/strings/combine/concatenate_tests.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include constexpr cudf::test::debug_output_level verbosity{cudf::test::debug_output_level::ALL_ERRORS}; @@ -25,12 +25,12 @@ TEST_F(StringsCombineTest, Concatenate) cudf::test::strings_column_wrapper strings1( h_strings1.begin(), h_strings1.end(), - thrust::make_transform_iterator(h_strings1.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings1.begin(), [](auto str) { return str != nullptr; })); std::vector h_strings2{"xyz", "abc", "d", "éa", "", nullptr, "f"}; cudf::test::strings_column_wrapper strings2( h_strings2.begin(), h_strings2.end(), - thrust::make_transform_iterator(h_strings2.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings2.begin(), [](auto str) { return str != nullptr; })); std::vector strings_columns; strings_columns.push_back(strings1); @@ -43,7 +43,7 @@ TEST_F(StringsCombineTest, Concatenate) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); auto results = cudf::strings::concatenate(table); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); @@ -54,7 +54,7 @@ TEST_F(StringsCombineTest, Concatenate) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); auto results = cudf::strings::concatenate(table, cudf::string_scalar(":")); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); @@ -64,7 +64,7 @@ TEST_F(StringsCombineTest, Concatenate) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); auto results = cudf::strings::concatenate(table, cudf::string_scalar(":"), cudf::string_scalar("_")); @@ -75,7 +75,7 @@ TEST_F(StringsCombineTest, Concatenate) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); auto results = cudf::strings::concatenate(table, cudf::string_scalar(""), cudf::string_scalar("")); diff --git a/cpp/tests/strings/combine/join_strings_tests.cpp b/cpp/tests/strings/combine/join_strings_tests.cpp index 4b99c2e4aa2c..475ce0dc85fd 100644 --- a/cpp/tests/strings/combine/join_strings_tests.cpp +++ b/cpp/tests/strings/combine/join_strings_tests.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include struct JoinStringsTest : public cudf::test::BaseFixture {}; @@ -23,7 +23,7 @@ TEST_F(JoinStringsTest, Join) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto view1 = cudf::strings_column_view(strings); { diff --git a/cpp/tests/strings/contains_tests.cpp b/cpp/tests/strings/contains_tests.cpp index bbc285e85add..0df9217bfa04 100644 --- a/cpp/tests/strings/contains_tests.cpp +++ b/cpp/tests/strings/contains_tests.cpp @@ -18,7 +18,6 @@ #include #include -#include #include #include @@ -67,7 +66,7 @@ TEST_F(StringsContainsTests, ContainsTest) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); std::vector patterns{"\\d", @@ -141,7 +140,7 @@ TEST_F(StringsContainsTests, ContainsTest) cudf::test::fixed_width_column_wrapper expected( h_expected, h_expected + h_strings.size(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto prog = cudf::strings::regex_program::create(ptn); auto results = cudf::strings::contains_re(strings_view, *prog); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); @@ -155,14 +154,14 @@ TEST_F(StringsContainsTests, MatchesTest) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); { auto const pattern = std::string("lazy"); cudf::test::fixed_width_column_wrapper expected( {false, false, true, false, false, false, false}, - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto prog = cudf::strings::regex_program::create(pattern); auto results = cudf::strings::matches_re(strings_view, *prog); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); @@ -171,7 +170,7 @@ TEST_F(StringsContainsTests, MatchesTest) auto const pattern = std::string("\\d+"); cudf::test::fixed_width_column_wrapper expected( {false, false, false, true, true, false, false}, - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto prog = cudf::strings::regex_program::create(pattern); auto results = cudf::strings::matches_re(strings_view, *prog); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); @@ -180,7 +179,7 @@ TEST_F(StringsContainsTests, MatchesTest) auto const pattern = std::string("@\\w+"); cudf::test::fixed_width_column_wrapper expected( {false, false, false, false, false, false, false}, - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto prog = cudf::strings::regex_program::create(pattern); auto results = cudf::strings::matches_re(strings_view, *prog); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); @@ -189,7 +188,7 @@ TEST_F(StringsContainsTests, MatchesTest) auto const pattern = std::string(".*"); cudf::test::fixed_width_column_wrapper expected( {true, true, true, true, true, false, true}, - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto prog = cudf::strings::regex_program::create(pattern); auto results = cudf::strings::matches_re(strings_view, *prog); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); diff --git a/cpp/tests/strings/datetime_tests.cpp b/cpp/tests/strings/datetime_tests.cpp index 57c635c5180d..d567b2e09559 100644 --- a/cpp/tests/strings/datetime_tests.cpp +++ b/cpp/tests/strings/datetime_tests.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include #include @@ -32,7 +32,7 @@ TEST_F(StringsDatetimeTest, ToTimestamp) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); std::vector h_expected{ 131246625, 1563399277, 0, 0, 1553085296, 1582934400, -1545730073, -15}; @@ -43,7 +43,7 @@ TEST_F(StringsDatetimeTest, ToTimestamp) cudf::test::fixed_width_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); results = cudf::strings::is_timestamp(strings_view, "%Y-%m-%dT%H:%M:%SZ"); @@ -331,14 +331,14 @@ TEST_F(StringsDatetimeTest, FromTimestamp) cudf::test::fixed_width_column_wrapper timestamps( h_timestamps.begin(), h_timestamps.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); auto results = cudf::strings::from_timestamps(timestamps); cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } diff --git a/cpp/tests/strings/durations_tests.cpp b/cpp/tests/strings/durations_tests.cpp index acad5be9ed37..c83c1402875b 100644 --- a/cpp/tests/strings/durations_tests.cpp +++ b/cpp/tests/strings/durations_tests.cpp @@ -11,7 +11,7 @@ #include #include -#include +#include #include #include @@ -34,14 +34,14 @@ TEST_F(StringsDurationsTest, FromToDurations) cudf::test::fixed_width_column_wrapper durations( h_durations.begin(), h_durations.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); auto results = cudf::strings::from_durations(durations); cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); // @@ -394,7 +394,7 @@ TEST_F(StringsDurationsTest, ParseSingle) ""}; // error auto size = cudf::column_view(string_src).size(); std::array expected_v{0, 0, 1, -1, 23, -23, 59, -59, 99, -99, 0, 1, 0}; - auto it1 = thrust::make_transform_iterator(expected_v.data(), + auto it1 = cuda::transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_s{i * 3600}; }); cudf::test::fixed_width_column_wrapper expected_s1(it1, it1 + size); auto results = cudf::strings::to_durations(cudf::strings_column_view(string_src), @@ -402,7 +402,7 @@ TEST_F(StringsDurationsTest, ParseSingle) "%H"); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected_s1); - auto it2 = thrust::make_transform_iterator(expected_v.data(), + auto it2 = cuda::transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_s{i * 60}; }); cudf::test::fixed_width_column_wrapper expected_s2(it2, it2 + size); results = cudf::strings::to_durations(cudf::strings_column_view(string_src), @@ -411,14 +411,14 @@ TEST_F(StringsDurationsTest, ParseSingle) CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected_s2); auto it3 = - thrust::make_transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_s{i}; }); + cuda::transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_s{i}; }); cudf::test::fixed_width_column_wrapper expected_s3(it3, it3 + size); results = cudf::strings::to_durations(cudf::strings_column_view(string_src), cudf::data_type(cudf::type_to_id()), "%S"); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected_s3); - auto it4 = thrust::make_transform_iterator(expected_v.data(), + auto it4 = cuda::transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_ms{i * 60000}; }); cudf::test::fixed_width_column_wrapper expected_ms(it4, it4 + size); results = cudf::strings::to_durations(cudf::strings_column_view(string_src), @@ -458,14 +458,14 @@ TEST_F(StringsDurationsTest, ParseMultiple) 3661, 0}; auto it1 = - thrust::make_transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_s{i}; }); + cuda::transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_s{i}; }); cudf::test::fixed_width_column_wrapper expected_s1(it1, it1 + size); auto results = cudf::strings::to_durations(cudf::strings_column_view(string_src), cudf::data_type(cudf::type_to_id()), "%H:%M:%S"); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected_s1); - auto it2 = thrust::make_transform_iterator( + auto it2 = cuda::transform_iterator( expected_v.data(), [](auto i) { return cudf::duration_D{i / (24 * 3600)}; }); cudf::test::fixed_width_column_wrapper expected_D2(it2, it2 + size); results = cudf::strings::to_durations(cudf::strings_column_view(string_src), @@ -512,14 +512,14 @@ TEST_F(StringsDurationsTest, ParseSubsecond) (3661) * 1000000000L, 0}; auto it1 = - thrust::make_transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_ns{i}; }); + cuda::transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_ns{i}; }); cudf::test::fixed_width_column_wrapper expected_ns1(it1, it1 + size); auto results = cudf::strings::to_durations(cudf::strings_column_view(string_src), cudf::data_type(cudf::type_to_id()), "%H:%M:%S"); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected_ns1); - auto it2 = thrust::make_transform_iterator(expected_v.data(), + auto it2 = cuda::transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_ms{i / 1000000}; }); cudf::test::fixed_width_column_wrapper expected_ms2(it2, it2 + size); results = cudf::strings::to_durations(cudf::strings_column_view(string_src), @@ -567,14 +567,14 @@ TEST_F(StringsDurationsTest, ParseAMPM) 0, 0}; auto it1 = - thrust::make_transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_s{i}; }); + cuda::transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_s{i}; }); cudf::test::fixed_width_column_wrapper expected_s1(it1, it1 + size); auto results = cudf::strings::to_durations(cudf::strings_column_view(string_src), cudf::data_type(cudf::type_to_id()), "%H:%M:%S %p"); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected_s1); - auto it2 = thrust::make_transform_iterator( + auto it2 = cuda::transform_iterator( expected_v.data(), [](auto i) { return cudf::duration_D{i / (24 * 3600)}; }); cudf::test::fixed_width_column_wrapper expected_D2(it2, it2 + size); results = cudf::strings::to_durations(cudf::strings_column_view(string_src), @@ -619,7 +619,7 @@ TEST_F(StringsDurationsTest, ParseCompoundSpecifier) 0, 0}; auto it1 = - thrust::make_transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_s{i}; }); + cuda::transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_s{i}; }); cudf::test::fixed_width_column_wrapper expected_s1(it1, it1 + size); auto results = cudf::strings::to_durations(cudf::strings_column_view(string_src), cudf::data_type(cudf::type_to_id()), @@ -631,7 +631,7 @@ TEST_F(StringsDurationsTest, ParseCompoundSpecifier) "%OI:%OM:%OS %p"); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected_s1); - auto it2 = thrust::make_transform_iterator(expected_v.data(), + auto it2 = cuda::transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_ms{i * 1000}; }); cudf::test::fixed_width_column_wrapper expected_s2(it2, it2 + size); results = cudf::strings::to_durations(cudf::strings_column_view(string_src), diff --git a/cpp/tests/strings/extract_tests.cpp b/cpp/tests/strings/extract_tests.cpp index 8766fa3534a7..444708fc0c99 100644 --- a/cpp/tests/strings/extract_tests.cpp +++ b/cpp/tests/strings/extract_tests.cpp @@ -15,7 +15,7 @@ #include #include -#include +#include #include @@ -29,7 +29,7 @@ TEST_F(StringsExtractTests, ExtractTest) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); std::vector h_expecteds{"First", @@ -54,11 +54,11 @@ TEST_F(StringsExtractTests, ExtractTest) cudf::test::strings_column_wrapper expected1( h_expecteds.data(), h_expecteds.data() + h_strings.size(), - thrust::make_transform_iterator(h_expecteds.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expecteds.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper expected2( h_expecteds.data() + h_strings.size(), h_expecteds.data() + h_expecteds.size(), - thrust::make_transform_iterator(h_expecteds.data() + h_strings.size(), + cuda::transform_iterator(h_expecteds.data() + h_strings.size(), [](auto str) { return str != nullptr; })); std::vector> columns; columns.push_back(expected1.release()); @@ -248,7 +248,7 @@ TEST_F(StringsExtractTests, EmptyExtractTest) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto pattern = std::string("([^_]*)\\Z"); @@ -257,7 +257,7 @@ TEST_F(StringsExtractTests, EmptyExtractTest) cudf::test::strings_column_wrapper expected( h_expected.data(), h_expected.data() + h_strings.size(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); std::vector> columns; columns.push_back(expected.release()); cudf::table table_expected(std::move(columns)); @@ -298,7 +298,7 @@ TEST_F(StringsExtractTests, ExtractAllTest) std::vector h_input( {"123 banana 7 eleven", "41 apple", "6 péar 0 pair", nullptr, "", "bees", "4 paré"}); auto validity = - thrust::make_transform_iterator(h_input.begin(), [](auto str) { return str != nullptr; }); + cuda::transform_iterator(h_input.begin(), [](auto str) { return str != nullptr; }); cudf::test::strings_column_wrapper input(h_input.begin(), h_input.end(), validity); auto sv = cudf::strings_column_view(input); @@ -390,7 +390,7 @@ TEST_F(StringsExtractTests, MediumRegex) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::extract(strings_view, *prog); @@ -398,7 +398,7 @@ TEST_F(StringsExtractTests, MediumRegex) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(results->get_column(0), expected); } @@ -420,7 +420,7 @@ TEST_F(StringsExtractTests, LargeRegex) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::extract(strings_view, *prog); @@ -428,7 +428,7 @@ TEST_F(StringsExtractTests, LargeRegex) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(results->get_column(0), expected); } diff --git a/cpp/tests/strings/find_multiple_tests.cpp b/cpp/tests/strings/find_multiple_tests.cpp index 3932a53feb4f..26ea09d268d3 100644 --- a/cpp/tests/strings/find_multiple_tests.cpp +++ b/cpp/tests/strings/find_multiple_tests.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include #include @@ -25,7 +25,7 @@ TEST_F(StringsFindMultipleTest, FindMultiple) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); std::vector h_targets{"é", "a", "e", "i", "o", "u", "es"}; diff --git a/cpp/tests/strings/findall_tests.cpp b/cpp/tests/strings/findall_tests.cpp index e4999a41bcc7..0e01f015c11c 100644 --- a/cpp/tests/strings/findall_tests.cpp +++ b/cpp/tests/strings/findall_tests.cpp @@ -14,7 +14,7 @@ #include #include -#include +#include struct StringsFindallTests : public cudf::test::BaseFixture {}; diff --git a/cpp/tests/strings/floats_tests.cpp b/cpp/tests/strings/floats_tests.cpp index 059217cb259b..adc582329fb3 100644 --- a/cpp/tests/strings/floats_tests.cpp +++ b/cpp/tests/strings/floats_tests.cpp @@ -11,7 +11,7 @@ #include #include -#include +#include #include @@ -63,7 +63,7 @@ TEST_F(StringsConvertTest, ToFloats32) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); std::vector h_expected; std::for_each(h_strings.begin(), h_strings.end(), [&](char const* str) { @@ -76,7 +76,7 @@ TEST_F(StringsConvertTest, ToFloats32) cudf::test::fixed_width_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUIVALENT(*results, expected); } @@ -97,14 +97,14 @@ TEST_F(StringsConvertTest, FromFloats32) cudf::test::fixed_width_column_wrapper floats( h_floats.begin(), h_floats.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); auto results = cudf::strings::from_floats(floats); cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUIVALENT(*results, expected); } @@ -160,14 +160,14 @@ TEST_F(StringsConvertTest, FromFloats64) cudf::test::fixed_width_column_wrapper floats( h_floats.begin(), h_floats.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); auto results = cudf::strings::from_floats(floats); cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUIVALENT(*results, expected); } diff --git a/cpp/tests/strings/integers_tests.cpp b/cpp/tests/strings/integers_tests.cpp index 75838579d555..c487419ad88a 100644 --- a/cpp/tests/strings/integers_tests.cpp +++ b/cpp/tests/strings/integers_tests.cpp @@ -16,7 +16,7 @@ #include #include -#include +#include #include #include @@ -78,13 +78,13 @@ TEST_F(StringsConvertTest, IsIntegerBoundCheckWithNulls) auto const strings = cudf::test::strings_column_wrapper( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto const results = cudf::strings::is_integer(cudf::strings_column_view(strings), cudf::data_type{cudf::type_id::INT32}); // Input has null elements then the output should have the same null mask auto const expected = cudf::test::fixed_width_column_wrapper( std::initializer_list{0, 1, NULL_VAL, 0, 1, 0, 0, NULL_VAL}, - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -191,13 +191,13 @@ TEST_F(StringsConvertTest, ToInteger) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto results = cudf::strings::to_integers(cudf::strings_column_view(strings), cudf::data_type{cudf::type_id::INT16}); auto const expected_i16 = cudf::test::fixed_width_column_wrapper( std::initializer_list{0, 1234, NULL_VAL, 0, -9832, 93, 765, NULL_VAL, -1, -1, 0, 0}, - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected_i16); results = cudf::strings::to_integers(cudf::strings_column_view(strings), @@ -205,7 +205,7 @@ TEST_F(StringsConvertTest, ToInteger) auto const expected_i32 = cudf::test::fixed_width_column_wrapper( std::initializer_list{ 0, 1234, NULL_VAL, 0, -9832, 93, 765, NULL_VAL, -1, 2147483647, -2147483648, -2147483648}, - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected_i32); results = cudf::strings::to_integers(cudf::strings_column_view(strings), @@ -223,7 +223,7 @@ TEST_F(StringsConvertTest, ToInteger) 2147483647, 2147483648, 2147483648}, - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected_u32); } @@ -238,14 +238,14 @@ TEST_F(StringsConvertTest, FromInteger) cudf::test::fixed_width_column_wrapper integers( h_integers.begin(), h_integers.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); auto results = cudf::strings::from_integers(integers); cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -330,7 +330,7 @@ TEST_F(StringsConvertTest, HexToInteger) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); { std::vector h_expected; @@ -346,7 +346,7 @@ TEST_F(StringsConvertTest, HexToInteger) cudf::test::fixed_width_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } { @@ -363,7 +363,7 @@ TEST_F(StringsConvertTest, HexToInteger) cudf::test::fixed_width_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } } @@ -385,7 +385,7 @@ TEST_F(StringsConvertTest, IsHex) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::fixed_width_column_wrapper expected( {0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0}, {true, true, false, true, true, true, true, true, true, true, true, true}); diff --git a/cpp/tests/strings/ipv4_tests.cpp b/cpp/tests/strings/ipv4_tests.cpp index 78787631eeaa..2abdbd81d17a 100644 --- a/cpp/tests/strings/ipv4_tests.cpp +++ b/cpp/tests/strings/ipv4_tests.cpp @@ -10,7 +10,7 @@ #include #include -#include +#include #include @@ -23,7 +23,7 @@ TEST_F(StringsConvertTest, IPv4ToIntegers) cudf::test::strings_column_wrapper strings( h_strings.cbegin(), h_strings.cend(), - thrust::make_transform_iterator(h_strings.begin(), + cuda::transform_iterator(h_strings.begin(), [](auto const str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); @@ -33,7 +33,7 @@ TEST_F(StringsConvertTest, IPv4ToIntegers) cudf::test::fixed_width_column_wrapper expected( h_expected.cbegin(), h_expected.cend(), - thrust::make_transform_iterator(h_strings.begin(), + cuda::transform_iterator(h_strings.begin(), [](auto const str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -45,14 +45,14 @@ TEST_F(StringsConvertTest, IntegersToIPv4) cudf::test::strings_column_wrapper strings( h_strings.cbegin(), h_strings.cend(), - thrust::make_transform_iterator(h_strings.begin(), + cuda::transform_iterator(h_strings.begin(), [](auto const str) { return str != nullptr; })); std::vector h_column{3232235521, 167772161, 0, 0, 700055553, 700776449}; cudf::test::fixed_width_column_wrapper column( h_column.cbegin(), h_column.cend(), - thrust::make_transform_iterator(h_strings.begin(), + cuda::transform_iterator(h_strings.begin(), [](auto const str) { return str != nullptr; })); auto results = cudf::strings::integers_to_ipv4(column); @@ -92,7 +92,7 @@ TEST_F(StringsConvertTest, IsIPv4) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::fixed_width_column_wrapper expected( {0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0}, {true, true, false, true, true, true, true, true, true, true, true, true}); diff --git a/cpp/tests/strings/pad_tests.cpp b/cpp/tests/strings/pad_tests.cpp index b9d568ae5f9f..1719d47334a9 100644 --- a/cpp/tests/strings/pad_tests.cpp +++ b/cpp/tests/strings/pad_tests.cpp @@ -14,7 +14,7 @@ #include #include -#include +#include #include @@ -26,7 +26,7 @@ TEST_F(StringsPadTest, Padding) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::size_type width = 6; std::string phil = "+"; auto strings_view = cudf::strings_column_view(strings); @@ -39,7 +39,7 @@ TEST_F(StringsPadTest, Padding) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } { @@ -50,7 +50,7 @@ TEST_F(StringsPadTest, Padding) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } { @@ -61,7 +61,7 @@ TEST_F(StringsPadTest, Padding) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } } @@ -125,7 +125,7 @@ TEST_F(StringsPadTest, ZFill) cudf::test::strings_column_wrapper input( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(input); auto results = cudf::strings::zfill(strings_view, 6); @@ -145,7 +145,7 @@ TEST_F(StringsPadTest, ZFill) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -193,7 +193,7 @@ TEST_F(StringsPadTest, Wrap1) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::size_type width = 3; auto strings_view = cudf::strings_column_view(strings); @@ -204,7 +204,7 @@ TEST_F(StringsPadTest, Wrap1) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -215,7 +215,7 @@ TEST_F(StringsPadTest, Wrap2) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::size_type width = 12; auto strings_view = cudf::strings_column_view(strings); @@ -227,7 +227,7 @@ TEST_F(StringsPadTest, Wrap2) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -237,7 +237,7 @@ TEST_F(StringsPadTest, WrapExpectFailure) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::size_type width = 0; // this should trigger failure diff --git a/cpp/tests/strings/replace_regex_tests.cpp b/cpp/tests/strings/replace_regex_tests.cpp index 8422264d4c36..b849eb262867 100644 --- a/cpp/tests/strings/replace_regex_tests.cpp +++ b/cpp/tests/strings/replace_regex_tests.cpp @@ -14,7 +14,7 @@ #include #include -#include +#include #include #include @@ -426,7 +426,7 @@ TEST_F(StringsReplaceRegexTest, MediumReplaceRegex) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::replace_re(strings_view, *prog); @@ -435,7 +435,7 @@ TEST_F(StringsReplaceRegexTest, MediumReplaceRegex) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -455,7 +455,7 @@ TEST_F(StringsReplaceRegexTest, LargeReplaceRegex) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::replace_re(strings_view, *prog); @@ -464,7 +464,7 @@ TEST_F(StringsReplaceRegexTest, LargeReplaceRegex) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } diff --git a/cpp/tests/strings/replace_tests.cpp b/cpp/tests/strings/replace_tests.cpp index 8abbfa3af1d3..c80bfc5373a7 100644 --- a/cpp/tests/strings/replace_tests.cpp +++ b/cpp/tests/strings/replace_tests.cpp @@ -32,7 +32,7 @@ struct StringsReplaceTest : public cudf::test::BaseFixture { return { h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })}; + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })}; } std::unique_ptr build_large(cudf::column_view const& first, @@ -295,7 +295,7 @@ TEST_F(StringsReplaceTest, ReplaceSlice) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); { @@ -305,7 +305,7 @@ TEST_F(StringsReplaceTest, ReplaceSlice) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } { @@ -315,7 +315,7 @@ TEST_F(StringsReplaceTest, ReplaceSlice) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } { @@ -325,7 +325,7 @@ TEST_F(StringsReplaceTest, ReplaceSlice) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } } @@ -362,7 +362,7 @@ TEST_F(StringsReplaceTest, ReplaceMulti) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -382,7 +382,7 @@ TEST_F(StringsReplaceTest, ReplaceMulti) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } } diff --git a/cpp/tests/strings/split_tests.cpp b/cpp/tests/strings/split_tests.cpp index ce9fd7a8b10e..0335e47462ce 100644 --- a/cpp/tests/strings/split_tests.cpp +++ b/cpp/tests/strings/split_tests.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include #include @@ -31,19 +31,19 @@ TEST_F(StringsSplitTest, Split) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::strings_column_view strings_view(strings); std::vector h_expected1{"Héllo", nullptr, "are", "tést", "", "no-delimiter"}; cudf::test::strings_column_wrapper expected1( h_expected1.begin(), h_expected1.end(), - thrust::make_transform_iterator(h_expected1.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected1.begin(), [](auto str) { return str != nullptr; })); std::vector h_expected2{"thesé", nullptr, "some", "String", nullptr, nullptr}; cudf::test::strings_column_wrapper expected2( h_expected2.begin(), h_expected2.end(), - thrust::make_transform_iterator(h_expected2.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected2.begin(), [](auto str) { return str != nullptr; })); std::vector> expected_columns; expected_columns.push_back(expected1.release()); expected_columns.push_back(expected2.release()); @@ -121,7 +121,7 @@ TEST_F(StringsSplitTest, RSplit) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::strings_column_view strings_view(strings); std::vector h_expected1{ @@ -129,19 +129,19 @@ TEST_F(StringsSplitTest, RSplit) cudf::test::strings_column_wrapper expected1( h_expected1.begin(), h_expected1.end(), - thrust::make_transform_iterator(h_expected1.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected1.begin(), [](auto str) { return str != nullptr; })); std::vector h_expected2{ nullptr, nullptr, "bc", "", "ab", "cd", nullptr, nullptr, nullptr}; cudf::test::strings_column_wrapper expected2( h_expected2.begin(), h_expected2.end(), - thrust::make_transform_iterator(h_expected2.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected2.begin(), [](auto str) { return str != nullptr; })); std::vector h_expected3{ nullptr, nullptr, "déf", "bc", "cd", "", nullptr, nullptr, nullptr}; cudf::test::strings_column_wrapper expected3( h_expected3.begin(), h_expected3.end(), - thrust::make_transform_iterator(h_expected3.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected3.begin(), [](auto str) { return str != nullptr; })); std::vector> expected_columns; expected_columns.push_back(expected1.release()); expected_columns.push_back(expected2.release()); @@ -178,24 +178,24 @@ TEST_F(StringsSplitTest, RSplitWhitespace) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::strings_column_view strings_view(strings); std::vector h_expected1{"héllo", nullptr, "a_bc_déf", nullptr, "a", "a"}; cudf::test::strings_column_wrapper expected1( h_expected1.begin(), h_expected1.end(), - thrust::make_transform_iterator(h_expected1.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected1.begin(), [](auto str) { return str != nullptr; })); std::vector h_expected2{nullptr, nullptr, nullptr, nullptr, "b", "bbb"}; cudf::test::strings_column_wrapper expected2( h_expected2.begin(), h_expected2.end(), - thrust::make_transform_iterator(h_expected2.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected2.begin(), [](auto str) { return str != nullptr; })); std::vector h_expected3{nullptr, nullptr, nullptr, nullptr, nullptr, "c"}; cudf::test::strings_column_wrapper expected3( h_expected3.begin(), h_expected3.end(), - thrust::make_transform_iterator(h_expected3.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected3.begin(), [](auto str) { return str != nullptr; })); std::vector> expected_columns; expected_columns.push_back(expected1.release()); expected_columns.push_back(expected2.release()); @@ -431,7 +431,7 @@ TEST_F(StringsSplitTest, SplitRegex) { std::vector h_strings{" Héllo thesé", nullptr, "are some ", "tést String", ""}; auto validity = - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); cudf::test::strings_column_wrapper input(h_strings.begin(), h_strings.end(), validity); auto sv = cudf::strings_column_view(input); @@ -478,7 +478,7 @@ TEST_F(StringsSplitTest, SplitRecordRegex) { std::vector h_strings{" Héllo thesé", nullptr, "are some ", "tést String", ""}; auto validity = - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); cudf::test::strings_column_wrapper input(h_strings.begin(), h_strings.end(), validity); auto sv = cudf::strings_column_view(input); @@ -550,7 +550,7 @@ TEST_F(StringsSplitTest, SplitRegexWithMaxSplit) { std::vector h_strings{" Héllo\tthesé", nullptr, "are\nsome ", "tést\rString", ""}; auto validity = - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); cudf::test::strings_column_wrapper input(h_strings.begin(), h_strings.end(), validity); auto sv = cudf::strings_column_view(input); { @@ -648,7 +648,7 @@ TEST_F(StringsSplitTest, RSplitRecord) std::vector h_strings{ "héllo", nullptr, "a_bc_déf", "a__bc", "_ab_cd", "ab_cd_", "", " a b ", " a bbb c"}; auto validity = - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); cudf::test::strings_column_wrapper strings(h_strings.begin(), h_strings.end(), validity); using LCW = cudf::test::lists_column_wrapper; @@ -679,7 +679,7 @@ TEST_F(StringsSplitTest, RSplitRecordWithMaxSplit) " a b ___", "___ a bbb c"}; auto validity = - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); cudf::test::strings_column_wrapper strings(h_strings.begin(), h_strings.end(), validity); using LCW = cudf::test::lists_column_wrapper; @@ -704,7 +704,7 @@ TEST_F(StringsSplitTest, RSplitRecordWhitespace) { std::vector h_strings{"héllo", nullptr, "a_bc_déf", "", " a\tb ", " a\r bbb c"}; auto validity = - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); cudf::test::strings_column_wrapper strings(h_strings.begin(), h_strings.end(), validity); using LCW = cudf::test::lists_column_wrapper; @@ -721,7 +721,7 @@ TEST_F(StringsSplitTest, RSplitRecordWhitespaceWithMaxSplit) std::vector h_strings{ " héllo Asher ", nullptr, " a_bc_déf ", "", " a\tb ", " a\r bbb c"}; auto validity = - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); cudf::test::strings_column_wrapper strings(h_strings.begin(), h_strings.end(), validity); using LCW = cudf::test::lists_column_wrapper; @@ -738,7 +738,7 @@ TEST_F(StringsSplitTest, RSplitRegexWithMaxSplit) { std::vector h_strings{" Héllo\tthesé", nullptr, "are some\n ", "tést\rString", ""}; auto validity = - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); cudf::test::strings_column_wrapper input(h_strings.begin(), h_strings.end(), validity); auto sv = cudf::strings_column_view(input); @@ -928,7 +928,7 @@ TEST_F(StringsSplitTest, Partition) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::strings_column_view strings_view(strings); auto results = cudf::strings::partition(strings_view, cudf::string_scalar("_")); EXPECT_TRUE(results->num_columns() == 3); @@ -937,17 +937,17 @@ TEST_F(StringsSplitTest, Partition) cudf::test::strings_column_wrapper expected1( exp_itr, exp_itr + h_strings.size(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); exp_itr += h_strings.size(); cudf::test::strings_column_wrapper expected2( exp_itr, exp_itr + h_strings.size(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); exp_itr += h_strings.size(); cudf::test::strings_column_wrapper expected3( exp_itr, exp_itr + h_strings.size(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> expected_columns; expected_columns.push_back(expected1.release()); expected_columns.push_back(expected2.release()); @@ -968,7 +968,7 @@ TEST_F(StringsSplitTest, PartitionWhitespace) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::strings_column_view strings_view(strings); auto results = cudf::strings::partition(strings_view); EXPECT_TRUE(results->num_columns() == 3); @@ -977,17 +977,17 @@ TEST_F(StringsSplitTest, PartitionWhitespace) cudf::test::strings_column_wrapper expected1( exp_itr, exp_itr + h_strings.size(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); exp_itr += h_strings.size(); cudf::test::strings_column_wrapper expected2( exp_itr, exp_itr + h_strings.size(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); exp_itr += h_strings.size(); cudf::test::strings_column_wrapper expected3( exp_itr, exp_itr + h_strings.size(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> expected_columns; expected_columns.push_back(expected1.release()); expected_columns.push_back(expected2.release()); @@ -1008,7 +1008,7 @@ TEST_F(StringsSplitTest, RPartition) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::strings_column_view strings_view(strings); auto results = cudf::strings::rpartition(strings_view, cudf::string_scalar("_")); EXPECT_TRUE(results->num_columns() == 3); @@ -1017,17 +1017,17 @@ TEST_F(StringsSplitTest, RPartition) cudf::test::strings_column_wrapper expected1( exp_itr, exp_itr + h_strings.size(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); exp_itr += h_strings.size(); cudf::test::strings_column_wrapper expected2( exp_itr, exp_itr + h_strings.size(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); exp_itr += h_strings.size(); cudf::test::strings_column_wrapper expected3( exp_itr, exp_itr + h_strings.size(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> expected_columns; expected_columns.push_back(expected1.release()); expected_columns.push_back(expected2.release()); @@ -1048,7 +1048,7 @@ TEST_F(StringsSplitTest, RPartitionWhitespace) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::strings_column_view strings_view(strings); auto results = cudf::strings::rpartition(strings_view); EXPECT_TRUE(results->num_columns() == 3); @@ -1057,17 +1057,17 @@ TEST_F(StringsSplitTest, RPartitionWhitespace) cudf::test::strings_column_wrapper expected1( exp_itr, exp_itr + h_strings.size(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); exp_itr += h_strings.size(); cudf::test::strings_column_wrapper expected2( exp_itr, exp_itr + h_strings.size(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); exp_itr += h_strings.size(); cudf::test::strings_column_wrapper expected3( exp_itr, exp_itr + h_strings.size(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> expected_columns; expected_columns.push_back(expected1.release()); expected_columns.push_back(expected2.release()); diff --git a/cpp/tests/strings/strip_tests.cpp b/cpp/tests/strings/strip_tests.cpp index 000ea81a5bfa..2bb20f668d7d 100644 --- a/cpp/tests/strings/strip_tests.cpp +++ b/cpp/tests/strings/strip_tests.cpp @@ -11,7 +11,7 @@ #include #include -#include +#include #include @@ -25,7 +25,7 @@ TEST_F(StringsStripTest, StripLeft) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::strip(strings_view, cudf::strings::side_type::LEFT); @@ -33,7 +33,7 @@ TEST_F(StringsStripTest, StripLeft) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -45,7 +45,7 @@ TEST_F(StringsStripTest, StripRight) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = @@ -54,7 +54,7 @@ TEST_F(StringsStripTest, StripRight) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -66,7 +66,7 @@ TEST_F(StringsStripTest, StripBoth) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = @@ -75,7 +75,7 @@ TEST_F(StringsStripTest, StripBoth) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } diff --git a/cpp/tests/strings/translate_tests.cpp b/cpp/tests/strings/translate_tests.cpp index a34b71c37815..40e709b59f38 100644 --- a/cpp/tests/strings/translate_tests.cpp +++ b/cpp/tests/strings/translate_tests.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include #include @@ -34,7 +34,7 @@ TEST_F(StringsTranslateTest, Translate) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); std::vector> translate_table{ @@ -45,7 +45,7 @@ TEST_F(StringsTranslateTest, Translate) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -65,7 +65,7 @@ TEST_F(StringsTranslateTest, FilterCharacters) { std::vector h_strings{"eee ddd", "bb cc", nullptr, "", "12309", "débd"}; auto validity = - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); cudf::test::strings_column_wrapper strings(h_strings.begin(), h_strings.end(), validity); auto strings_view = cudf::strings_column_view(strings); diff --git a/cpp/tests/strings/urls_tests.cpp b/cpp/tests/strings/urls_tests.cpp index b70caf40ad0b..796d97b19b5f 100644 --- a/cpp/tests/strings/urls_tests.cpp +++ b/cpp/tests/strings/urls_tests.cpp @@ -10,7 +10,7 @@ #include #include -#include +#include #include #include @@ -31,7 +31,7 @@ TEST_F(StringsConvertTest, UrlEncode) cudf::test::strings_column_wrapper strings( h_strings.cbegin(), h_strings.cend(), - thrust::make_transform_iterator(h_strings.cbegin(), + cuda::transform_iterator(h_strings.cbegin(), [](auto const str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); @@ -49,7 +49,7 @@ TEST_F(StringsConvertTest, UrlEncode) cudf::test::strings_column_wrapper expected( h_expected.cbegin(), h_expected.cend(), - thrust::make_transform_iterator(h_expected.cbegin(), + cuda::transform_iterator(h_expected.cbegin(), [](auto const str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -67,7 +67,7 @@ TEST_F(StringsConvertTest, UrlDecode) cudf::test::strings_column_wrapper strings( h_strings.cbegin(), h_strings.cend(), - thrust::make_transform_iterator(h_strings.cbegin(), + cuda::transform_iterator(h_strings.cbegin(), [](auto const str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); @@ -84,7 +84,7 @@ TEST_F(StringsConvertTest, UrlDecode) cudf::test::strings_column_wrapper expected( h_expected.cbegin(), h_expected.cend(), - thrust::make_transform_iterator(h_expected.cbegin(), + cuda::transform_iterator(h_expected.cbegin(), [](auto const str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -101,7 +101,7 @@ TEST_F(StringsConvertTest, UrlDecodeNop) cudf::test::strings_column_wrapper strings( h_strings.cbegin(), h_strings.cend(), - thrust::make_transform_iterator(h_strings.cbegin(), + cuda::transform_iterator(h_strings.cbegin(), [](auto const str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); @@ -123,7 +123,7 @@ TEST_F(StringsConvertTest, UrlDecodeSliced) cudf::test::strings_column_wrapper strings( h_strings.cbegin(), h_strings.cend(), - thrust::make_transform_iterator(h_strings.cbegin(), + cuda::transform_iterator(h_strings.cbegin(), [](auto const str) { return str != nullptr; })); std::vector h_expected{"www.nvidia.com/rapids/?p=é%", @@ -137,7 +137,7 @@ TEST_F(StringsConvertTest, UrlDecodeSliced) cudf::test::strings_column_wrapper expected( h_expected.cbegin(), h_expected.cend(), - thrust::make_transform_iterator(h_expected.cbegin(), + cuda::transform_iterator(h_expected.cbegin(), [](auto const str) { return str != nullptr; })); std::vector slice_indices{0, 3, 3, 6, 6, 8}; @@ -197,7 +197,7 @@ TEST_F(StringsConvertTest, UrlDecodeLargeStrings) cudf::test::strings_column_wrapper strings( h_strings.cbegin(), h_strings.cend(), - thrust::make_transform_iterator(h_strings.cbegin(), + cuda::transform_iterator(h_strings.cbegin(), [](auto const str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); @@ -207,7 +207,7 @@ TEST_F(StringsConvertTest, UrlDecodeLargeStrings) cudf::test::strings_column_wrapper expected( h_expected.cbegin(), h_expected.cend(), - thrust::make_transform_iterator(h_expected.cbegin(), + cuda::transform_iterator(h_expected.cbegin(), [](auto const str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); diff --git a/cpp/tests/text/ngrams_tests.cpp b/cpp/tests/text/ngrams_tests.cpp index 9fec3e8c29d7..3babfc9b2114 100644 --- a/cpp/tests/text/ngrams_tests.cpp +++ b/cpp/tests/text/ngrams_tests.cpp @@ -15,7 +15,7 @@ #include -#include +#include struct TextGenerateNgramsTest : public cudf::test::BaseFixture {}; diff --git a/cpp/tests/text/ngrams_tokenize_tests.cpp b/cpp/tests/text/ngrams_tokenize_tests.cpp index 27d1288ce25a..1a0eed3f6440 100644 --- a/cpp/tests/text/ngrams_tokenize_tests.cpp +++ b/cpp/tests/text/ngrams_tokenize_tests.cpp @@ -13,7 +13,7 @@ #include -#include +#include #include @@ -30,7 +30,7 @@ TEST_F(TextNgramsTokenizeTest, Tokenize) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::strings_column_view strings_view(strings); diff --git a/cpp/tests/text/normalize_tests.cpp b/cpp/tests/text/normalize_tests.cpp index 050f7e83eafe..25842ad3224d 100644 --- a/cpp/tests/text/normalize_tests.cpp +++ b/cpp/tests/text/normalize_tests.cpp @@ -13,7 +13,7 @@ #include -#include +#include #include @@ -32,7 +32,7 @@ TEST_F(TextNormalizeTest, NormalizeSpaces) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::strings_column_view strings_view(strings); @@ -47,7 +47,7 @@ TEST_F(TextNormalizeTest, NormalizeSpaces) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); auto const results = nvtext::normalize_spaces(strings_view); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); diff --git a/cpp/tests/text/replace_tests.cpp b/cpp/tests/text/replace_tests.cpp index 1c5952e62570..6ad2933dd239 100644 --- a/cpp/tests/text/replace_tests.cpp +++ b/cpp/tests/text/replace_tests.cpp @@ -13,7 +13,7 @@ #include -#include +#include #include @@ -30,7 +30,7 @@ TEST_F(TextReplaceTest, ReplaceTokens) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper targets({"is", "the"}); cudf::test::strings_column_wrapper repls({"___", ""}); std::vector h_expected{" fox jumped over dog", @@ -42,7 +42,7 @@ TEST_F(TextReplaceTest, ReplaceTokens) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); auto results = nvtext::replace_tokens(cudf::strings_column_view(strings), cudf::strings_column_view(targets), diff --git a/cpp/tests/text/stemmer_tests.cpp b/cpp/tests/text/stemmer_tests.cpp index 184754656862..2deb81b6e9df 100644 --- a/cpp/tests/text/stemmer_tests.cpp +++ b/cpp/tests/text/stemmer_tests.cpp @@ -12,7 +12,7 @@ #include -#include +#include #include @@ -35,7 +35,7 @@ TEST_F(TextStemmerTest, PorterStemmer) "private", "orrery"}; auto validity = - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); cudf::test::strings_column_wrapper strings(h_strings.begin(), h_strings.end(), validity); cudf::test::fixed_width_column_wrapper expected( @@ -61,7 +61,7 @@ TEST_F(TextStemmerTest, IsLetterIndex) "private", "orrery"}; auto validity = - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); cudf::test::strings_column_wrapper strings(h_strings.begin(), h_strings.end(), validity); cudf::strings_column_view sv(strings); @@ -120,7 +120,7 @@ TEST_F(TextStemmerTest, IsLetterIndices) "private", "orrery"}; auto validity = - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; }); cudf::test::strings_column_wrapper strings(h_strings.begin(), h_strings.end(), validity); cudf::test::fixed_width_column_wrapper indices( {0, 1, 2, 3, 4, 5, 4, 3, 2, 1, -1, -2, -3, -4}); diff --git a/cpp/tests/text/tokenize_tests.cpp b/cpp/tests/text/tokenize_tests.cpp index 5dc7ec4f3162..05614de2053f 100644 --- a/cpp/tests/text/tokenize_tests.cpp +++ b/cpp/tests/text/tokenize_tests.cpp @@ -14,7 +14,7 @@ #include -#include +#include #include @@ -31,7 +31,7 @@ TEST_F(TextTokenizeTest, Tokenize) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::strings_column_view strings_view(strings); @@ -63,7 +63,7 @@ TEST_F(TextTokenizeTest, TokenizeMulti) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); cudf::strings_column_view strings_view(strings); cudf::test::strings_column_wrapper delimiters{"the ", "over "}; diff --git a/cpp/tests/utilities/column_utilities.cu b/cpp/tests/utilities/column_utilities.cu index a3a86d2b119d..8b0e21a8048e 100644 --- a/cpp/tests/utilities/column_utilities.cu +++ b/cpp/tests/utilities/column_utilities.cu @@ -34,7 +34,6 @@ #include #include #include -#include #include #include #include @@ -593,11 +592,11 @@ struct column_comparator_impl { // left side size_type lhs_shift = cudf::detail::get_value( lhs_l.offsets(), lhs_l.offset(), cudf::test::get_default_stream()); - auto lhs_offsets = thrust::make_transform_iterator( + auto lhs_offsets = cuda::transform_iterator( lhs_l.offsets().begin() + lhs_l.offset(), cuda::proclaim_return_type( [lhs_shift] __device__(size_type offset) { return offset - lhs_shift; })); - auto lhs_valids = thrust::make_transform_iterator( + auto lhs_valids = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type( [mask = lhs_l.null_mask(), offset = lhs_l.offset()] __device__(size_type index) { @@ -607,11 +606,11 @@ struct column_comparator_impl { // right side size_type rhs_shift = cudf::detail::get_value( rhs_l.offsets(), rhs_l.offset(), cudf::test::get_default_stream()); - auto rhs_offsets = thrust::make_transform_iterator( + auto rhs_offsets = cuda::transform_iterator( rhs_l.offsets().begin() + rhs_l.offset(), cuda::proclaim_return_type( [rhs_shift] __device__(size_type offset) { return offset - rhs_shift; })); - auto rhs_valids = thrust::make_transform_iterator( + auto rhs_valids = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type( [mask = rhs_l.null_mask(), offset = rhs_l.offset()] __device__(size_type index) { @@ -939,7 +938,7 @@ std::pair, std::vector> to_host(column_view auto host_rep_types = cudf::detail::make_host_vector(col_span, cudf::get_default_stream()); auto to_fp = [&](Rep val) { return T{scaled_integer{val, scale_type{c.type().scale()}}}; }; - auto begin = thrust::make_transform_iterator(std::cbegin(host_rep_types), to_fp); + auto begin = cuda::transform_iterator(std::cbegin(host_rep_types), to_fp); auto const host_fixed_points = thrust::host_vector(begin, begin + c.size()); return {std::move(host_fixed_points), bitmask_to_host(c)}; diff --git a/cpp/tests/utilities_tests/batched_memcpy_tests.cu b/cpp/tests/utilities_tests/batched_memcpy_tests.cu index 22c6360b1d3a..492dbdd3d437 100644 --- a/cpp/tests/utilities_tests/batched_memcpy_tests.cu +++ b/cpp/tests/utilities_tests/batched_memcpy_tests.cu @@ -17,7 +17,6 @@ #include #include -#include #include #include diff --git a/cpp/tests/utilities_tests/batched_memset_tests.cu b/cpp/tests/utilities_tests/batched_memset_tests.cu index 8a345a27e191..0e2b6d8e5543 100644 --- a/cpp/tests/utilities_tests/batched_memset_tests.cu +++ b/cpp/tests/utilities_tests/batched_memset_tests.cu @@ -17,7 +17,6 @@ #include #include -#include #include diff --git a/cpp/tests/utilities_tests/column_debug_tests.cpp b/cpp/tests/utilities_tests/column_debug_tests.cpp index 866744e4263d..4b169ec908d5 100644 --- a/cpp/tests/utilities_tests/column_debug_tests.cpp +++ b/cpp/tests/utilities_tests/column_debug_tests.cpp @@ -8,7 +8,7 @@ #include #include -#include +#include #include @@ -29,7 +29,7 @@ TYPED_TEST(ColumnDebugTestIntegral, PrintColumnNumeric) std::stringstream tmp; auto string_iter = - thrust::make_transform_iterator(std::begin(std_col), [](auto e) { return std::to_string(e); }); + cuda::transform_iterator(std::begin(std_col), [](auto e) { return std::to_string(e); }); std::copy(string_iter, string_iter + std_col.size() - 1, @@ -104,7 +104,7 @@ TEST_F(ColumnDebugStringsTest, StringsToString) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); std::ostringstream tmp; tmp << h_strings[0] << delimiter << h_strings[1] << delimiter << "NULL" << delimiter diff --git a/cpp/tests/utilities_tests/column_utilities_tests.cpp b/cpp/tests/utilities_tests/column_utilities_tests.cpp index 90eda3f79da6..d270f33ae16c 100644 --- a/cpp/tests/utilities_tests/column_utilities_tests.cpp +++ b/cpp/tests/utilities_tests/column_utilities_tests.cpp @@ -15,7 +15,6 @@ #include #include -#include template struct ColumnUtilitiesTest : public cudf::test::BaseFixture { @@ -149,7 +148,7 @@ TEST_F(ColumnUtilitiesStringsTest, StringsToHost) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto host_data = cudf::test::to_host(strings); auto result_itr = host_data.first.begin(); for (auto itr = h_strings.begin(); itr != h_strings.end(); ++itr, ++result_itr) { @@ -163,7 +162,7 @@ TEST_F(ColumnUtilitiesStringsTest, StringsToHostAllNulls) cudf::test::strings_column_wrapper strings( h_strings.begin(), h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); auto host_data = cudf::test::to_host(strings); auto results = host_data.first; EXPECT_EQ(std::size_t{3}, host_data.first.size()); diff --git a/java/src/main/native/src/aggregation128_utils.cu b/java/src/main/native/src/aggregation128_utils.cu index 252365f5557a..f668e4709316 100644 --- a/java/src/main/native/src/aggregation128_utils.cu +++ b/java/src/main/native/src/aggregation128_utils.cu @@ -12,7 +12,6 @@ #include #include -#include #include #include @@ -84,7 +83,7 @@ std::unique_ptr extract_chunk32(cudf::column_view const& in_col, auto const in_begin = in_col.begin(); // Build an iterator for every fourth 32-bit value, i.e.: one "chunk" of a __int128_t value - thrust::transform_iterator transform_iter{ + cuda::transform_iterator transform_iter{ cuda::counting_iterator{cudf::size_type{0}}, cuda::proclaim_return_type([] __device__(auto i) { return i * 4; })}; cuda::permutation_iterator stride_iter{in_begin + chunk_idx, transform_iter}; From 7f33dd57f70e744d59f4a394679e034f2cbf8076 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Fri, 10 Apr 2026 13:34:17 -0700 Subject: [PATCH 03/27] Fix styles --- cpp/include/cudf/detail/indexalator.cuh | 2 +- cpp/include/cudf/detail/iterator.cuh | 4 +- .../cudf/detail/row_operator/hashing.cuh | 2 +- .../utilities/transform_unary_functions.cuh | 4 +- cpp/include/cudf/strings/detail/scatter.cuh | 2 +- .../cudf/strings/detail/strings_children.cuh | 25 +-- .../detail/strings_column_factories.cuh | 2 +- cpp/include/cudf_test/column_utilities.hpp | 4 +- cpp/include/cudf_test/column_wrapper.hpp | 20 +- cpp/include/cudf_test/print_utilities.cuh | 2 +- cpp/src/column/column_view.cpp | 2 +- cpp/src/copying/segmented_shift.cu | 4 +- cpp/src/groupby/sort/group_count.cu | 5 +- cpp/src/groupby/sort/group_nth_element.cu | 5 +- cpp/src/groupby/sort/group_scan_util.cuh | 2 +- cpp/src/io/orc/reader_impl_chunking.cu | 10 +- cpp/src/io/orc/writer_impl.cu | 2 +- .../experimental/hybrid_scan_chunking.cu | 4 +- .../parquet/experimental/page_index_filter.cu | 14 +- cpp/src/lists/combine/concatenate_rows.cu | 12 +- cpp/src/lists/copying/scatter_helper.cu | 8 +- cpp/src/lists/dremel.cu | 36 ++-- cpp/src/partitioning/round_robin.cu | 12 +- cpp/src/reductions/compound.cuh | 2 +- cpp/src/reductions/minmax.cu | 9 +- cpp/src/reductions/nth_element.cu | 7 +- cpp/src/reductions/segmented/compound.cuh | 4 +- cpp/src/strings/replace/multi.cu | 8 +- cpp/src/strings/strings_column_factories.cu | 2 +- cpp/src/text/deduplicate.cu | 6 +- cpp/src/utilities/linked_column.cpp | 2 +- cpp/tests/copying/copy_range_tests.cpp | 12 +- cpp/tests/copying/utility_tests.cpp | 8 +- cpp/tests/dictionary/remove_keys_test.cpp | 2 +- .../partitioning/hash_partition_test.cpp | 3 +- .../rolling/grouped_rolling_range_test.cpp | 6 +- .../rolling/range_rolling_window_test.cpp | 4 +- cpp/tests/search/search_test.cpp | 188 ++++++------------ cpp/tests/streams/strings/attributes_test.cpp | 16 +- cpp/tests/strings/array_tests.cpp | 6 +- cpp/tests/strings/attrs_tests.cpp | 14 +- cpp/tests/strings/booleans_tests.cpp | 26 +-- cpp/tests/strings/case_tests.cpp | 20 +- cpp/tests/strings/chars_types_tests.cpp | 44 ++-- .../strings/combine/concatenate_tests.cpp | 2 +- .../strings/combine/join_strings_tests.cpp | 8 +- cpp/tests/strings/contains_tests.cpp | 12 +- cpp/tests/strings/datetime_tests.cpp | 14 +- cpp/tests/strings/durations_tests.cpp | 26 +-- cpp/tests/strings/find_multiple_tests.cpp | 6 +- cpp/tests/strings/floats_tests.cpp | 26 +-- cpp/tests/strings/integers_tests.cpp | 28 +-- cpp/tests/strings/ipv4_tests.cpp | 20 +- cpp/tests/strings/pad_tests.cpp | 32 +-- cpp/tests/strings/replace_regex_tests.cpp | 12 +- cpp/tests/strings/replace_tests.cpp | 13 +- cpp/tests/strings/strip_tests.cpp | 20 +- cpp/tests/strings/translate_tests.cpp | 8 +- cpp/tests/strings/urls_tests.cpp | 29 +-- cpp/tests/text/ngrams_tests.cpp | 2 +- cpp/tests/text/ngrams_tokenize_tests.cpp | 8 +- cpp/tests/text/normalize_tests.cpp | 8 +- cpp/tests/text/replace_tests.cpp | 8 +- cpp/tests/text/stemmer_tests.cpp | 2 +- cpp/tests/text/tokenize_tests.cpp | 14 +- .../utilities_tests/column_debug_tests.cpp | 8 +- .../column_utilities_tests.cpp | 12 +- 67 files changed, 400 insertions(+), 490 deletions(-) diff --git a/cpp/include/cudf/detail/indexalator.cuh b/cpp/include/cudf/detail/indexalator.cuh index 060a530be8be..3fe49a4ab822 100644 --- a/cpp/include/cudf/detail/indexalator.cuh +++ b/cpp/include/cudf/detail/indexalator.cuh @@ -344,7 +344,7 @@ struct indexalator_factory { static auto make_input_optional_iterator(scalar const& input, rmm::cuda_stream_view stream) { return cuda::transform_iterator(cuda::make_constant_iterator(0), - scalar_optional_index_accessor{input, stream}); + scalar_optional_index_accessor{input, stream}); } }; diff --git a/cpp/include/cudf/detail/iterator.cuh b/cpp/include/cudf/detail/iterator.cuh index 5ab9985ad1dc..f39ddbb1c68a 100644 --- a/cpp/include/cudf/detail/iterator.cuh +++ b/cpp/include/cudf/detail/iterator.cuh @@ -381,7 +381,7 @@ auto inline make_scalar_iterator(scalar const& scalar_value) CUDF_EXPECTS(data_type(type_to_id()) == scalar_value.type(), "the data type mismatch"); CUDF_EXPECTS(scalar_value.is_valid(), "the scalar value must be valid"); return cuda::transform_iterator(cuda::make_constant_iterator(0), - scalar_value_accessor{scalar_value}); + scalar_value_accessor{scalar_value}); } /** @@ -608,7 +608,7 @@ auto inline make_pair_iterator(scalar const& scalar_value) CUDF_EXPECTS(type_id_matches_device_storage_type(scalar_value.type().id()), "the data type mismatch"); return cuda::transform_iterator(cuda::make_constant_iterator(0), - scalar_pair_accessor{scalar_value}); + scalar_pair_accessor{scalar_value}); } /** diff --git a/cpp/include/cudf/detail/row_operator/hashing.cuh b/cpp/include/cudf/detail/row_operator/hashing.cuh index 0c948c0f0033..19612737d0e2 100644 --- a/cpp/include/cudf/detail/row_operator/hashing.cuh +++ b/cpp/include/cudf/detail/row_operator/hashing.cuh @@ -22,9 +22,9 @@ #include #include +#include #include #include -#include #include diff --git a/cpp/include/cudf/detail/utilities/transform_unary_functions.cuh b/cpp/include/cudf/detail/utilities/transform_unary_functions.cuh index c2b015e914f3..3a8a6c605049 100644 --- a/cpp/include/cudf/detail/utilities/transform_unary_functions.cuh +++ b/cpp/include/cudf/detail/utilities/transform_unary_functions.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -15,8 +15,8 @@ #pragma once -#include #include +#include namespace cudf { /** diff --git a/cpp/include/cudf/strings/detail/scatter.cuh b/cpp/include/cudf/strings/detail/scatter.cuh index 4b3eb3969ae4..2a040abdf582 100644 --- a/cpp/include/cudf/strings/detail/scatter.cuh +++ b/cpp/include/cudf/strings/detail/scatter.cuh @@ -16,8 +16,8 @@ #include #include -#include #include +#include #include namespace cudf { diff --git a/cpp/include/cudf/strings/detail/strings_children.cuh b/cpp/include/cudf/strings/detail/strings_children.cuh index a2e60237c4bf..f47131d1bf79 100644 --- a/cpp/include/cudf/strings/detail/strings_children.cuh +++ b/cpp/include/cudf/strings/detail/strings_children.cuh @@ -70,18 +70,19 @@ rmm::device_uvector make_chars_buffer(column_view const& offsets, auto chars_data = rmm::device_uvector(chars_size, stream, mr); auto const d_offsets = cudf::detail::offsetalator_factory::make_input_iterator(offsets); - auto const src_ptrs = cuda::transform_iterator( - cuda::counting_iterator{0}, - cuda::proclaim_return_type([begin] __device__(uint32_t idx) { - // Due to a bug in cub (https://github.com/NVIDIA/cccl/issues/586), - // we have to use `const_cast` to remove `const` qualifier from the source pointer. - // This should be fine as long as we only read but not write anything to the source. - return reinterpret_cast(const_cast(begin[idx].first)); - })); - auto const src_sizes = cuda::transform_iterator( - cuda::counting_iterator{0}, - cuda::proclaim_return_type( - [begin] __device__(uint32_t idx) { return begin[idx].second; })); + auto const src_ptrs = + cuda::transform_iterator(cuda::counting_iterator{0}, + cuda::proclaim_return_type([begin] __device__(uint32_t idx) { + // Due to a bug in cub (https://github.com/NVIDIA/cccl/issues/586), + // we have to use `const_cast` to remove `const` qualifier from the + // source pointer. This should be fine as long as we only read but + // not write anything to the source. + return reinterpret_cast(const_cast(begin[idx].first)); + })); + auto const src_sizes = + cuda::transform_iterator(cuda::counting_iterator{0}, + cuda::proclaim_return_type( + [begin] __device__(uint32_t idx) { return begin[idx].second; })); auto const dst_ptrs = cuda::transform_iterator( cuda::counting_iterator{0}, cuda::proclaim_return_type([offsets = d_offsets, output = chars_data.data()] __device__( diff --git a/cpp/include/cudf/strings/detail/strings_column_factories.cuh b/cpp/include/cudf/strings/detail/strings_column_factories.cuh index c7b968874990..2d1e1c392278 100644 --- a/cpp/include/cudf/strings/detail/strings_column_factories.cuh +++ b/cpp/include/cudf/strings/detail/strings_column_factories.cuh @@ -16,9 +16,9 @@ #include #include +#include #include #include -#include namespace cudf { namespace strings { diff --git a/cpp/include/cudf_test/column_utilities.hpp b/cpp/include/cudf_test/column_utilities.hpp index 659e83236793..57c3064664bd 100644 --- a/cpp/include/cudf_test/column_utilities.hpp +++ b/cpp/include/cudf_test/column_utilities.hpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -15,8 +15,8 @@ #include #include -#include #include +#include namespace CUDF_EXPORT cudf { namespace test { diff --git a/cpp/include/cudf_test/column_wrapper.hpp b/cpp/include/cudf_test/column_wrapper.hpp index f0d8c219149d..ca43950df646 100644 --- a/cpp/include/cudf_test/column_wrapper.hpp +++ b/cpp/include/cudf_test/column_wrapper.hpp @@ -516,12 +516,10 @@ class fixed_width_column_wrapper : public detail::column_wrapper { template fixed_width_column_wrapper(std::initializer_list> elements) { - auto begin = - cuda::transform_iterator(elements.begin(), [](auto const& e) { return e.first; }); - auto end = begin + elements.size(); - auto v = - cuda::transform_iterator(elements.begin(), [](auto const& e) { return e.second; }); - wrapped = fixed_width_column_wrapper(begin, end, v).release(); + auto begin = cuda::transform_iterator(elements.begin(), [](auto const& e) { return e.first; }); + auto end = begin + elements.size(); + auto v = cuda::transform_iterator(elements.begin(), [](auto const& e) { return e.second; }); + wrapped = fixed_width_column_wrapper(begin, end, v).release(); } }; @@ -904,12 +902,10 @@ class strings_column_wrapper : public detail::column_wrapper { */ strings_column_wrapper(std::initializer_list> strings) { - auto begin = - cuda::transform_iterator(strings.begin(), [](auto const& s) { return s.first; }); - auto end = begin + strings.size(); - auto v = - cuda::transform_iterator(strings.begin(), [](auto const& s) { return s.second; }); - wrapped = strings_column_wrapper(begin, end, v).release(); + auto begin = cuda::transform_iterator(strings.begin(), [](auto const& s) { return s.first; }); + auto end = begin + strings.size(); + auto v = cuda::transform_iterator(strings.begin(), [](auto const& s) { return s.second; }); + wrapped = strings_column_wrapper(begin, end, v).release(); } }; diff --git a/cpp/include/cudf_test/print_utilities.cuh b/cpp/include/cudf_test/print_utilities.cuh index c75873aa0d39..999223303ef2 100644 --- a/cpp/include/cudf_test/print_utilities.cuh +++ b/cpp/include/cudf_test/print_utilities.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2022-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/column/column_view.cpp b/cpp/src/column/column_view.cpp index 8696e5fb1a5c..8d0be1cf9c10 100644 --- a/cpp/src/column/column_view.cpp +++ b/cpp/src/column/column_view.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/copying/segmented_shift.cu b/cpp/src/copying/segmented_shift.cu index d666c55a1ad0..c4612793ac74 100644 --- a/cpp/src/copying/segmented_shift.cu +++ b/cpp/src/copying/segmented_shift.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -15,9 +15,9 @@ #include +#include #include #include -#include namespace cudf { namespace detail { diff --git a/cpp/src/groupby/sort/group_count.cu b/cpp/src/groupby/sort/group_count.cu index d11e4d6baf8c..5453871d58bc 100644 --- a/cpp/src/groupby/sort/group_count.cu +++ b/cpp/src/groupby/sort/group_count.cu @@ -43,9 +43,8 @@ std::unique_ptr group_count_valid(column_view const& values, // so we need to transform it to cast it to an integer type auto bitmask_iterator = cuda::transform_iterator(cudf::detail::make_validity_iterator(*values_view), - cuda::proclaim_return_type([] __device__(auto b) { - return static_cast(b); - })); + cuda::proclaim_return_type( + [] __device__(auto b) { return static_cast(b); })); cudf::detail::reduce_by_key_async(group_labels.begin(), group_labels.end(), diff --git a/cpp/src/groupby/sort/group_nth_element.cu b/cpp/src/groupby/sort/group_nth_element.cu index 13f2f8fc3668..208e5fecfb72 100644 --- a/cpp/src/groupby/sort/group_nth_element.cu +++ b/cpp/src/groupby/sort/group_nth_element.cu @@ -72,9 +72,8 @@ std::unique_ptr group_nth_element(column_view const& values, auto values_view = column_device_view::create(values, stream); auto bitmask_iterator = cuda::transform_iterator(cudf::detail::make_validity_iterator(*values_view), - cuda::proclaim_return_type([] __device__(auto b) { - return static_cast(b); - })); + cuda::proclaim_return_type( + [] __device__(auto b) { return static_cast(b); })); rmm::device_uvector intra_group_index(values.size(), stream); // intra group index for valids only. thrust::exclusive_scan_by_key( diff --git a/cpp/src/groupby/sort/group_scan_util.cuh b/cpp/src/groupby/sort/group_scan_util.cuh index d32416a7d44a..49e8c15a7bc8 100644 --- a/cpp/src/groupby/sort/group_scan_util.cuh +++ b/cpp/src/groupby/sort/group_scan_util.cuh @@ -124,7 +124,7 @@ struct group_scan_functor() result->set_null_mask(cudf::detail::copy_bitmask(values, stream, mr), values.null_count()); } else { auto input = cuda::transform_iterator(values_view->begin(), - cudf::detail::cast_fn{}); + cudf::detail::cast_fn{}); do_scan(input, result_view->begin(), OpType{}); } return result; diff --git a/cpp/src/io/orc/reader_impl_chunking.cu b/cpp/src/io/orc/reader_impl_chunking.cu index 6d7951c8a49f..840bd7807a35 100644 --- a/cpp/src/io/orc/reader_impl_chunking.cu +++ b/cpp/src/io/orc/reader_impl_chunking.cu @@ -19,9 +19,9 @@ #include #include +#include #include #include -#include #include #include @@ -144,10 +144,10 @@ std::vector find_splits(host_span cumulative_sizes, [[maybe_unused]] std::size_t cur_cumulative_rows{0}; - auto const start = cuda::transform_iterator( - cumulative_sizes.begin(), - [&](auto const& size) { return size.size_bytes - cur_cumulative_size; }); - auto const end = start + cumulative_sizes.size(); + auto const start = cuda::transform_iterator(cumulative_sizes.begin(), [&](auto const& size) { + return size.size_bytes - cur_cumulative_size; + }); + auto const end = start + cumulative_sizes.size(); while (cur_count < total_count) { int64_t split_pos = static_cast(cuda::std::distance( diff --git a/cpp/src/io/orc/writer_impl.cu b/cpp/src/io/orc/writer_impl.cu index 27e5b3940d6d..2e4f9994abcd 100644 --- a/cpp/src/io/orc/writer_impl.cu +++ b/cpp/src/io/orc/writer_impl.cu @@ -1341,7 +1341,7 @@ encoded_footer_statistics finish_statistic_blobs(Footer const& footer, rmm::cuda_stream_view stream) { auto stripe_size_iter = cuda::transform_iterator(per_chunk_stats.stripe_stat_merge.begin(), - [](auto const& s) { return s.size(); }); + [](auto const& s) { return s.size(); }); auto const num_columns = footer.types.size() - 1; auto const num_stripes = footer.stripes.size(); diff --git a/cpp/src/io/parquet/experimental/hybrid_scan_chunking.cu b/cpp/src/io/parquet/experimental/hybrid_scan_chunking.cu index 633d85a6ff2f..5551413b1d4d 100644 --- a/cpp/src/io/parquet/experimental/hybrid_scan_chunking.cu +++ b/cpp/src/io/parquet/experimental/hybrid_scan_chunking.cu @@ -148,8 +148,8 @@ void hybrid_scan_reader_impl::setup_next_pass( // store off how much memory we've used so far. This includes the compressed page data and the // decompressed dictionary data. we will subtract this from the available total memory for the // subpasses - auto chunk_iter = cuda::transform_iterator(pass.chunks.d_begin(), - parquet::detail::get_chunk_compressed_size{}); + auto chunk_iter = + cuda::transform_iterator(pass.chunks.d_begin(), parquet::detail::get_chunk_compressed_size{}); pass.base_mem_size = decomp_dict_data_size + cudf::detail::reduce( diff --git a/cpp/src/io/parquet/experimental/page_index_filter.cu b/cpp/src/io/parquet/experimental/page_index_filter.cu index 4900700d8dbf..e4fd8239bf00 100644 --- a/cpp/src/io/parquet/experimental/page_index_filter.cu +++ b/cpp/src/io/parquet/experimental/page_index_filter.cu @@ -261,13 +261,13 @@ struct page_stats_caster : public stats_caster_base { })); // Iterator for output (row-level) string chars - auto dst_iter = cuda::transform_iterator( - cuda::counting_iterator{0}, - cuda::proclaim_return_type( - [chars = reinterpret_cast(row_str_chars.data()), - offsets = row_str_offsets.begin()] __device__(std::size_t index) { - return chars + offsets[index]; - })); + auto dst_iter = + cuda::transform_iterator(cuda::counting_iterator{0}, + cuda::proclaim_return_type( + [chars = reinterpret_cast(row_str_chars.data()), + offsets = row_str_offsets.begin()] __device__(std::size_t index) { + return chars + offsets[index]; + })); // Iterator for string sizes auto size_iter = cuda::transform_iterator( diff --git a/cpp/src/lists/combine/concatenate_rows.cu b/cpp/src/lists/combine/concatenate_rows.cu index e83196cfb202..949b304132d7 100644 --- a/cpp/src/lists/combine/concatenate_rows.cu +++ b/cpp/src/lists/combine/concatenate_rows.cu @@ -72,9 +72,9 @@ generate_regrouped_offsets_and_null_mask(table_device_view const& input, auto keys = cuda::transform_iterator(cuda::counting_iterator{0}, - cuda::proclaim_return_type( - [num_columns = input.num_columns()] __device__( - std::size_t i) -> size_type { return i / num_columns; })); + cuda::proclaim_return_type( + [num_columns = input.num_columns()] __device__( + std::size_t i) -> size_type { return i / num_columns; })); // generate sizes for the regrouped rows auto values = cuda::transform_iterator( @@ -153,9 +153,9 @@ rmm::device_uvector generate_null_counts(table_device_view const& inp auto keys = cuda::transform_iterator(cuda::counting_iterator{0}, - cuda::proclaim_return_type( - [num_columns = input.num_columns()] __device__( - std::size_t i) -> size_type { return i / num_columns; })); + cuda::proclaim_return_type( + [num_columns = input.num_columns()] __device__( + std::size_t i) -> size_type { return i / num_columns; })); auto null_values = cuda::transform_iterator( cuda::counting_iterator{0}, diff --git a/cpp/src/lists/copying/scatter_helper.cu b/cpp/src/lists/copying/scatter_helper.cu index a902f3d42193..8e9a6139ed50 100644 --- a/cpp/src/lists/copying/scatter_helper.cu +++ b/cpp/src/lists/copying/scatter_helper.cu @@ -399,8 +399,8 @@ struct list_child_constructor { {structs_list_offsets, structs_member})); }; - auto const iter_source_member_as_list = cuda::transform_iterator( - cuda::counting_iterator{0}, [&](auto child_idx) { + auto const iter_source_member_as_list = + cuda::transform_iterator(cuda::counting_iterator{0}, [&](auto child_idx) { return project_member_as_list_view(source_structs.child(child_idx), source_lists_column_view.size(), source_lists_column_view.offsets(), @@ -408,8 +408,8 @@ struct list_child_constructor { source_lists_column_view.null_count()); }); - auto const iter_target_member_as_list = cuda::transform_iterator( - cuda::counting_iterator{0}, [&](auto child_idx) { + auto const iter_target_member_as_list = + cuda::transform_iterator(cuda::counting_iterator{0}, [&](auto child_idx) { return project_member_as_list_view(target_structs.child(child_idx), target_lists_column_view.size(), target_lists_column_view.offsets(), diff --git a/cpp/src/lists/dremel.cu b/cpp/src/lists/dremel.cu index 42a8c4711ed9..36f62e8a5a94 100644 --- a/cpp/src/lists/dremel.cu +++ b/cpp/src/lists/dremel.cu @@ -291,23 +291,22 @@ dremel_data get_encoding(column_view h_col, // Merge empty at deepest parent level with the rep, def level vals at leaf level auto input_parent_rep_it = cuda::make_constant_iterator(level); - auto input_parent_def_it = - cuda::transform_iterator(empties_idx.begin(), - def_level_fn{d_nesting_levels + level, - d_nullability.data(), - start_at_sub_level[level], - def_at_level[level], - always_nullable}); + auto input_parent_def_it = cuda::transform_iterator(empties_idx.begin(), + def_level_fn{d_nesting_levels + level, + d_nullability.data(), + start_at_sub_level[level], + def_at_level[level], + always_nullable}); // `nesting_levels.size()` == no of list levels + leaf. Max repetition level = no of list levels auto input_child_rep_it = cuda::make_constant_iterator(nesting_levels.size() - 1); auto input_child_def_it = cuda::transform_iterator(cuda::counting_iterator{column_offsets[level + 1]}, - def_level_fn{d_nesting_levels + level + 1, - d_nullability.data(), - start_at_sub_level[level + 1], - def_at_level[level + 1], - always_nullable}); + def_level_fn{d_nesting_levels + level + 1, + d_nullability.data(), + start_at_sub_level[level + 1], + def_at_level[level + 1], + always_nullable}); // Zip the input and output value iterators so that merge operation is done only once auto input_parent_zip_it = @@ -391,13 +390,12 @@ dremel_data get_encoding(column_view h_col, auto transformed_empties = cuda::transform_iterator(empties.begin(), offset_transformer); auto input_parent_rep_it = cuda::make_constant_iterator(level); - auto input_parent_def_it = - cuda::transform_iterator(empties_idx.begin(), - def_level_fn{d_nesting_levels + level, - d_nullability.data(), - start_at_sub_level[level], - def_at_level[level], - always_nullable}); + auto input_parent_def_it = cuda::transform_iterator(empties_idx.begin(), + def_level_fn{d_nesting_levels + level, + d_nullability.data(), + start_at_sub_level[level], + def_at_level[level], + always_nullable}); // Zip the input and output value iterators so that merge operation is done only once auto input_parent_zip_it = diff --git a/cpp/src/partitioning/round_robin.cu b/cpp/src/partitioning/round_robin.cu index 7a44151d7560..9d2cff6195b3 100644 --- a/cpp/src/partitioning/round_robin.cu +++ b/cpp/src/partitioning/round_robin.cu @@ -77,12 +77,12 @@ std::pair, std::vector> degenerate auto nrows = input.num_rows(); // iterator for partition index rotated right by start_partition positions: - auto rotated_iter_begin = cuda::transform_iterator( - cuda::counting_iterator{0}, - cuda::proclaim_return_type( - [num_partitions, start_partition] __device__(auto index) { - return (index + num_partitions - start_partition) % num_partitions; - })); + auto rotated_iter_begin = + cuda::transform_iterator(cuda::counting_iterator{0}, + cuda::proclaim_return_type( + [num_partitions, start_partition] __device__(auto index) { + return (index + num_partitions - start_partition) % num_partitions; + })); if (num_partitions == nrows) { rmm::device_uvector partition_offsets(num_partitions + 1, stream); diff --git a/cpp/src/reductions/compound.cuh b/cpp/src/reductions/compound.cuh index f82c141b4ebc..0c8ae20ffbb9 100644 --- a/cpp/src/reductions/compound.cuh +++ b/cpp/src/reductions/compound.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/reductions/minmax.cu b/cpp/src/reductions/minmax.cu index 8f1d1bb1a86b..23d1b8c298da 100644 --- a/cpp/src/reductions/minmax.cu +++ b/cpp/src/reductions/minmax.cu @@ -20,10 +20,10 @@ #include +#include #include #include #include -#include #include #include @@ -150,12 +150,11 @@ struct minmax_functor { auto device_col = column_device_view::create(col, stream); // compute minimum and maximum values if (col.has_nulls()) { - auto pair_to_minmax = cuda::transform_iterator( - make_pair_iterator(*device_col), create_minmax_with_nulls{}); + auto pair_to_minmax = cuda::transform_iterator(make_pair_iterator(*device_col), + create_minmax_with_nulls{}); return reduce_device(pair_to_minmax, col.size(), minmax_binary_op{}, stream); } else { - auto col_to_minmax = - cuda::transform_iterator(device_col->begin(), create_minmax{}); + auto col_to_minmax = cuda::transform_iterator(device_col->begin(), create_minmax{}); return reduce_device(col_to_minmax, col.size(), minmax_binary_op{}, stream); } } diff --git a/cpp/src/reductions/nth_element.cu b/cpp/src/reductions/nth_element.cu index dfce98e91344..0de19a036f72 100644 --- a/cpp/src/reductions/nth_element.cu +++ b/cpp/src/reductions/nth_element.cu @@ -15,8 +15,8 @@ #include #include -#include #include +#include #include namespace cudf::reduction::detail { @@ -36,9 +36,8 @@ std::unique_ptr nth_element(column_view const& col, auto dcol = column_device_view::create(col, stream); auto bitmask_iterator = cuda::transform_iterator(cudf::detail::make_validity_iterator(*dcol), - cuda::proclaim_return_type([] __device__(auto b) { - return static_cast(b); - })); + cuda::proclaim_return_type( + [] __device__(auto b) { return static_cast(b); })); rmm::device_uvector null_skipped_index(col.size(), stream); // null skipped index for valids only. thrust::inclusive_scan(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), diff --git a/cpp/src/reductions/segmented/compound.cuh b/cpp/src/reductions/segmented/compound.cuh index 8cb21ea290cb..099489806980 100644 --- a/cpp/src/reductions/segmented/compound.cuh +++ b/cpp/src/reductions/segmented/compound.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2023-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -15,8 +15,8 @@ #include #include -#include #include +#include namespace cudf { namespace reduction { diff --git a/cpp/src/strings/replace/multi.cu b/cpp/src/strings/replace/multi.cu index 5c394e4bf9dd..14c96d99f043 100644 --- a/cpp/src/strings/replace/multi.cu +++ b/cpp/src/strings/replace/multi.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -342,9 +342,9 @@ std::unique_ptr replace_character_parallel(strings_column_view const& in auto targets_indices = rmm::device_uvector(target_count, stream); // cudf::detail::make_counting_transform_iterator hardcodes size_type - auto const copy_itr = cuda::transform_iterator(cuda::counting_iterator{0}, - pair_generator{fn, chars_bytes}); - auto const out_itr = cuda::make_zip_iterator( + auto const copy_itr = + cuda::transform_iterator(cuda::counting_iterator{0}, pair_generator{fn, chars_bytes}); + auto const out_itr = cuda::make_zip_iterator( cuda::std::make_tuple(targets_positions.begin(), targets_indices.begin())); auto const copy_end = cudf::detail::copy_if(copy_itr, copy_itr + chars_bytes, out_itr, copy_if_fn{}, stream); diff --git a/cpp/src/strings/strings_column_factories.cu b/cpp/src/strings/strings_column_factories.cu index a98e9db4534a..ceb19e385d56 100644 --- a/cpp/src/strings/strings_column_factories.cu +++ b/cpp/src/strings/strings_column_factories.cu @@ -19,8 +19,8 @@ #include #include -#include #include +#include #include #include diff --git a/cpp/src/text/deduplicate.cu b/cpp/src/text/deduplicate.cu index 1bd344097d39..fc42626c0cb9 100644 --- a/cpp/src/text/deduplicate.cu +++ b/cpp/src/text/deduplicate.cu @@ -429,11 +429,9 @@ std::unique_ptr resolve_duplicates_pair_impl( auto const chars_span1 = cudf::device_span(d_input_chars1, chars_size1); auto const chars_span2 = cudf::device_span(d_input_chars2, chars_size2); - auto const itr1 = - cuda::transform_iterator(indices1.begin(), index_to_prefix_fn{chars_span1}); + auto const itr1 = cuda::transform_iterator(indices1.begin(), index_to_prefix_fn{chars_span1}); auto const end1 = itr1 + indices1.size(); - auto const itr2 = - cuda::transform_iterator(indices2.begin(), index_to_string_fn{chars_span2}); + auto const itr2 = cuda::transform_iterator(indices2.begin(), index_to_string_fn{chars_span2}); auto const end2 = itr2 + indices2.size(); // vectorized lower-bound and upper-bound of prefix strings improves performance of the diff --git a/cpp/src/utilities/linked_column.cpp b/cpp/src/utilities/linked_column.cpp index 2409ae82cbf9..33efea477564 100644 --- a/cpp/src/utilities/linked_column.cpp +++ b/cpp/src/utilities/linked_column.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2022-2023, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/copying/copy_range_tests.cpp b/cpp/tests/copying/copy_range_tests.cpp index a95d8679d6d7..ea51d4d822f6 100644 --- a/cpp/tests/copying/copy_range_tests.cpp +++ b/cpp/tests/copying/copy_range_tests.cpp @@ -337,12 +337,12 @@ TEST_F(CopyRangeTestFixture, CopyDictionary) CUDF_TEST_EXPECT_COLUMNS_EQUAL(*decoded, expected); } - auto source_validity = cuda::transform_iterator( - cuda::counting_iterator{0}, [](auto i) { return i != 3; }); - auto target_validity = cuda::transform_iterator( - cuda::counting_iterator{0}, [](auto i) { return i != 3 && i != 9; }); - auto expected_validity = cuda::transform_iterator( - cuda::counting_iterator{0}, [](auto i) { return i != 5 && i != 9; }); + auto source_validity = cuda::transform_iterator(cuda::counting_iterator{0}, + [](auto i) { return i != 3; }); + auto target_validity = cuda::transform_iterator(cuda::counting_iterator{0}, + [](auto i) { return i != 3 && i != 9; }); + auto expected_validity = cuda::transform_iterator(cuda::counting_iterator{0}, + [](auto i) { return i != 5 && i != 9; }); { auto source = cudf::dictionary::encode(cudf::test::strings_column_wrapper( source_elements.begin(), source_elements.end(), source_validity)); diff --git a/cpp/tests/copying/utility_tests.cpp b/cpp/tests/copying/utility_tests.cpp index 06ecd4cff978..f1baa545041b 100644 --- a/cpp/tests/copying/utility_tests.cpp +++ b/cpp/tests/copying/utility_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -56,9 +56,9 @@ TEST_F(EmptyLikeStringTest, ColumnStringTest) nullptr, "absent stop words"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto got = cudf::empty_like(strings); check_empty_string_columns(got->view(), strings); diff --git a/cpp/tests/dictionary/remove_keys_test.cpp b/cpp/tests/dictionary/remove_keys_test.cpp index 3ce41403d669..07285d1df849 100644 --- a/cpp/tests/dictionary/remove_keys_test.cpp +++ b/cpp/tests/dictionary/remove_keys_test.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/partitioning/hash_partition_test.cpp b/cpp/tests/partitioning/hash_partition_test.cpp index 7a30b1fb7f52..0729d03b7a08 100644 --- a/cpp/tests/partitioning/hash_partition_test.cpp +++ b/cpp/tests/partitioning/hash_partition_test.cpp @@ -241,8 +241,7 @@ TEST_F(HashPartition, LargePartitionCountWithNulls) auto const valids = cuda::transform_iterator(iter, [](auto i) { return i % 4 != 0; }); fixed_width_column_wrapper ints(iter, iter + num_rows, valids); - auto const str_iter = - cuda::transform_iterator(iter, [](auto i) { return std::to_string(i); }); + auto const str_iter = cuda::transform_iterator(iter, [](auto i) { return std::to_string(i); }); strings_column_wrapper strings(str_iter, str_iter + num_rows, valids); auto const input = cudf::table_view({ints, strings}); diff --git a/cpp/tests/rolling/grouped_rolling_range_test.cpp b/cpp/tests/rolling/grouped_rolling_range_test.cpp index f6e30cd496c2..b9c870c4a59e 100644 --- a/cpp/tests/rolling/grouped_rolling_range_test.cpp +++ b/cpp/tests/rolling/grouped_rolling_range_test.cpp @@ -403,9 +403,9 @@ struct GroupedRollingRangeOrderByDecimalTypedTest /// For scale == 2, the rep values are: [0, 1, 2, 3, ... 11, 12, 13] [[nodiscard]] column_ptr generate_order_by_column(numeric::scale_type scale) const { - auto const begin = cuda::transform_iterator( - cuda::counting_iterator{0}, - [&](auto i) -> Rep { return (i * 10000) / base::pow10[scale + 2]; }); + auto const begin = + cuda::transform_iterator(cuda::counting_iterator{0}, + [&](auto i) -> Rep { return (i * 10000) / base::pow10[scale + 2]; }); return decimals_column{begin, begin + num_rows, numeric::scale_type{scale}}.release(); } diff --git a/cpp/tests/rolling/range_rolling_window_test.cpp b/cpp/tests/rolling/range_rolling_window_test.cpp index d9687ce1980c..4c4ffa24d01a 100644 --- a/cpp/tests/rolling/range_rolling_window_test.cpp +++ b/cpp/tests/rolling/range_rolling_window_test.cpp @@ -173,8 +173,8 @@ void verify_results_for_descending(WindowExecT exec) { auto const all_valid = cuda::make_constant_iterator(true); auto const all_invalid = cuda::make_constant_iterator(false); - auto const first_invalid = cuda::transform_iterator( - cuda::counting_iterator{0}, [](auto i) { return i != 0; }); + auto const first_invalid = cuda::transform_iterator(cuda::counting_iterator{0}, + [](auto i) { return i != 0; }); CUDF_TEST_EXPECT_COLUMNS_EQUAL( exec(cudf::make_count_aggregation(cudf::null_policy::INCLUDE)) diff --git a/cpp/tests/search/search_test.cpp b/cpp/tests/search/search_test.cpp index 9116725ea074..7dca6e69ea04 100644 --- a/cpp/tests/search/search_test.cpp +++ b/cpp/tests/search/search_test.cpp @@ -14,8 +14,8 @@ #include -#include #include +#include #include #include @@ -647,14 +647,12 @@ TEST_F(SearchTest, empty_table_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - cuda::transform_iterator(h_col_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - cuda::transform_iterator(h_val_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; @@ -676,14 +674,12 @@ TEST_F(SearchTest, empty_values_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - cuda::transform_iterator(h_col_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - cuda::transform_iterator(h_val_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{}; @@ -706,14 +702,12 @@ TEST_F(SearchTest, non_null_column__find_first_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - cuda::transform_iterator(h_col_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - cuda::transform_iterator(h_val_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{0, 0, 0, 1, 2, 3, 3, 4, 4, 5}; @@ -736,14 +730,12 @@ TEST_F(SearchTest, non_null_column__find_last_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - cuda::transform_iterator(h_col_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - cuda::transform_iterator(h_val_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{0, 0, 1, 1, 3, 3, 4, 4, 5, 5}; @@ -766,14 +758,12 @@ TEST_F(SearchTest, non_null_column_desc__find_first_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - cuda::transform_iterator(h_col_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - cuda::transform_iterator(h_val_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{5, 5, 4, 4, 2, 2, 1, 1, 0, 0}; @@ -796,14 +786,12 @@ TEST_F(SearchTest, non_null_column_desc__find_last_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - cuda::transform_iterator(h_col_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - cuda::transform_iterator(h_val_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{5, 5, 5, 4, 3, 2, 2, 1, 1, 0}; @@ -826,14 +814,12 @@ TEST_F(SearchTest, nullable_column__find_last__nulls_as_smallest_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - cuda::transform_iterator(h_col_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - cuda::transform_iterator(h_val_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{2, 2, 3, 3, 5, 5, 6, 6, 7, 7}; @@ -856,14 +842,12 @@ TEST_F(SearchTest, nullable_column__find_first__nulls_as_smallest_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - cuda::transform_iterator(h_col_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - cuda::transform_iterator(h_val_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{0, 2, 2, 3, 4, 5, 5, 6, 6, 7}; @@ -886,14 +870,12 @@ TEST_F(SearchTest, nullable_column__find_last__nulls_as_largest_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - cuda::transform_iterator(h_col_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - cuda::transform_iterator(h_val_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{0, 1, 1, 3, 3, 4, 4, 5, 5, 7}; @@ -935,14 +917,12 @@ TEST_F(SearchTest, nullable_column__find_first__nulls_as_largest_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - cuda::transform_iterator(h_col_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values( h_val_strings.begin(), h_val_strings.end(), - cuda::transform_iterator(h_val_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_strings.begin(), [](auto str) { return str != nullptr; })); fixed_width_column_wrapper expect{0, 0, 1, 2, 3, 3, 4, 4, 5, 5}; @@ -978,26 +958,22 @@ TEST_F(SearchTest, table__find_first_string) cudf::test::strings_column_wrapper column_0( h_col_0_strings.begin(), h_col_0_strings.end(), - cuda::transform_iterator(h_col_0_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper column_2( h_col_2_strings.begin(), h_col_2_strings.end(), - cuda::transform_iterator(h_col_2_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_2_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_0( h_val_0_strings.begin(), h_val_0_strings.end(), - cuda::transform_iterator(h_val_0_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_2( h_val_2_strings.begin(), h_val_2_strings.end(), - cuda::transform_iterator(h_val_2_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_2_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> columns; columns.push_back(column_0.release()); @@ -1047,26 +1023,22 @@ TEST_F(SearchTest, table__find_last_string) cudf::test::strings_column_wrapper column_0( h_col_0_strings.begin(), h_col_0_strings.end(), - cuda::transform_iterator(h_col_0_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper column_2( h_col_2_strings.begin(), h_col_2_strings.end(), - cuda::transform_iterator(h_col_2_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_2_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_0( h_val_0_strings.begin(), h_val_0_strings.end(), - cuda::transform_iterator(h_val_0_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_2( h_val_2_strings.begin(), h_val_2_strings.end(), - cuda::transform_iterator(h_val_2_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_2_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> columns; columns.push_back(column_0.release()); @@ -1116,26 +1088,22 @@ TEST_F(SearchTest, table_partial_desc__find_first_string) cudf::test::strings_column_wrapper column_0( h_col_0_strings.begin(), h_col_0_strings.end(), - cuda::transform_iterator(h_col_0_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper column_2( h_col_2_strings.begin(), h_col_2_strings.end(), - cuda::transform_iterator(h_col_2_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_2_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_0( h_val_0_strings.begin(), h_val_0_strings.end(), - cuda::transform_iterator(h_val_0_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_2( h_val_2_strings.begin(), h_val_2_strings.end(), - cuda::transform_iterator(h_val_2_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_2_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> columns; columns.push_back(column_0.release()); @@ -1186,26 +1154,22 @@ TEST_F(SearchTest, table_partial_desc__find_last_string) cudf::test::strings_column_wrapper column_0( h_col_0_strings.begin(), h_col_0_strings.end(), - cuda::transform_iterator(h_col_0_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper column_2( h_col_2_strings.begin(), h_col_2_strings.end(), - cuda::transform_iterator(h_col_2_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_2_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_0( h_val_0_strings.begin(), h_val_0_strings.end(), - cuda::transform_iterator(h_val_0_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_2( h_val_2_strings.begin(), h_val_2_strings.end(), - cuda::transform_iterator(h_val_2_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_2_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> columns; columns.push_back(column_0.release()); @@ -1253,26 +1217,22 @@ TEST_F(SearchTest, table__find_first__nulls_as_smallest_string) cudf::test::strings_column_wrapper column_0( h_col_0_strings.begin(), h_col_0_strings.end(), - cuda::transform_iterator(h_col_0_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper column_2( h_col_2_strings.begin(), h_col_2_strings.end(), - cuda::transform_iterator(h_col_2_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_2_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_0( h_val_0_strings.begin(), h_val_0_strings.end(), - cuda::transform_iterator(h_val_0_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_2( h_val_2_strings.begin(), h_val_2_strings.end(), - cuda::transform_iterator(h_val_2_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_2_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> columns; columns.push_back(column_0.release()); @@ -1320,26 +1280,22 @@ TEST_F(SearchTest, table__find_last__nulls_as_smallest_string) cudf::test::strings_column_wrapper column_0( h_col_0_strings.begin(), h_col_0_strings.end(), - cuda::transform_iterator(h_col_0_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper column_2( h_col_2_strings.begin(), h_col_2_strings.end(), - cuda::transform_iterator(h_col_2_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_2_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_0( h_val_0_strings.begin(), h_val_0_strings.end(), - cuda::transform_iterator(h_val_0_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_2( h_val_2_strings.begin(), h_val_2_strings.end(), - cuda::transform_iterator(h_val_2_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_2_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> columns; columns.push_back(column_0.release()); @@ -1387,26 +1343,22 @@ TEST_F(SearchTest, table__find_first__nulls_as_largest_string) cudf::test::strings_column_wrapper column_0( h_col_0_strings.begin(), h_col_0_strings.end(), - cuda::transform_iterator(h_col_0_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper column_2( h_col_2_strings.begin(), h_col_2_strings.end(), - cuda::transform_iterator(h_col_2_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_2_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_0( h_val_0_strings.begin(), h_val_0_strings.end(), - cuda::transform_iterator(h_val_0_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_2( h_val_2_strings.begin(), h_val_2_strings.end(), - cuda::transform_iterator(h_val_2_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_2_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> columns; columns.push_back(column_0.release()); @@ -1454,26 +1406,22 @@ TEST_F(SearchTest, table__find_last__nulls_as_largest_string) cudf::test::strings_column_wrapper column_0( h_col_0_strings.begin(), h_col_0_strings.end(), - cuda::transform_iterator(h_col_0_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper column_2( h_col_2_strings.begin(), h_col_2_strings.end(), - cuda::transform_iterator(h_col_2_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_2_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_0( h_val_0_strings.begin(), h_val_0_strings.end(), - cuda::transform_iterator(h_val_0_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_0_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper values_2( h_val_2_strings.begin(), h_val_2_strings.end(), - cuda::transform_iterator(h_val_2_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_val_2_strings.begin(), [](auto str) { return str != nullptr; })); std::vector> columns; columns.push_back(column_0.release()); @@ -1509,8 +1457,7 @@ TEST_F(SearchTest, contains_true_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - cuda::transform_iterator(h_col_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); bool expect = true; bool result = false; @@ -1528,8 +1475,7 @@ TEST_F(SearchTest, contains_false_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - cuda::transform_iterator(h_col_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); bool expect = false; bool result = false; @@ -1547,8 +1493,7 @@ TEST_F(SearchTest, contains_empty_value_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - cuda::transform_iterator(h_col_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); bool expect = false; bool result = false; @@ -1566,8 +1511,7 @@ TEST_F(SearchTest, contains_empty_column_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - cuda::transform_iterator(h_col_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); bool expect = false; bool result = false; @@ -1585,8 +1529,7 @@ TEST_F(SearchTest, contains_nullable_column_true_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - cuda::transform_iterator(h_col_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); bool result = false; bool expect = true; @@ -1604,8 +1547,7 @@ TEST_F(SearchTest, contains_nullable_column_false_string) cudf::test::strings_column_wrapper column( h_col_strings.begin(), h_col_strings.end(), - cuda::transform_iterator(h_col_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_col_strings.begin(), [](auto str) { return str != nullptr; })); bool result = false; bool expect = false; @@ -1715,14 +1657,12 @@ TEST_F(SearchTest, multi_contains_some_string_with_nulls) cudf::test::strings_column_wrapper haystack( h_haystack_strings.begin(), h_haystack_strings.end(), - cuda::transform_iterator(h_haystack_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_haystack_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper needles( h_needles_strings.begin(), h_needles_strings.end(), - cuda::transform_iterator(h_needles_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_needles_strings.begin(), [](auto str) { return str != nullptr; })); auto result = cudf::contains(haystack, needles); @@ -1739,14 +1679,12 @@ TEST_F(SearchTest, multi_contains_none_string_with_nulls) cudf::test::strings_column_wrapper haystack( h_haystack_strings.begin(), h_haystack_strings.end(), - cuda::transform_iterator(h_haystack_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_haystack_strings.begin(), [](auto str) { return str != nullptr; })); cudf::test::strings_column_wrapper needles( h_needles_strings.begin(), h_needles_strings.end(), - cuda::transform_iterator(h_needles_strings.begin(), - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_needles_strings.begin(), [](auto str) { return str != nullptr; })); auto result = cudf::contains(haystack, needles); diff --git a/cpp/tests/streams/strings/attributes_test.cpp b/cpp/tests/streams/strings/attributes_test.cpp index e58a63957f4e..1955c260073c 100644 --- a/cpp/tests/streams/strings/attributes_test.cpp +++ b/cpp/tests/streams/strings/attributes_test.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -8,9 +8,9 @@ #include #include +#include #include -#include struct StringsAttributesTest : public cudf::test::BaseFixture {}; @@ -18,9 +18,9 @@ TEST_F(StringsAttributesTest, CodePoints) { std::vector h_strings{"eee", "bb", nullptr, "", "aa", "bbb", "ééé"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::code_points(strings_view, cudf::test::get_default_stream()); @@ -41,9 +41,9 @@ TEST_F(StringsAttributesTest, CountBytes) std::vector h_strings{ "eee", "bb", nullptr, "", "aa", "ééé", "something a bit longer than 32 bytes"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::count_bytes(strings_view, cudf::test::get_default_stream()); diff --git a/cpp/tests/strings/array_tests.cpp b/cpp/tests/strings/array_tests.cpp index d3e5055c8cd6..0f9d16329f0c 100644 --- a/cpp/tests/strings/array_tests.cpp +++ b/cpp/tests/strings/array_tests.cpp @@ -60,8 +60,7 @@ TEST_P(SliceParmsTest, Slice) cudf::test::strings_column_wrapper expected( h_strings.begin() + start, h_strings.begin() + end, - cuda::transform_iterator(h_strings.begin() + start, - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin() + start, [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUIVALENT(*results, expected); } @@ -80,8 +79,7 @@ TEST_P(SliceParmsTest, SliceAllNulls) cudf::test::strings_column_wrapper expected( h_strings.begin() + start, h_strings.begin() + end, - cuda::transform_iterator(h_strings.begin() + start, - [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin() + start, [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } diff --git a/cpp/tests/strings/attrs_tests.cpp b/cpp/tests/strings/attrs_tests.cpp index 8cdd836a9cfc..63555f92fd76 100644 --- a/cpp/tests/strings/attrs_tests.cpp +++ b/cpp/tests/strings/attrs_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -21,9 +21,9 @@ TEST_F(StringsAttributesTest, CodePoints) { std::vector h_strings{"eee", "bb", nullptr, "", "aa", "bbb", "ééé"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); { @@ -55,9 +55,9 @@ TEST_F(StringsAttributesTest, StringsLengths) std::vector h_strings{ "eee", "bb", nullptr, "", "aa", "ééé", "something a bit longer than 32 bytes"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); { diff --git a/cpp/tests/strings/booleans_tests.cpp b/cpp/tests/strings/booleans_tests.cpp index 532c30437774..6a9e52cf5a15 100644 --- a/cpp/tests/strings/booleans_tests.cpp +++ b/cpp/tests/strings/booleans_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2023, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -20,9 +20,9 @@ TEST_F(StringsConvertTest, ToBooleans) { std::vector h_strings{"false", nullptr, "", "true", "True", "False"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto true_scalar = cudf::string_scalar("true"); @@ -30,9 +30,9 @@ TEST_F(StringsConvertTest, ToBooleans) std::vector h_expected{false, false, false, true, false, false}; cudf::test::fixed_width_column_wrapper expected( - h_expected.begin(), - h_expected.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_expected.begin(), h_expected.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -40,15 +40,15 @@ TEST_F(StringsConvertTest, FromBooleans) { std::vector h_strings{"true", nullptr, "false", "true", "true", "false"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); std::vector h_column{true, false, false, true, true, false}; cudf::test::fixed_width_column_wrapper column( - h_column.begin(), - h_column.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_column.begin(), h_column.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto true_scalar = cudf::string_scalar("true"); auto false_scalar = cudf::string_scalar("false"); diff --git a/cpp/tests/strings/case_tests.cpp b/cpp/tests/strings/case_tests.cpp index 201c5968151c..482ccb48c8fa 100644 --- a/cpp/tests/strings/case_tests.cpp +++ b/cpp/tests/strings/case_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -26,9 +26,9 @@ TEST_F(StringsCaseTest, ToLower) "éxamples abc", "123 456", nullptr, "are the", "tést strings", ""}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::to_lower(strings_view); @@ -48,9 +48,9 @@ TEST_F(StringsCaseTest, ToUpper) "ÉXAMPLES ABC", "123 456", nullptr, "ARE THE", "TÉST STRINGS", ""}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::to_upper(strings_view); @@ -70,9 +70,9 @@ TEST_F(StringsCaseTest, Swapcase) "éXAMPLES AbC", "123 456", nullptr, "are the", "TÉST STRINGS", ""}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::swapcase(strings_view); diff --git a/cpp/tests/strings/chars_types_tests.cpp b/cpp/tests/strings/chars_types_tests.cpp index 4bfdfeeab198..502011c33310 100644 --- a/cpp/tests/strings/chars_types_tests.cpp +++ b/cpp/tests/strings/chars_types_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -58,9 +58,9 @@ TEST_P(CharsTypes, AllTypes) auto is_parm = GetParam(); cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::all_characters_of_type(strings_view, is_parm); @@ -130,9 +130,9 @@ TEST_F(StringsCharsTest, Alphanumeric) "\t\r\n\f "}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::all_characters_of_type( @@ -155,9 +155,9 @@ TEST_F(StringsCharsTest, Alphanumeric) true, false}; cudf::test::fixed_width_column_wrapper expected( - h_expected.begin(), - h_expected.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_expected.begin(), h_expected.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -181,9 +181,9 @@ TEST_F(StringsCharsTest, AlphaNumericSpace) "\t\r\n\f "}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto types = @@ -208,9 +208,9 @@ TEST_F(StringsCharsTest, AlphaNumericSpace) true, true}; cudf::test::fixed_width_column_wrapper expected( - h_expected.begin(), - h_expected.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_expected.begin(), h_expected.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -234,9 +234,9 @@ TEST_F(StringsCharsTest, Numerics) "\t\r\n\f "}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto types = cudf::strings::string_character_types::DIGIT | @@ -262,9 +262,9 @@ TEST_F(StringsCharsTest, Numerics) false, false}; cudf::test::fixed_width_column_wrapper expected( - h_expected.begin(), - h_expected.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_expected.begin(), h_expected.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } diff --git a/cpp/tests/strings/combine/concatenate_tests.cpp b/cpp/tests/strings/combine/concatenate_tests.cpp index dfef73aa3ff2..1d2bbaed9c8b 100644 --- a/cpp/tests/strings/combine/concatenate_tests.cpp +++ b/cpp/tests/strings/combine/concatenate_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/combine/join_strings_tests.cpp b/cpp/tests/strings/combine/join_strings_tests.cpp index 475ce0dc85fd..0b1ddfe3bdca 100644 --- a/cpp/tests/strings/combine/join_strings_tests.cpp +++ b/cpp/tests/strings/combine/join_strings_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -21,9 +21,9 @@ TEST_F(JoinStringsTest, Join) { std::vector h_strings{"eee", "bb", nullptr, "zzzz", "", "aaa", "ééé"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto view1 = cudf::strings_column_view(strings); { diff --git a/cpp/tests/strings/contains_tests.cpp b/cpp/tests/strings/contains_tests.cpp index 0df9217bfa04..53e5d9f18829 100644 --- a/cpp/tests/strings/contains_tests.cpp +++ b/cpp/tests/strings/contains_tests.cpp @@ -64,9 +64,9 @@ TEST_F(StringsContainsTests, ContainsTest) ""}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); std::vector patterns{"\\d", @@ -152,9 +152,9 @@ TEST_F(StringsContainsTests, MatchesTest) std::vector h_strings{ "The quick brown @fox jumps", "ovér the", "lazy @dog", "1234", "00:0:00", nullptr, ""}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); { diff --git a/cpp/tests/strings/datetime_tests.cpp b/cpp/tests/strings/datetime_tests.cpp index d567b2e09559..03ee5015b5fa 100644 --- a/cpp/tests/strings/datetime_tests.cpp +++ b/cpp/tests/strings/datetime_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -30,9 +30,9 @@ TEST_F(StringsDatetimeTest, ToTimestamp) "1921-01-07T14:32:07Z", "1969-12-31T23:59:45Z"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); std::vector h_expected{ 131246625, 1563399277, 0, 0, 1553085296, 1582934400, -1545730073, -15}; @@ -41,9 +41,9 @@ TEST_F(StringsDatetimeTest, ToTimestamp) strings_view, cudf::data_type{cudf::type_id::TIMESTAMP_SECONDS}, "%Y-%m-%dT%H:%M:%SZ"); cudf::test::fixed_width_column_wrapper expected( - h_expected.begin(), - h_expected.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_expected.begin(), h_expected.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); results = cudf::strings::is_timestamp(strings_view, "%Y-%m-%dT%H:%M:%SZ"); diff --git a/cpp/tests/strings/durations_tests.cpp b/cpp/tests/strings/durations_tests.cpp index c83c1402875b..ee6f4316b755 100644 --- a/cpp/tests/strings/durations_tests.cpp +++ b/cpp/tests/strings/durations_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -394,16 +394,16 @@ TEST_F(StringsDurationsTest, ParseSingle) ""}; // error auto size = cudf::column_view(string_src).size(); std::array expected_v{0, 0, 1, -1, 23, -23, 59, -59, 99, -99, 0, 1, 0}; - auto it1 = cuda::transform_iterator(expected_v.data(), - [](auto i) { return cudf::duration_s{i * 3600}; }); + auto it1 = + cuda::transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_s{i * 3600}; }); cudf::test::fixed_width_column_wrapper expected_s1(it1, it1 + size); auto results = cudf::strings::to_durations(cudf::strings_column_view(string_src), cudf::data_type(cudf::type_to_id()), "%H"); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected_s1); - auto it2 = cuda::transform_iterator(expected_v.data(), - [](auto i) { return cudf::duration_s{i * 60}; }); + auto it2 = + cuda::transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_s{i * 60}; }); cudf::test::fixed_width_column_wrapper expected_s2(it2, it2 + size); results = cudf::strings::to_durations(cudf::strings_column_view(string_src), cudf::data_type(cudf::type_to_id()), @@ -419,7 +419,7 @@ TEST_F(StringsDurationsTest, ParseSingle) CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected_s3); auto it4 = cuda::transform_iterator(expected_v.data(), - [](auto i) { return cudf::duration_ms{i * 60000}; }); + [](auto i) { return cudf::duration_ms{i * 60000}; }); cudf::test::fixed_width_column_wrapper expected_ms(it4, it4 + size); results = cudf::strings::to_durations(cudf::strings_column_view(string_src), cudf::data_type(cudf::type_to_id()), @@ -465,8 +465,8 @@ TEST_F(StringsDurationsTest, ParseMultiple) "%H:%M:%S"); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected_s1); - auto it2 = cuda::transform_iterator( - expected_v.data(), [](auto i) { return cudf::duration_D{i / (24 * 3600)}; }); + auto it2 = cuda::transform_iterator(expected_v.data(), + [](auto i) { return cudf::duration_D{i / (24 * 3600)}; }); cudf::test::fixed_width_column_wrapper expected_D2(it2, it2 + size); results = cudf::strings::to_durations(cudf::strings_column_view(string_src), cudf::data_type(cudf::type_to_id()), @@ -520,7 +520,7 @@ TEST_F(StringsDurationsTest, ParseSubsecond) CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected_ns1); auto it2 = cuda::transform_iterator(expected_v.data(), - [](auto i) { return cudf::duration_ms{i / 1000000}; }); + [](auto i) { return cudf::duration_ms{i / 1000000}; }); cudf::test::fixed_width_column_wrapper expected_ms2(it2, it2 + size); results = cudf::strings::to_durations(cudf::strings_column_view(string_src), cudf::data_type(cudf::type_to_id()), @@ -574,8 +574,8 @@ TEST_F(StringsDurationsTest, ParseAMPM) "%H:%M:%S %p"); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected_s1); - auto it2 = cuda::transform_iterator( - expected_v.data(), [](auto i) { return cudf::duration_D{i / (24 * 3600)}; }); + auto it2 = cuda::transform_iterator(expected_v.data(), + [](auto i) { return cudf::duration_D{i / (24 * 3600)}; }); cudf::test::fixed_width_column_wrapper expected_D2(it2, it2 + size); results = cudf::strings::to_durations(cudf::strings_column_view(string_src), cudf::data_type(cudf::type_to_id()), @@ -631,8 +631,8 @@ TEST_F(StringsDurationsTest, ParseCompoundSpecifier) "%OI:%OM:%OS %p"); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected_s1); - auto it2 = cuda::transform_iterator(expected_v.data(), - [](auto i) { return cudf::duration_ms{i * 1000}; }); + auto it2 = + cuda::transform_iterator(expected_v.data(), [](auto i) { return cudf::duration_ms{i * 1000}; }); cudf::test::fixed_width_column_wrapper expected_s2(it2, it2 + size); results = cudf::strings::to_durations(cudf::strings_column_view(string_src), cudf::data_type(cudf::type_to_id()), diff --git a/cpp/tests/strings/find_multiple_tests.cpp b/cpp/tests/strings/find_multiple_tests.cpp index 26ea09d268d3..0abf9e675812 100644 --- a/cpp/tests/strings/find_multiple_tests.cpp +++ b/cpp/tests/strings/find_multiple_tests.cpp @@ -23,9 +23,9 @@ TEST_F(StringsFindMultipleTest, FindMultiple) { std::vector h_strings{"Héllo", "thesé", nullptr, "lease", "test strings", ""}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); std::vector h_targets{"é", "a", "e", "i", "o", "u", "es"}; diff --git a/cpp/tests/strings/floats_tests.cpp b/cpp/tests/strings/floats_tests.cpp index adc582329fb3..277b59fc8b0b 100644 --- a/cpp/tests/strings/floats_tests.cpp +++ b/cpp/tests/strings/floats_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -61,9 +61,9 @@ TEST_F(StringsConvertTest, ToFloats32) "123abc", "456e", "-1.78e+5", "-122.33644782123456789", "12e+309", "3.4028236E38", "INF", "Infinity"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); std::vector h_expected; std::for_each(h_strings.begin(), h_strings.end(), [&](char const* str) { @@ -74,9 +74,9 @@ TEST_F(StringsConvertTest, ToFloats32) auto results = cudf::strings::to_floats(strings_view, cudf::data_type{cudf::type_id::FLOAT32}); cudf::test::fixed_width_column_wrapper expected( - h_expected.begin(), - h_expected.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_expected.begin(), h_expected.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); CUDF_TEST_EXPECT_COLUMNS_EQUIVALENT(*results, expected); } @@ -95,9 +95,9 @@ TEST_F(StringsConvertTest, FromFloats32) "100.0", "654321.25", "-12761.125", "0.0", "5.0", "-4.0", "NaN", "8.395422433e+11", "-0.0"}; cudf::test::fixed_width_column_wrapper floats( - h_floats.begin(), - h_floats.end(), - cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + h_floats.begin(), h_floats.end(), cuda::transform_iterator(h_expected.begin(), [](auto str) { + return str != nullptr; + })); auto results = cudf::strings::from_floats(floats); @@ -158,9 +158,9 @@ TEST_F(StringsConvertTest, FromFloats64) "100.0", "654321.25", "-12761.125", "0.0", "5.0", "-4.0", "NaN", "8.395422232e+11", "-0.0"}; cudf::test::fixed_width_column_wrapper floats( - h_floats.begin(), - h_floats.end(), - cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + h_floats.begin(), h_floats.end(), cuda::transform_iterator(h_expected.begin(), [](auto str) { + return str != nullptr; + })); auto results = cudf::strings::from_floats(floats); diff --git a/cpp/tests/strings/integers_tests.cpp b/cpp/tests/strings/integers_tests.cpp index c487419ad88a..4971d7e280c7 100644 --- a/cpp/tests/strings/integers_tests.cpp +++ b/cpp/tests/strings/integers_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -15,8 +15,8 @@ #include #include -#include #include +#include #include #include @@ -76,9 +76,9 @@ TEST_F(StringsConvertTest, IsIntegerBoundCheckWithNulls) std::vector const h_strings{ "eee", "1234", nullptr, "", "-9832", "93.24", "765é", nullptr}; auto const strings = cudf::test::strings_column_wrapper( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto const results = cudf::strings::is_integer(cudf::strings_column_view(strings), cudf::data_type{cudf::type_id::INT32}); // Input has null elements then the output should have the same null mask @@ -189,9 +189,9 @@ TEST_F(StringsConvertTest, ToInteger) "-2147483648", "2147483648"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto results = cudf::strings::to_integers(cudf::strings_column_view(strings), cudf::data_type{cudf::type_id::INT16}); @@ -328,9 +328,9 @@ TEST_F(StringsConvertTest, HexToInteger) std::vector h_strings{ "1234", nullptr, "98BEEF", "1a5", "CAFE", "2face", "0xAABBCCDD", "112233445566"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); { std::vector h_expected; @@ -383,9 +383,9 @@ TEST_F(StringsConvertTest, IsHex) "0x", "x"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::test::fixed_width_column_wrapper expected( {0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0}, {true, true, false, true, true, true, true, true, true, true, true, true}); diff --git a/cpp/tests/strings/ipv4_tests.cpp b/cpp/tests/strings/ipv4_tests.cpp index 2abdbd81d17a..3171df48319a 100644 --- a/cpp/tests/strings/ipv4_tests.cpp +++ b/cpp/tests/strings/ipv4_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -23,8 +23,7 @@ TEST_F(StringsConvertTest, IPv4ToIntegers) cudf::test::strings_column_wrapper strings( h_strings.cbegin(), h_strings.cend(), - cuda::transform_iterator(h_strings.begin(), - [](auto const str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto const str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::ipv4_to_integers(strings_view); @@ -33,8 +32,7 @@ TEST_F(StringsConvertTest, IPv4ToIntegers) cudf::test::fixed_width_column_wrapper expected( h_expected.cbegin(), h_expected.cend(), - cuda::transform_iterator(h_strings.begin(), - [](auto const str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto const str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -45,15 +43,13 @@ TEST_F(StringsConvertTest, IntegersToIPv4) cudf::test::strings_column_wrapper strings( h_strings.cbegin(), h_strings.cend(), - cuda::transform_iterator(h_strings.begin(), - [](auto const str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto const str) { return str != nullptr; })); std::vector h_column{3232235521, 167772161, 0, 0, 700055553, 700776449}; cudf::test::fixed_width_column_wrapper column( h_column.cbegin(), h_column.cend(), - cuda::transform_iterator(h_strings.begin(), - [](auto const str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.begin(), [](auto const str) { return str != nullptr; })); auto results = cudf::strings::integers_to_ipv4(column); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, strings); @@ -90,9 +86,9 @@ TEST_F(StringsConvertTest, IsIPv4) "9.1.2.3.4", "8.9"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::test::fixed_width_column_wrapper expected( {0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0}, {true, true, false, true, true, true, true, true, true, true, true, true}); diff --git a/cpp/tests/strings/pad_tests.cpp b/cpp/tests/strings/pad_tests.cpp index 1719d47334a9..f33480e61024 100644 --- a/cpp/tests/strings/pad_tests.cpp +++ b/cpp/tests/strings/pad_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -24,9 +24,9 @@ TEST_F(StringsPadTest, Padding) { std::vector h_strings{"eee ddd", "bb cc", nullptr, "", "aa", "bbb", "ééé", "o"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::size_type width = 6; std::string phil = "+"; auto strings_view = cudf::strings_column_view(strings); @@ -123,9 +123,9 @@ TEST_F(StringsPadTest, ZFill) std::vector h_strings{ "654321", "-12345", nullptr, "", "-5", "0987", "4", "+8.5", "éé", "+abé", "é+a", "100-"}; cudf::test::strings_column_wrapper input( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(input); auto results = cudf::strings::zfill(strings_view, 6); @@ -191,9 +191,9 @@ TEST_F(StringsPadTest, Wrap1) { std::vector h_strings{"12345", "thesé", nullptr, "ARE THE", "tést strings", ""}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::size_type width = 3; auto strings_view = cudf::strings_column_view(strings); @@ -213,9 +213,9 @@ TEST_F(StringsPadTest, Wrap2) std::vector h_strings{"the quick brown fox jumped over the lazy brown dog", "hello, world"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::size_type width = 12; auto strings_view = cudf::strings_column_view(strings); @@ -235,9 +235,9 @@ TEST_F(StringsPadTest, WrapExpectFailure) { std::vector h_strings{"12345", "thesé", nullptr, "ARE THE", "tést strings", ""}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::size_type width = 0; // this should trigger failure diff --git a/cpp/tests/strings/replace_regex_tests.cpp b/cpp/tests/strings/replace_regex_tests.cpp index b849eb262867..66ebf03fa42d 100644 --- a/cpp/tests/strings/replace_regex_tests.cpp +++ b/cpp/tests/strings/replace_regex_tests.cpp @@ -424,9 +424,9 @@ TEST_F(StringsReplaceRegexTest, MediumReplaceRegex) "12345678901234567890", "abcdefghijklmnopqrstuvwxyz"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::replace_re(strings_view, *prog); @@ -453,9 +453,9 @@ TEST_F(StringsReplaceRegexTest, LargeReplaceRegex) "12345678901234567890", "abcdefghijklmnopqrstuvwxyz"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::replace_re(strings_view, *prog); diff --git a/cpp/tests/strings/replace_tests.cpp b/cpp/tests/strings/replace_tests.cpp index c80bfc5373a7..eab420ccfc5d 100644 --- a/cpp/tests/strings/replace_tests.cpp +++ b/cpp/tests/strings/replace_tests.cpp @@ -29,10 +29,9 @@ struct StringsReplaceTest : public cudf::test::BaseFixture { "", nullptr}; - return { - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })}; + return {h_strings.begin(), + h_strings.end(), + cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })}; } std::unique_ptr build_large(cudf::column_view const& first, @@ -293,9 +292,9 @@ TEST_F(StringsReplaceTest, ReplaceSlice) std::vector h_strings{"Héllo", "thesé", nullptr, "ARE THE", "tést strings", ""}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); { diff --git a/cpp/tests/strings/strip_tests.cpp b/cpp/tests/strings/strip_tests.cpp index 2bb20f668d7d..df0d4879e181 100644 --- a/cpp/tests/strings/strip_tests.cpp +++ b/cpp/tests/strings/strip_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -23,9 +23,9 @@ TEST_F(StringsStripTest, StripLeft) std::vector h_expected{"aBc ", "", nullptr, "aaaa ", "b", "ccc ddd"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::strip(strings_view, cudf::strings::side_type::LEFT); @@ -43,9 +43,9 @@ TEST_F(StringsStripTest, StripRight) std::vector h_expected{" aBc", "", nullptr, "", "b", "\tccc ddd"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto results = @@ -64,9 +64,9 @@ TEST_F(StringsStripTest, StripBoth) std::vector h_expected{"aBc", "", nullptr, "", "b", "ccc ddd"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto results = diff --git a/cpp/tests/strings/translate_tests.cpp b/cpp/tests/strings/translate_tests.cpp index 40e709b59f38..093adc6880fc 100644 --- a/cpp/tests/strings/translate_tests.cpp +++ b/cpp/tests/strings/translate_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -32,9 +32,9 @@ TEST_F(StringsTranslateTest, Translate) { std::vector h_strings{"eee ddd", "bb cc", nullptr, "", "aa", "débd"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); std::vector> translate_table{ diff --git a/cpp/tests/strings/urls_tests.cpp b/cpp/tests/strings/urls_tests.cpp index 796d97b19b5f..63f44132c9d8 100644 --- a/cpp/tests/strings/urls_tests.cpp +++ b/cpp/tests/strings/urls_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2023, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -31,8 +31,7 @@ TEST_F(StringsConvertTest, UrlEncode) cudf::test::strings_column_wrapper strings( h_strings.cbegin(), h_strings.cend(), - cuda::transform_iterator(h_strings.cbegin(), - [](auto const str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.cbegin(), [](auto const str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::url_encode(strings_view); @@ -49,8 +48,7 @@ TEST_F(StringsConvertTest, UrlEncode) cudf::test::strings_column_wrapper expected( h_expected.cbegin(), h_expected.cend(), - cuda::transform_iterator(h_expected.cbegin(), - [](auto const str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.cbegin(), [](auto const str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -67,8 +65,7 @@ TEST_F(StringsConvertTest, UrlDecode) cudf::test::strings_column_wrapper strings( h_strings.cbegin(), h_strings.cend(), - cuda::transform_iterator(h_strings.cbegin(), - [](auto const str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.cbegin(), [](auto const str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::url_decode(strings_view); @@ -84,8 +81,7 @@ TEST_F(StringsConvertTest, UrlDecode) cudf::test::strings_column_wrapper expected( h_expected.cbegin(), h_expected.cend(), - cuda::transform_iterator(h_expected.cbegin(), - [](auto const str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.cbegin(), [](auto const str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } @@ -101,8 +97,7 @@ TEST_F(StringsConvertTest, UrlDecodeNop) cudf::test::strings_column_wrapper strings( h_strings.cbegin(), h_strings.cend(), - cuda::transform_iterator(h_strings.cbegin(), - [](auto const str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.cbegin(), [](auto const str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::url_decode(strings_view); @@ -123,8 +118,7 @@ TEST_F(StringsConvertTest, UrlDecodeSliced) cudf::test::strings_column_wrapper strings( h_strings.cbegin(), h_strings.cend(), - cuda::transform_iterator(h_strings.cbegin(), - [](auto const str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.cbegin(), [](auto const str) { return str != nullptr; })); std::vector h_expected{"www.nvidia.com/rapids/?p=é%", "01/_file-1234567890.txt", @@ -137,8 +131,7 @@ TEST_F(StringsConvertTest, UrlDecodeSliced) cudf::test::strings_column_wrapper expected( h_expected.cbegin(), h_expected.cend(), - cuda::transform_iterator(h_expected.cbegin(), - [](auto const str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.cbegin(), [](auto const str) { return str != nullptr; })); std::vector slice_indices{0, 3, 3, 6, 6, 8}; auto sliced_strings = cudf::slice(strings, slice_indices); @@ -197,8 +190,7 @@ TEST_F(StringsConvertTest, UrlDecodeLargeStrings) cudf::test::strings_column_wrapper strings( h_strings.cbegin(), h_strings.cend(), - cuda::transform_iterator(h_strings.cbegin(), - [](auto const str) { return str != nullptr; })); + cuda::transform_iterator(h_strings.cbegin(), [](auto const str) { return str != nullptr; })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::url_decode(strings_view); @@ -207,8 +199,7 @@ TEST_F(StringsConvertTest, UrlDecodeLargeStrings) cudf::test::strings_column_wrapper expected( h_expected.cbegin(), h_expected.cend(), - cuda::transform_iterator(h_expected.cbegin(), - [](auto const str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.cbegin(), [](auto const str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); } diff --git a/cpp/tests/text/ngrams_tests.cpp b/cpp/tests/text/ngrams_tests.cpp index 3babfc9b2114..6c731a2c5122 100644 --- a/cpp/tests/text/ngrams_tests.cpp +++ b/cpp/tests/text/ngrams_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/text/ngrams_tokenize_tests.cpp b/cpp/tests/text/ngrams_tokenize_tests.cpp index 1a0eed3f6440..13a92ed44e80 100644 --- a/cpp/tests/text/ngrams_tokenize_tests.cpp +++ b/cpp/tests/text/ngrams_tokenize_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -28,9 +28,9 @@ TEST_F(TextNgramsTokenizeTest, Tokenize) "", "the mousé ate the cheese"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::strings_column_view strings_view(strings); diff --git a/cpp/tests/text/normalize_tests.cpp b/cpp/tests/text/normalize_tests.cpp index 25842ad3224d..60bd76050fe5 100644 --- a/cpp/tests/text/normalize_tests.cpp +++ b/cpp/tests/text/normalize_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -30,9 +30,9 @@ TEST_F(TextNormalizeTest, NormalizeSpaces) "no change", "the mousé ate the cheese"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::strings_column_view strings_view(strings); diff --git a/cpp/tests/text/replace_tests.cpp b/cpp/tests/text/replace_tests.cpp index 6ad2933dd239..4f0cadfac5ee 100644 --- a/cpp/tests/text/replace_tests.cpp +++ b/cpp/tests/text/replace_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -28,9 +28,9 @@ TEST_F(TextReplaceTest, ReplaceTokens) "no change", "thé is the cheese is"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::test::strings_column_wrapper targets({"is", "the"}); cudf::test::strings_column_wrapper repls({"___", ""}); std::vector h_expected{" fox jumped over dog", diff --git a/cpp/tests/text/stemmer_tests.cpp b/cpp/tests/text/stemmer_tests.cpp index 2deb81b6e9df..d51624b63a40 100644 --- a/cpp/tests/text/stemmer_tests.cpp +++ b/cpp/tests/text/stemmer_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/text/tokenize_tests.cpp b/cpp/tests/text/tokenize_tests.cpp index 05614de2053f..8368c5864841 100644 --- a/cpp/tests/text/tokenize_tests.cpp +++ b/cpp/tests/text/tokenize_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -29,9 +29,9 @@ TEST_F(TextTokenizeTest, Tokenize) "", "the mousé ate the cheese"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::strings_column_view strings_view(strings); @@ -61,9 +61,9 @@ TEST_F(TextTokenizeTest, TokenizeMulti) "the over ", "the mousé ate the cheese"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::strings_column_view strings_view(strings); cudf::test::strings_column_wrapper delimiters{"the ", "over "}; diff --git a/cpp/tests/utilities_tests/column_debug_tests.cpp b/cpp/tests/utilities_tests/column_debug_tests.cpp index 4b169ec908d5..85a039a1fa1a 100644 --- a/cpp/tests/utilities_tests/column_debug_tests.cpp +++ b/cpp/tests/utilities_tests/column_debug_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -102,9 +102,9 @@ TEST_F(ColumnDebugStringsTest, StringsToString) std::vector h_strings{"eee", "bb", nullptr, "", "aa", "bbb", "ééé"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); std::ostringstream tmp; tmp << h_strings[0] << delimiter << h_strings[1] << delimiter << "NULL" << delimiter diff --git a/cpp/tests/utilities_tests/column_utilities_tests.cpp b/cpp/tests/utilities_tests/column_utilities_tests.cpp index d270f33ae16c..aacfcd17f41b 100644 --- a/cpp/tests/utilities_tests/column_utilities_tests.cpp +++ b/cpp/tests/utilities_tests/column_utilities_tests.cpp @@ -146,9 +146,9 @@ TEST_F(ColumnUtilitiesStringsTest, StringsToHost) { std::vector h_strings{"eee", "bb", nullptr, "", "aa", "bbb", "ééé"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto host_data = cudf::test::to_host(strings); auto result_itr = host_data.first.begin(); for (auto itr = h_strings.begin(); itr != h_strings.end(); ++itr, ++result_itr) { @@ -160,9 +160,9 @@ TEST_F(ColumnUtilitiesStringsTest, StringsToHostAllNulls) { std::vector h_strings{nullptr, nullptr, nullptr}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto host_data = cudf::test::to_host(strings); auto results = host_data.first; EXPECT_EQ(std::size_t{3}, host_data.first.size()); From d436513f189a68c36b2c4bf435aa4008c097d1a4 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Mon, 20 Jul 2026 03:10:58 +0000 Subject: [PATCH 04/27] Complete transform iterator migration --- cpp/src/io/json/json_tree.cu | 6 ++-- cpp/src/io/parquet/reader_impl_chunking.cu | 10 +++---- cpp/src/io/parquet/reader_impl_preprocess.cu | 15 +++++----- .../io/experimental/hybrid_scan_common.cpp | 4 +-- .../optional_iterator_test_numeric.cu | 4 +-- .../iterator/pair_iterator_test_numeric.cu | 4 +-- cpp/tests/strings/extract_tests.cpp | 28 +++++++++---------- cpp/tests/strings/find_tests.cpp | 14 ++++++---- cpp/tests/strings/slice_tests.cpp | 22 +++++++-------- 9 files changed, 53 insertions(+), 54 deletions(-) diff --git a/cpp/src/io/json/json_tree.cu b/cpp/src/io/json/json_tree.cu index eaafbcab7bc0..19ec6bc123f5 100644 --- a/cpp/src/io/json/json_tree.cu +++ b/cpp/src/io/json/json_tree.cu @@ -294,7 +294,7 @@ tree_meta_t get_tree_representation(device_span tokens, rmm::device_uvector node_levels(num_nodes, stream, mr); { rmm::device_uvector token_levels(num_tokens, stream); - auto const push_pop_it = thrust::make_transform_iterator( + auto const push_pop_it = cuda::transform_iterator( tokens.begin(), cuda::proclaim_return_type( [does_push, does_pop] __device__(PdaTokenT const token) -> size_type { @@ -437,7 +437,7 @@ tree_meta_t get_tree_representation(device_span tokens, rmm::device_uvector token_levels(num_nested, stream); rmm::device_uvector token_id(num_nested, stream); rmm::device_uvector parent_node_ids(num_nested, stream); - auto const push_pop_it = thrust::make_transform_iterator( + auto const push_pop_it = cuda::transform_iterator( tokens.begin(), cuda::proclaim_return_type( [] __device__(PdaTokenT const token) -> size_type { @@ -507,7 +507,7 @@ tree_meta_t get_tree_representation(device_span tokens, // add +1 to include end symbol. return i + 1; }); - auto stencil = thrust::make_transform_iterator(token_id.begin(), is_nested_end{tokens.data()}); + auto stencil = cuda::transform_iterator(token_id.begin(), is_nested_end{tokens.data()}); thrust::scatter_if(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), token_indices_it, token_indices_it + num_nested, diff --git a/cpp/src/io/parquet/reader_impl_chunking.cu b/cpp/src/io/parquet/reader_impl_chunking.cu index c2a53826bb05..f80685345ed7 100644 --- a/cpp/src/io/parquet/reader_impl_chunking.cu +++ b/cpp/src/io/parquet/reader_impl_chunking.cu @@ -167,8 +167,7 @@ void reader_impl::setup_next_pass(read_mode mode) // store off how much memory we've used so far. This includes the compressed page data and the // decompressed dictionary data. we will subtract this from the available total memory for the // subpasses - auto chunk_iter = - thrust::make_transform_iterator(pass.chunks.d_begin(), get_chunk_compressed_size{}); + auto chunk_iter = cuda::transform_iterator(pass.chunks.d_begin(), get_chunk_compressed_size{}); pass.base_mem_size = decomp_dict_data_size + cudf::detail::reduce( @@ -254,7 +253,7 @@ void reader_impl::setup_next_subpass(read_mode mode) // indices rmm::device_uvector c_info(pass.pages.size(), _stream); auto page_keys = make_page_key_iterator(pass.pages); - auto page_size = thrust::make_transform_iterator(pass.pages.d_begin(), get_page_input_size{}); + auto page_size = cuda::transform_iterator(pass.pages.d_begin(), get_page_input_size{}); thrust::inclusive_scan_by_key( rmm::exec_policy_nosync(_stream, cudf::get_current_device_resource_ref()), page_keys, @@ -565,9 +564,8 @@ void reader_impl::compute_output_chunks_for_subpass() // generate row_indices and cumulative output sizes for all pages rmm::device_uvector c_info(subpass.pages.size(), _stream); - auto page_input = - thrust::make_transform_iterator(subpass.pages.device_begin(), get_page_output_size{}); - auto page_keys = make_page_key_iterator(subpass.pages); + auto page_input = cuda::transform_iterator(subpass.pages.device_begin(), get_page_output_size{}); + auto page_keys = make_page_key_iterator(subpass.pages); thrust::inclusive_scan_by_key( rmm::exec_policy_nosync(_stream, cudf::get_current_device_resource_ref()), page_keys, diff --git a/cpp/src/io/parquet/reader_impl_preprocess.cu b/cpp/src/io/parquet/reader_impl_preprocess.cu index bf6e5d27ca87..f7559e94e5e3 100644 --- a/cpp/src/io/parquet/reader_impl_preprocess.cu +++ b/cpp/src/io/parquet/reader_impl_preprocess.cu @@ -28,7 +28,6 @@ #include #include #include -#include #include #include @@ -688,8 +687,8 @@ void reader_impl::generate_list_column_row_counts(is_estimate_row_counts is_esti pass.pages.d_begin(), pass.pages.d_end(), set_list_row_count_estimate{pass.chunks}); - auto key_input = thrust::make_transform_iterator(pass.pages.d_begin(), get_page_chunk_idx{}); - auto page_input = thrust::make_transform_iterator(pass.pages.d_begin(), get_page_num_rows{}); + auto key_input = cuda::transform_iterator(pass.pages.d_begin(), get_page_chunk_idx{}); + auto page_input = cuda::transform_iterator(pass.pages.d_begin(), get_page_num_rows{}); thrust::exclusive_scan_by_key( rmm::exec_policy_nosync(_stream, cudf::get_current_device_resource_ref()), key_input, @@ -802,8 +801,8 @@ void reader_impl::preprocess_subpass_pages(read_mode mode, size_t chunk_read_lim // field in ColumnChunkDesc is the absolute row index for the whole file. chunk_row in PageInfo is // relative to the beginning of the chunk. so in the kernels, chunk.start_row + page.chunk_row // gives us the absolute row index - auto key_input = thrust::make_transform_iterator(pass.pages.d_begin(), get_page_chunk_idx{}); - auto page_input = thrust::make_transform_iterator(pass.pages.d_begin(), get_page_num_rows{}); + auto key_input = cuda::transform_iterator(pass.pages.d_begin(), get_page_chunk_idx{}); + auto page_input = cuda::transform_iterator(pass.pages.d_begin(), get_page_num_rows{}); thrust::exclusive_scan_by_key( rmm::exec_policy_nosync(_stream, cudf::get_current_device_resource_ref()), key_input, @@ -1036,7 +1035,7 @@ void reader_impl::allocate_columns(read_mode mode, size_t skip_rows, size_t num_ d_cols_info.data(), max_depth, subpass.pages.size(), subpass.pages.device_begin()}); // Manually create a size_t `key_start` compatible counting_transform_iterator. - auto const reduction_keys = thrust::make_transform_iterator( + auto const reduction_keys = cuda::transform_iterator( cuda::counting_iterator{key_start}, get_reduction_key{subpass.pages.size()}); // Find the size of each column @@ -1139,8 +1138,8 @@ cudf::detail::host_vector reader_impl::calculate_page_string_offsets() rmm::device_uvector d_col_sizes(_input_columns.size(), _stream); // use page_index to fetch page string sizes in the proper order - auto val_iter = thrust::make_transform_iterator(subpass.pages.device_begin(), - page_to_string_size{pass.chunks.d_begin()}); + auto val_iter = cuda::transform_iterator(subpass.pages.device_begin(), + page_to_string_size{pass.chunks.d_begin()}); // do scan by key to calculate string offsets for each page thrust::exclusive_scan_by_key( diff --git a/cpp/tests/io/experimental/hybrid_scan_common.cpp b/cpp/tests/io/experimental/hybrid_scan_common.cpp index 339009ecf7e5..d3b31e3d2496 100644 --- a/cpp/tests/io/experimental/hybrid_scan_common.cpp +++ b/cpp/tests/io/experimental/hybrid_scan_common.cpp @@ -41,8 +41,8 @@ cudf::test::strings_column_wrapper constant_strings(cudf::size_type value) { CUDF_EXPECTS(value >= 0 && value <= 9999, "String value must be between 0000 and 9999"); - auto elements = thrust::make_transform_iterator(cuda::make_constant_iterator(value), - [](auto i) { return std::format("{:04d}", i); }); + auto elements = cuda::transform_iterator(cuda::make_constant_iterator(value), + [](auto i) { return std::format("{:04d}", i); }); return cudf::test::strings_column_wrapper(elements, elements + num_ordered_rows); } diff --git a/cpp/tests/iterator/optional_iterator_test_numeric.cu b/cpp/tests/iterator/optional_iterator_test_numeric.cu index 22f8f064f110..62a2f9eb361a 100644 --- a/cpp/tests/iterator/optional_iterator_test_numeric.cu +++ b/cpp/tests/iterator/optional_iterator_test_numeric.cu @@ -8,9 +8,9 @@ #include +#include #include #include -#include #include #include @@ -93,7 +93,7 @@ TYPED_TEST(NumericOptionalIteratorTest, mean_var_output) // GPU test auto it_dev = d_col->template optional_begin(cudf::nullate::YES{}); - auto it_dev_squared = thrust::make_transform_iterator(it_dev, transformer); + auto it_dev_squared = cuda::transform_iterator(it_dev, transformer); // this can be computed with a single reduce and without a temporary output vector // but the approach increases the compile time by ~2x diff --git a/cpp/tests/iterator/pair_iterator_test_numeric.cu b/cpp/tests/iterator/pair_iterator_test_numeric.cu index ac536f37693a..b73868ec5075 100644 --- a/cpp/tests/iterator/pair_iterator_test_numeric.cu +++ b/cpp/tests/iterator/pair_iterator_test_numeric.cu @@ -8,8 +8,8 @@ #include +#include #include -#include #include using TestingTypes = cudf::test::NumericTypes; @@ -104,7 +104,7 @@ TYPED_TEST(NumericPairIteratorTest, mean_var_output) // GPU test auto it_dev = d_col->template pair_begin(); - auto it_dev_squared = thrust::make_transform_iterator(it_dev, transformer); + auto it_dev_squared = cuda::transform_iterator(it_dev, transformer); auto result = thrust::reduce(rmm::exec_policy_nosync(cudf::get_default_stream()), it_dev_squared, it_dev_squared + d_col->size(), diff --git a/cpp/tests/strings/extract_tests.cpp b/cpp/tests/strings/extract_tests.cpp index 444708fc0c99..460e73c0e05d 100644 --- a/cpp/tests/strings/extract_tests.cpp +++ b/cpp/tests/strings/extract_tests.cpp @@ -27,9 +27,9 @@ TEST_F(StringsExtractTests, ExtractTest) "First Last", "Joe Schmoe", "John Smith", "Jane Smith", "Beyonce", "Sting", nullptr, ""}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); std::vector h_expecteds{"First", @@ -59,7 +59,7 @@ TEST_F(StringsExtractTests, ExtractTest) h_expecteds.data() + h_strings.size(), h_expecteds.data() + h_expecteds.size(), cuda::transform_iterator(h_expecteds.data() + h_strings.size(), - [](auto str) { return str != nullptr; })); + [](auto str) { return str != nullptr; })); std::vector> columns; columns.push_back(expected1.release()); columns.push_back(expected2.release()); @@ -246,9 +246,9 @@ TEST_F(StringsExtractTests, EmptyExtractTest) { std::vector h_strings{nullptr, "AAA", "AAA_A", "AAA_AAA_", "A__", ""}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto pattern = std::string("([^_]*)\\Z"); @@ -388,9 +388,9 @@ TEST_F(StringsExtractTests, MediumRegex) "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnop" "qrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::extract(strings_view, *prog); @@ -418,9 +418,9 @@ TEST_F(StringsExtractTests, LargeRegex) "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnop" "qrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto strings_view = cudf::strings_column_view(strings); auto results = cudf::strings::extract(strings_view, *prog); @@ -472,6 +472,6 @@ TEST_F(StringsExtractTests, CrlfLineAnchorExtNewline) cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(results->get_column(0), expected); } diff --git a/cpp/tests/strings/find_tests.cpp b/cpp/tests/strings/find_tests.cpp index 09358a9f7966..4295383572fd 100644 --- a/cpp/tests/strings/find_tests.cpp +++ b/cpp/tests/strings/find_tests.cpp @@ -14,6 +14,8 @@ #include #include +#include + #include struct StringsFindTest : public cudf::test::BaseFixture {}; @@ -258,9 +260,9 @@ TEST_F(StringsFindTest, StartsWith) { std::vector h_targets{"éa", "th", "e", "ll", nullptr, ""}; cudf::test::strings_column_wrapper targets( - h_targets.begin(), - h_targets.end(), - thrust::make_transform_iterator(h_targets.begin(), [](auto str) { return str != nullptr; })); + h_targets.begin(), h_targets.end(), cuda::transform_iterator(h_targets.begin(), [](auto str) { + return str != nullptr; + })); auto targets_view = cudf::strings_column_view(targets); cudf::test::fixed_width_column_wrapper expected({0, 1, 0, 0, 0, 1}, @@ -300,9 +302,9 @@ TEST_F(StringsFindTest, EndsWith) { std::vector h_targets{"éa", "sé", "th", nullptr, "tést strings", ""}; cudf::test::strings_column_wrapper targets( - h_targets.begin(), - h_targets.end(), - thrust::make_transform_iterator(h_targets.begin(), [](auto str) { return str != nullptr; })); + h_targets.begin(), h_targets.end(), cuda::transform_iterator(h_targets.begin(), [](auto str) { + return str != nullptr; + })); auto targets_view = cudf::strings_column_view(targets); cudf::test::fixed_width_column_wrapper expected({0, 1, 0, 0, 1, 1}, diff --git a/cpp/tests/strings/slice_tests.cpp b/cpp/tests/strings/slice_tests.cpp index 9ac2372966ee..8283aacd0b99 100644 --- a/cpp/tests/strings/slice_tests.cpp +++ b/cpp/tests/strings/slice_tests.cpp @@ -11,8 +11,8 @@ #include #include +#include #include -#include #include #include @@ -24,14 +24,14 @@ TEST_F(StringsSliceTest, Substring) { std::vector h_strings{"Héllo", "thesé", nullptr, "ARE THE", "tést strings", ""}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); std::vector h_expected({"llo", "esé", nullptr, "E T", "st ", ""}); cudf::test::strings_column_wrapper expected( h_expected.begin(), h_expected.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + cuda::transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); auto strings_column = static_cast(strings); auto results = cudf::strings::slice_strings( @@ -127,9 +127,9 @@ TEST_P(Parameters, AllNulls) { std::vector h_strings{nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - thrust::make_transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); auto start = std::optional(GetParam()); auto strings_column = cudf::strings_column_view(strings); @@ -137,9 +137,9 @@ TEST_P(Parameters, AllNulls) std::vector h_expected(h_strings); cudf::test::strings_column_wrapper expected( - h_strings.begin(), - h_strings.end(), - thrust::make_transform_iterator(h_expected.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_expected.begin(), [](auto str) { + return str != nullptr; + })); CUDF_TEST_EXPECT_COLUMNS_EQUAL(*results, expected); thrust::host_vector starts(h_strings.size(), 1); From bcb77dec7084b100ef156c9a6edf3aae7dcbd4e1 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Mon, 20 Jul 2026 03:58:16 +0000 Subject: [PATCH 05/27] Make device functor return types explicit --- cpp/include/cudf/detail/join/filtered_join.cuh | 2 +- cpp/src/join/distinct_hash_join.cu | 4 ++-- cpp/src/join/key_remapping.cu | 3 ++- cpp/src/join/mark_join.cuh | 5 +++-- cpp/src/text/vocabulary_tokenize.cu | 3 ++- cpp/src/text/wordpiece_tokenize.cu | 3 ++- 6 files changed, 12 insertions(+), 8 deletions(-) diff --git a/cpp/include/cudf/detail/join/filtered_join.cuh b/cpp/include/cudf/detail/join/filtered_join.cuh index e58259a39e81..3f40ebc783f9 100644 --- a/cpp/include/cudf/detail/join/filtered_join.cuh +++ b/cpp/include/cudf/detail/join/filtered_join.cuh @@ -88,7 +88,7 @@ class filtered_join { struct key_pair_fn { CUDF_HOST_DEVICE constexpr key_pair_fn(Hasher const& hasher) : _hasher{hasher} {} - __device__ __forceinline__ auto operator()(size_type i) const noexcept + __device__ __forceinline__ cuco::pair operator()(size_type i) const noexcept { return cuco::pair{_hasher(i), T{i}}; } diff --git a/cpp/src/join/distinct_hash_join.cu b/cpp/src/join/distinct_hash_join.cu index 8a5cf7b2a279..62d067061112 100644 --- a/cpp/src/join/distinct_hash_join.cu +++ b/cpp/src/join/distinct_hash_join.cu @@ -52,7 +52,7 @@ class primitive_keys_fn { public: CUDF_HOST_DEVICE constexpr primitive_keys_fn(hasher const& hash) : _hash{hash} {} - __device__ __forceinline__ auto operator()(size_type i) const noexcept + __device__ __forceinline__ cuco::pair operator()(size_type i) const noexcept { return cuco::pair{_hash(i), T{i}}; } @@ -72,7 +72,7 @@ class build_keys_fn { public: CUDF_HOST_DEVICE constexpr build_keys_fn(hasher const& hash) : _hash{hash} {} - __device__ __forceinline__ auto operator()(size_type i) const noexcept + __device__ __forceinline__ cuco::pair operator()(size_type i) const noexcept { return cuco::pair{_hash(i), T{i}}; } diff --git a/cpp/src/join/key_remapping.cu b/cpp/src/join/key_remapping.cu index ef8540c261f4..b9ff6f6f6a85 100644 --- a/cpp/src/join/key_remapping.cu +++ b/cpp/src/join/key_remapping.cu @@ -94,7 +94,8 @@ class make_key_pair { public: CUDF_HOST_DEVICE constexpr make_key_pair(Hasher const& hash) : _hash{hash} {} - __device__ __forceinline__ auto operator()(cudf::size_type i) const noexcept + __device__ __forceinline__ cuco::pair operator()( + cudf::size_type i) const noexcept { return cuco::pair{_hash(i), T{i}}; } diff --git a/cpp/src/join/mark_join.cuh b/cpp/src/join/mark_join.cuh index 2b0d4db7a052..365f974c13c7 100644 --- a/cpp/src/join/mark_join.cuh +++ b/cpp/src/join/mark_join.cuh @@ -78,7 +78,7 @@ template struct masked_key_fn { CUDF_HOST_DEVICE constexpr masked_key_fn(Hasher const& hasher) : _hasher{hasher} {} - __device__ __forceinline__ auto operator()(size_type i) const noexcept + __device__ __forceinline__ cuco::pair operator()(size_type i) const noexcept { return cuco::pair{unset_mark(_hasher(i)), T{i}}; } @@ -104,7 +104,8 @@ template struct hash_pair_fn { CUDF_HOST_DEVICE constexpr hash_pair_fn(hash_value_type const* hashes) : _hashes{hashes} {} - __device__ __forceinline__ auto operator()(size_type i) const noexcept + __device__ __forceinline__ cuco::pair operator()( + size_type i) const noexcept { return cuco::pair{_hashes[i], IndexType{i}}; } diff --git a/cpp/src/text/vocabulary_tokenize.cu b/cpp/src/text/vocabulary_tokenize.cu index 1c92e57b1dc7..b7c782a06311 100644 --- a/cpp/src/text/vocabulary_tokenize.cu +++ b/cpp/src/text/vocabulary_tokenize.cu @@ -119,7 +119,8 @@ struct tokenize_vocabulary::tokenize_vocabulary_impl { }; struct key_pair { - __device__ auto operator()(cudf::size_type idx) const noexcept + __device__ cuco::pair operator()( + cudf::size_type idx) const noexcept { return cuco::make_pair(idx, idx); } diff --git a/cpp/src/text/wordpiece_tokenize.cu b/cpp/src/text/wordpiece_tokenize.cu index 242e86dede37..0ee4a4e8bf51 100644 --- a/cpp/src/text/wordpiece_tokenize.cu +++ b/cpp/src/text/wordpiece_tokenize.cu @@ -170,7 +170,8 @@ namespace { * @brief Identifies the column indices as the values in the vocabulary map */ struct key_pair { - __device__ auto operator()(cudf::size_type idx) const noexcept + __device__ cuco::pair operator()( + cudf::size_type idx) const noexcept { return cuco::make_pair(idx, idx); } From b7945f38c2d5de157958225d9007565f30359719 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Sat, 1 Aug 2026 02:54:54 +0000 Subject: [PATCH 06/27] Finalize CUDA iterator migration --- .pre-commit-config.yaml | 6 + cpp/include/cudf_test/column_wrapper.hpp | 55 +++++--- cpp/include/cudf_test/iterator_utilities.hpp | 139 ++++++++++++++++++- cpp/src/io/json/column_tree_construction.cu | 6 +- cpp/src/io/json/json_tree.cu | 11 +- cpp/tests/io/csv_test.cpp | 4 +- cpp/tests/io/orc_chunked_reader_test.cu | 84 ++++++----- cpp/tests/io/parquet_chunked_reader_test.cu | 88 ++++++------ cpp/tests/utilities/column_utilities.cu | 10 +- 9 files changed, 282 insertions(+), 121 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7e6924f1f271..78f98af1933b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -112,6 +112,12 @@ repos: entry: 'rmm::exec_policy\(' language: pygrep types_or: [c, c++, cuda] + - id: use-cuda-iterators + name: use-cuda-iterators + description: 'Enforce that CUDA iterators are used instead of equivalent Thrust iterators' + entry: 'thrust::(?:make_)?(?:constant|counting|discard|permutation|reverse|tabulate_output|transform|transform_output|zip)_iterator' + language: pygrep + types_or: [c, c++, cuda] - id: exec-policy-nosync-memory-resource name: exec-policy-nosync-memory-resource description: 'Enforce that rmm::exec_policy_nosync is always passed a memory resource as its second argument' diff --git a/cpp/include/cudf_test/column_wrapper.hpp b/cpp/include/cudf_test/column_wrapper.hpp index ca43950df646..566d2d8d7674 100644 --- a/cpp/include/cudf_test/column_wrapper.hpp +++ b/cpp/include/cudf_test/column_wrapper.hpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -37,6 +37,7 @@ #include #include #include +#include namespace CUDF_EXPORT cudf { namespace test { @@ -155,10 +156,10 @@ template (), "Unexpected non-fixed width type."); - auto transformer = fixed_width_type_converter{}; - auto transform_begin = cuda::transform_iterator(begin, transformer); - auto const size = cudf::distance(begin, end); - auto const elements = thrust::host_vector(transform_begin, transform_begin + size); + auto const size = cudf::distance(begin, end); + auto elements = thrust::host_vector(size); + std::transform( + begin, end, elements.begin(), fixed_width_type_converter{}); return rmm::device_buffer{ elements.data(), size * sizeof(ElementTo), cudf::test::get_default_stream()}; } @@ -184,11 +185,10 @@ template ()>* = nullptr> rmm::device_buffer make_elements(InputIterator begin, InputIterator end) { - using RepType = typename ElementTo::rep; - auto transformer = fixed_width_type_converter{}; - auto transform_begin = cuda::transform_iterator(begin, transformer); - auto const size = cudf::distance(begin, end); - auto const elements = thrust::host_vector(transform_begin, transform_begin + size); + using RepType = typename ElementTo::rep; + auto const size = cudf::distance(begin, end); + auto elements = thrust::host_vector(size); + std::transform(begin, end, elements.begin(), fixed_width_type_converter{}); return rmm::device_buffer{ elements.data(), size * sizeof(RepType), cudf::test::get_default_stream()}; } @@ -216,10 +216,9 @@ rmm::device_buffer make_elements(InputIterator begin, InputIterator end) CUDF_EXPECTS(std::all_of(begin, end, [](ElementFrom v) { return v.scale() == 0; }), "Only zero-scale fixed-point values are supported"); - auto to_rep = [](ElementTo fp) { return fp.value(); }; - auto transformer_begin = cuda::transform_iterator(begin, to_rep); - auto const size = cudf::distance(begin, end); - auto const elements = thrust::host_vector(transformer_begin, transformer_begin + size); + auto const size = cudf::distance(begin, end); + auto elements = thrust::host_vector(size); + std::transform(begin, end, elements.begin(), [](ElementTo const fp) { return fp.value(); }); return rmm::device_buffer{ elements.data(), size * sizeof(RepType), cudf::test::get_default_stream()}; } @@ -516,10 +515,17 @@ class fixed_width_column_wrapper : public detail::column_wrapper { template fixed_width_column_wrapper(std::initializer_list> elements) { - auto begin = cuda::transform_iterator(elements.begin(), [](auto const& e) { return e.first; }); - auto end = begin + elements.size(); - auto v = cuda::transform_iterator(elements.begin(), [](auto const& e) { return e.second; }); - wrapped = fixed_width_column_wrapper(begin, end, v).release(); + auto values = std::vector{}; + auto validity = std::vector{}; + values.reserve(elements.size()); + validity.reserve(elements.size()); + for (auto const& [value, valid] : elements) { + values.push_back(value); + validity.push_back(valid); + } + wrapped = fixed_width_column_wrapper( + values.begin(), values.end(), validity.begin()) + .release(); } }; @@ -902,10 +908,15 @@ class strings_column_wrapper : public detail::column_wrapper { */ strings_column_wrapper(std::initializer_list> strings) { - auto begin = cuda::transform_iterator(strings.begin(), [](auto const& s) { return s.first; }); - auto end = begin + strings.size(); - auto v = cuda::transform_iterator(strings.begin(), [](auto const& s) { return s.second; }); - wrapped = strings_column_wrapper(begin, end, v).release(); + auto values = std::vector{}; + auto validity = std::vector{}; + values.reserve(strings.size()); + validity.reserve(strings.size()); + for (auto const& [value, valid] : strings) { + values.push_back(value); + validity.push_back(valid); + } + wrapped = strings_column_wrapper(values.begin(), values.end(), validity.begin()).release(); } }; diff --git a/cpp/include/cudf_test/iterator_utilities.hpp b/cpp/include/cudf_test/iterator_utilities.hpp index 1245469f8cb4..f3d93015043a 100644 --- a/cpp/include/cudf_test/iterator_utilities.hpp +++ b/cpp/include/cudf_test/iterator_utilities.hpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -11,11 +11,139 @@ #include +#include +#include +#include #include +#include +#include +#include namespace CUDF_EXPORT cudf { namespace test { namespace iterators { + +/** + * @brief Host-only counting transform iterator for test data generation. + * + * This iterator avoids making host-only test functors device-callable while retaining the + * random-access interface expected by column wrappers. + * + * @tparam Index Counting value type + * @tparam UnaryFunction Transformation callable type + */ +template +class host_counting_transform_iterator { + public: + using difference_type = std::ptrdiff_t; + using reference = std::invoke_result_t; + using value_type = std::remove_cvref_t; + using pointer = void; + using iterator_category = std::random_access_iterator_tag; + using iterator_concept = std::random_access_iterator_tag; + + host_counting_transform_iterator() = default; + + host_counting_transform_iterator(Index index, UnaryFunction function) + : _index{index}, _function{std::move(function)} + { + } + + decltype(auto) operator*() const { return std::invoke(_function, _index); } + + decltype(auto) operator[](difference_type offset) const + { + return std::invoke(_function, _index + static_cast(offset)); + } + + host_counting_transform_iterator& operator++() + { + ++_index; + return *this; + } + + host_counting_transform_iterator operator++(int) + { + auto result = *this; + ++*this; + return result; + } + + host_counting_transform_iterator& operator--() + { + --_index; + return *this; + } + + host_counting_transform_iterator operator--(int) + { + auto result = *this; + --*this; + return result; + } + + host_counting_transform_iterator& operator+=(difference_type offset) + { + _index += static_cast(offset); + return *this; + } + + host_counting_transform_iterator& operator-=(difference_type offset) + { + _index -= static_cast(offset); + return *this; + } + + friend host_counting_transform_iterator operator+(host_counting_transform_iterator iterator, + difference_type offset) + { + return iterator += offset; + } + + friend host_counting_transform_iterator operator+(difference_type offset, + host_counting_transform_iterator iterator) + { + return iterator += offset; + } + + friend host_counting_transform_iterator operator-(host_counting_transform_iterator iterator, + difference_type offset) + { + return iterator -= offset; + } + + friend difference_type operator-(host_counting_transform_iterator const& lhs, + host_counting_transform_iterator const& rhs) + { + return static_cast(lhs._index) - static_cast(rhs._index); + } + + friend bool operator==(host_counting_transform_iterator const& lhs, + host_counting_transform_iterator const& rhs) + { + return lhs._index == rhs._index; + } + + friend auto operator<=>(host_counting_transform_iterator const& lhs, + host_counting_transform_iterator const& rhs) + { + return lhs._index <=> rhs._index; + } + + private: + Index _index{}; + mutable UnaryFunction _function{}; +}; + +/** + * @brief Create a host-only counting transform iterator for test data generation. + */ +template +auto make_host_counting_transform_iterator(Index start, UnaryFunction function) +{ + return host_counting_transform_iterator{start, std::move(function)}; +} + /** * @brief Bool iterator for marking (possibly multiple) null elements in a column_wrapper. * @@ -42,9 +170,12 @@ template { using index_type = typename std::iterator_traits::value_type; - return cudf::detail::make_counting_transform_iterator( - 0, [indices = std::vector{index_start, index_end}](auto i) { - return std::find(indices.cbegin(), indices.cend(), i) == indices.cend(); + auto indices = std::make_shared const>( + std::vector{index_start, index_end}); + return make_host_counting_transform_iterator( + cudf::size_type{0}, [indices = std::move(indices)](cudf::size_type i) { + auto const index = static_cast(i); + return std::find(indices->cbegin(), indices->cend(), index) == indices->cend(); }); } diff --git a/cpp/src/io/json/column_tree_construction.cu b/cpp/src/io/json/column_tree_construction.cu index eb83dd6c8aa6..2cd7411d999a 100644 --- a/cpp/src/io/json/column_tree_construction.cu +++ b/cpp/src/io/json/column_tree_construction.cu @@ -157,8 +157,10 @@ std::tuple reduce_to_column_tree( } rmm::device_uvector parent_col_ids(num_columns, stream); - thrust::transform_output_iterator parent_col_ids_it(parent_col_ids.begin(), - parent_nodeids_to_colids{rev_mapped_col_ids}); + auto parent_col_ids_it = + cuda::transform_iterator(cuda::make_permutation_iterator( + unpermuted_tree.parent_node_ids.begin(), reordering_index.begin()), + parent_nodeids_to_colids{rev_mapped_col_ids}); rmm::device_uvector max_row_offsets(num_columns, stream); rmm::device_uvector column_categories(num_columns, stream); thrust::copy_n( diff --git a/cpp/src/io/json/json_tree.cu b/cpp/src/io/json/json_tree.cu index 19ec6bc123f5..f0564bd8c484 100644 --- a/cpp/src/io/json/json_tree.cu +++ b/cpp/src/io/json/json_tree.cu @@ -35,8 +35,6 @@ #include #include #include -#include -#include #include #include #include @@ -500,10 +498,9 @@ tree_meta_t get_tree_representation(device_span tokens, stream); // scatter to node_range_end for only nested end tokens. - auto token_indices_it = - thrust::make_permutation_iterator(token_indices.begin(), token_id.begin()); - auto nested_node_range_end_it = - thrust::make_transform_output_iterator(node_range_end.begin(), [] __device__(auto i) { + auto token_indices_it = cuda::transform_iterator( + cuda::make_permutation_iterator(token_indices.begin(), token_id.begin()), + [] __device__(auto i) -> SymbolOffsetT { // add +1 to include end symbol. return i + 1; }); @@ -513,7 +510,7 @@ tree_meta_t get_tree_representation(device_span tokens, token_indices_it + num_nested, parent_node_ids.begin(), stencil, - nested_node_range_end_it); + node_range_end.begin()); } return {std::move(node_categories), diff --git a/cpp/tests/io/csv_test.cpp b/cpp/tests/io/csv_test.cpp index fd56b7a2e7b0..ee7d8dcfe8be 100644 --- a/cpp/tests/io/csv_test.cpp +++ b/cpp/tests/io/csv_test.cpp @@ -362,7 +362,7 @@ TYPED_TEST(CsvFixedPointWriterTest, SingleColumnNegativeScale) reference_strings.end(), cuda::counting_iterator{0}, std::back_inserter(valid_reference_strings), - validity.functor()); + [](std::size_t i) { return (i % 2) == 0; }); reference_strings = valid_reference_strings; using DecimalType = TypeParam; @@ -408,7 +408,7 @@ TYPED_TEST(CsvFixedPointWriterTest, SingleColumnPositiveScale) reference_strings.end(), cuda::counting_iterator{0}, std::back_inserter(valid_reference_strings), - validity.functor()); + [](std::size_t i) { return (i % 2) == 0; }); reference_strings = valid_reference_strings; using DecimalType = TypeParam; diff --git a/cpp/tests/io/orc_chunked_reader_test.cu b/cpp/tests/io/orc_chunked_reader_test.cu index 345a89fea502..1659615ed479 100644 --- a/cpp/tests/io/orc_chunked_reader_test.cu +++ b/cpp/tests/io/orc_chunked_reader_test.cu @@ -36,6 +36,8 @@ #include +#include + namespace { enum class output_limit : std::size_t {}; enum class input_limit : std::size_t {}; @@ -60,8 +62,8 @@ auto write_file(std::vector>& input_columns, { if (nullable) { // Generate deterministic bitmask instead of random bitmask for easy computation of data size. - auto const valid_iter = cudf::detail::make_counting_transform_iterator( - 0, [](cudf::size_type i) { return i % 4 != 3; }); + auto const valid_iter = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [](cudf::size_type i) -> bool { return i % 4 != 3; }); cudf::size_type offset{0}; for (auto& col : input_columns) { auto const [null_mask, null_count] = @@ -440,11 +442,12 @@ TEST_F(OrcChunkedReaderTest, TestChunkedReadWithString) // 20000 rows of 4 chars each (80000 + 80004) = B1 160004 260008 // 20000 rows of 16 chars each (320000 + 80004) = B2 400004 660012 auto const strings = std::vector{"a", "bbbb", "cccccccccccccccc"}; - auto const str_iter = cudf::detail::make_counting_transform_iterator(0, [&](int32_t i) { - if (i < 20000) { return strings[0]; } - if (i < 40000) { return strings[1]; } - return strings[2]; - }); + auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [&](int32_t i) -> std::string { + if (i < 20000) { return strings[0]; } + if (i < 40000) { return strings[1]; } + return strings[2]; + }); input_columns.emplace_back(strings_col(str_iter, str_iter + num_rows).release()); // Cumulative sizes: @@ -538,8 +541,8 @@ TEST_F(OrcChunkedReaderTest, TestChunkedReadWithStructs) auto child1 = int32s_col(int_iter, int_iter + num_rows); auto child2 = int32s_col(int_iter + num_rows, int_iter + num_rows * 2); - auto const str_iter = cudf::detail::make_counting_transform_iterator( - 0, [&](int32_t i) { return std::to_string(i); }); + auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [&](int32_t i) -> std::string { return std::to_string(i); }); auto child3 = strings_col{str_iter, str_iter + num_rows}; return structs_col{{child1, child2, child3}}.release(); @@ -625,8 +628,8 @@ TEST_F(OrcChunkedReaderTest, TestChunkedReadWithListsNoNulls) auto const template_lists = int32s_lists_col{ int32s_lists_col{}, int32s_lists_col{0}, int32s_lists_col{1, 2}, int32s_lists_col{3, 4, 5}}; - auto const gather_iter = - cudf::detail::make_counting_transform_iterator(0, [&](int32_t i) { return i % 4; }); + auto const gather_iter = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [&](int32_t i) -> int32_t { return i % 4; }); auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); input_columns.emplace_back( std::move(cudf::gather(cudf::table_view{{template_lists}}, gather_map)->release().front())); @@ -711,8 +714,8 @@ TEST_F(OrcChunkedReaderTest, TestChunkedReadWithListsHavingNulls) int32s_lists_col{0}, int32s_lists_col{1, 2}, int32s_lists_col{3, 4, 5, 6, 7, 8, 9} /* this list will be nullified out */}; - auto const gather_iter = - cudf::detail::make_counting_transform_iterator(0, [&](int32_t i) { return i % 4; }); + auto const gather_iter = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [&](int32_t i) -> int32_t { return i % 4; }); auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); input_columns.emplace_back( std::move(cudf::gather(cudf::table_view{{template_lists}}, gather_map)->release().front())); @@ -791,15 +794,16 @@ TEST_F(OrcChunkedReaderTest, TestChunkedReadWithStructsOfLists) child_columns.emplace_back( int32s_col(int_iter + num_rows, int_iter + num_rows * 2).release()); - auto const str_iter = cudf::detail::make_counting_transform_iterator(0, [&](int32_t i) { - return std::to_string(i) + "++++++++++++++++++++" + std::to_string(i); - }); + auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [&](int32_t i) -> std::string { + return std::to_string(i) + "++++++++++++++++++++" + std::to_string(i); + }); child_columns.emplace_back(strings_col{str_iter, str_iter + num_rows}.release()); auto const template_lists = int32s_lists_col{ int32s_lists_col{}, int32s_lists_col{0}, int32s_lists_col{0, 1}, int32s_lists_col{0, 1, 2}}; - auto const gather_iter = - cudf::detail::make_counting_transform_iterator(0, [&](int32_t i) { return i % 4; }); + auto const gather_iter = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [&](int32_t i) -> int32_t { return i % 4; }); auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); child_columns.emplace_back( std::move(cudf::gather(cudf::table_view{{template_lists}}, gather_map)->release().front())); @@ -925,8 +929,10 @@ TEST_F(OrcChunkedReaderTest, TestChunkedReadWithListsOfStructs) auto child1 = int32s_col(int_iter, int_iter + num_structs); auto child2 = int32s_col(int_iter + num_structs, int_iter + num_structs * 2); - auto const str_iter = cudf::detail::make_counting_transform_iterator( - 0, [&](int32_t i) { return std::to_string(i) + std::to_string(i) + std::to_string(i); }); + auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [&](int32_t i) -> std::string { + return std::to_string(i) + std::to_string(i) + std::to_string(i); + }); auto child3 = strings_col{str_iter, str_iter + num_structs}; return structs_col{{child1, child2, child3}}.release(); @@ -1037,8 +1043,8 @@ TEST_F(OrcChunkedReaderTest, TestChunkedReadNullCount) auto constexpr num_rows = 100'000; auto const sequence = cuda::constant_iterator(1); - auto const validity = - cudf::detail::make_counting_transform_iterator(0, [](auto i) { return i % 4 != 3; }); + auto const validity = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [](auto i) -> bool { return i % 4 != 3; }); std::vector> cols; cols.push_back(int32s_col{sequence, sequence + num_rows, validity}.release()); auto const expected = std::make_unique(std::move(cols)); @@ -1163,17 +1169,18 @@ TEST_F(OrcChunkedReaderInputLimitTest, MixedColumns) auto const iter1 = cuda::counting_iterator{0}; auto const col1 = int32s_col(iter1, iter1 + num_rows); - auto const iter2 = - cudf::detail::make_counting_transform_iterator(0, [](int i) { return static_cast(i); }); + auto const iter2 = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [](int i) -> double { return static_cast(i); }); auto const col2 = doubles_col(iter2, iter2 + num_rows); - auto const strings = std::vector{"abc", "de", "fghi"}; - auto const str_iter = cudf::detail::make_counting_transform_iterator(0, [&](int32_t i) { - if (i < 250000) { return strings[0]; } - if (i < 750000) { return strings[1]; } - return strings[2]; - }); - auto const col3 = strings_col(str_iter, str_iter + num_rows); + auto const strings = std::vector{"abc", "de", "fghi"}; + auto const str_iter = + cudf::test::iterators::make_host_counting_transform_iterator(0, [&](int32_t i) -> std::string { + if (i < 250000) { return strings[0]; } + if (i < 750000) { return strings[1]; } + return strings[2]; + }); + auto const col3 = strings_col(str_iter, str_iter + num_rows); auto const filename = std::string{"mixed_columns"}; auto const test_files = input_limit_get_test_names(temp_env->get_temp_filepath(filename)); @@ -1444,11 +1451,12 @@ TEST_F(OrcChunkedReaderInputLimitTest, SizeTypeRowsOverflow) int64_t constexpr total_rows = num_rows * num_reps; static_assert(total_rows > std::numeric_limits::max()); - auto const it = - cuda::transform_iterator(cuda::counting_iterator{0}, [num_rows](int64_t i) { + auto const values = + std::views::iota(int64_t{0}, num_rows) | + std::views::transform([num_rows](int64_t i) -> data_type { return (i % num_rows) % static_cast(std::numeric_limits::max() / 2); }); - auto const col = data_col(it, it + num_rows); + auto const col = data_col(values.begin(), values.end()); auto const chunk_table = cudf::table_view{{col}}; std::vector data_buffer; @@ -1480,8 +1488,9 @@ TEST_F(OrcChunkedReaderInputLimitTest, SizeTypeRowsOverflow) // Check validity of the last 5 million rows. auto const sequence_start = num_rows_to_skip % num_rows; - auto const skipped_col = data_col(it + sequence_start, it + sequence_start + num_rows_to_read); - auto const expected = cudf::table_view{{skipped_col}}; + auto const skipped_col = + data_col(values.begin() + sequence_start, values.begin() + sequence_start + num_rows_to_read); + auto const expected = cudf::table_view{{skipped_col}}; auto const read_opts = cudf::io::orc_reader_options::builder( @@ -1578,7 +1587,8 @@ TEST_P(OrcChunkedDecompressionTest, RoundTripBasic) auto const num_rows = 12'345; std::vector> input_columns; - auto value_iter = cudf::detail::make_counting_transform_iterator(0, [](auto i) { return i / 4; }); + auto value_iter = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [](auto i) -> int32_t { return i / 4; }); input_columns.emplace_back(int32s_col(value_iter, value_iter + num_rows).release()); input_columns.emplace_back(int64s_col(value_iter, value_iter + num_rows).release()); auto expected = std::make_unique(std::move(input_columns)); diff --git a/cpp/tests/io/parquet_chunked_reader_test.cu b/cpp/tests/io/parquet_chunked_reader_test.cu index c131a9983e01..79e7b119ce0e 100644 --- a/cpp/tests/io/parquet_chunked_reader_test.cu +++ b/cpp/tests/io/parquet_chunked_reader_test.cu @@ -60,7 +60,7 @@ auto write_file(std::vector>& input_columns, { if (nullable) { // Generate deterministic bitmask instead of random bitmask for easy computation of data size. - auto const valid_iter = cudf::detail::make_counting_transform_iterator( + auto const valid_iter = cudf::test::iterators::make_host_counting_transform_iterator( 0, [](cudf::size_type i) { return i % 4 != 3; }); cudf::size_type offset{0}; @@ -364,12 +364,13 @@ TEST_F(ParquetChunkedReaderTest, TestChunkedReadWithString) // 20000 rows of 1 char each (20000 + 80004) = B0 100004 100004 // 20000 rows of 4 chars each (80000 + 80004) = B1 160004 260008 // 20000 rows of 16 chars each (320000 + 80004) = B2 400004 660012 - auto const strings = std::vector{"a", "bbbb", "cccccccccccccccc"}; - auto const str_iter = cudf::detail::make_counting_transform_iterator(0, [&](int32_t i) { - if (i < 20000) { return strings[0]; } - if (i < 40000) { return strings[1]; } - return strings[2]; - }); + auto const strings = std::vector{"a", "bbbb", "cccccccccccccccc"}; + auto const str_iter = + cudf::test::iterators::make_host_counting_transform_iterator(0, [&](int32_t i) { + if (i < 20000) { return strings[0]; } + if (i < 40000) { return strings[1]; } + return strings[2]; + }); input_columns.emplace_back(strings_col(str_iter, str_iter + num_rows).release()); // Cumulative sizes: @@ -619,9 +620,9 @@ TEST_F(ParquetChunkedReaderTest, TestChunkedReadWithStringPrecise) // 20000 rows alternating 1-4 chars each (50000 + 80004) A0 130004 130004 // 20000 rows alternating 1-4 chars each (50000 + 80004) A1 130004 260008 // ... - auto const strings = std::vector{"a", "bbbb"}; - auto const str_iter = - cudf::detail::make_counting_transform_iterator(0, [&](int32_t i) { return strings[i % 2]; }); + auto const strings = std::vector{"a", "bbbb"}; + auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [&](int32_t i) { return strings[i % 2]; }); input_columns.emplace_back(strings_col(str_iter, str_iter + num_rows).release()); // Cumulative sizes: @@ -668,7 +669,7 @@ TEST_F(ParquetChunkedReaderTest, TestChunkedReadWithStructs) auto child1 = int32s_col(int_iter, int_iter + num_rows); auto child2 = int32s_col(int_iter + num_rows, int_iter + num_rows * 2); - auto const str_iter = cudf::detail::make_counting_transform_iterator( + auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( 0, [&](int32_t i) { return std::to_string(i); }); auto child3 = strings_col{str_iter, str_iter + num_rows}; @@ -751,8 +752,8 @@ TEST_F(ParquetChunkedReaderTest, TestChunkedReadWithListsNoNulls) auto const template_lists = int32s_lists_col{ int32s_lists_col{}, int32s_lists_col{0}, int32s_lists_col{1, 2}, int32s_lists_col{3, 4, 5}}; - auto const gather_iter = - cudf::detail::make_counting_transform_iterator(0, [&](int32_t i) { return i % 4; }); + auto const gather_iter = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [&](int32_t i) { return i % 4; }); auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); input_columns.emplace_back( std::move(cudf::gather(cudf::table_view{{template_lists}}, gather_map)->release().front())); @@ -841,8 +842,8 @@ TEST_F(ParquetChunkedReaderTest, TestChunkedReadWithListsHavingNulls) int32s_lists_col{0}, int32s_lists_col{1, 2}, int32s_lists_col{3, 4, 5, 6, 7, 8, 9} /* this list will be nullified out */}; - auto const gather_iter = - cudf::detail::make_counting_transform_iterator(0, [&](int32_t i) { return i % 4; }); + auto const gather_iter = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [&](int32_t i) { return i % 4; }); auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); input_columns.emplace_back( std::move(cudf::gather(cudf::table_view{{template_lists}}, gather_map)->release().front())); @@ -930,15 +931,15 @@ TEST_F(ParquetChunkedReaderTest, TestChunkedReadWithStructsOfLists) child_columns.emplace_back( int32s_col(int_iter + num_rows, int_iter + num_rows * 2).release()); - auto const str_iter = cudf::detail::make_counting_transform_iterator(0, [&](int32_t i) { - return std::to_string(i) + "++++++++++++++++++++" + std::to_string(i); - }); + auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( + 0, + [&](int32_t i) { return std::to_string(i) + "++++++++++++++++++++" + std::to_string(i); }); child_columns.emplace_back(strings_col{str_iter, str_iter + num_rows}.release()); auto const template_lists = int32s_lists_col{ int32s_lists_col{}, int32s_lists_col{0}, int32s_lists_col{0, 1}, int32s_lists_col{0, 1, 2}}; - auto const gather_iter = - cudf::detail::make_counting_transform_iterator(0, [&](int32_t i) { return i % 4; }); + auto const gather_iter = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [&](int32_t i) { return i % 4; }); auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); child_columns.emplace_back( std::move(cudf::gather(cudf::table_view{{template_lists}}, gather_map)->release().front())); @@ -1073,7 +1074,7 @@ TEST_F(ParquetChunkedReaderTest, TestChunkedReadWithListsOfStructs) auto child1 = int32s_col(int_iter, int_iter + num_structs); auto child2 = int32s_col(int_iter + num_structs, int_iter + num_structs * 2); - auto const str_iter = cudf::detail::make_counting_transform_iterator( + auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( 0, [&](int32_t i) { return std::to_string(i) + std::to_string(i) + std::to_string(i); }); auto child3 = strings_col{str_iter, str_iter + num_structs}; @@ -1193,8 +1194,8 @@ TEST_F(ParquetChunkedReaderTest, TestChunkedReadNullCount) auto constexpr num_rows = 100'000; auto const sequence = cuda::constant_iterator{1}; - auto const validity = - cudf::detail::make_counting_transform_iterator(0, [](auto i) { return i % 4 != 3; }); + auto const validity = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [](auto i) { return i % 4 != 3; }); cudf::test::fixed_width_column_wrapper col{sequence, sequence + num_rows, validity}; std::vector> cols; cols.push_back(col.release()); @@ -1314,17 +1315,18 @@ TEST_F(ParquetChunkedReaderInputLimitConstrainedTest, MixedColumns) auto iter1 = cuda::counting_iterator{0}; cudf::test::fixed_width_column_wrapper col1(iter1, iter1 + num_rows); - auto iter2 = - cudf::detail::make_counting_transform_iterator(0, [](int i) { return static_cast(i); }); + auto iter2 = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [](int i) { return static_cast(i); }); cudf::test::fixed_width_column_wrapper col2(iter2, iter2 + num_rows); - auto const strings = std::vector{"abc", "de", "fghi"}; - auto const str_iter = cudf::detail::make_counting_transform_iterator(0, [&](int32_t i) { - if (i < 250000) { return strings[0]; } - if (i < 750000) { return strings[1]; } - return strings[2]; - }); - auto col3 = strings_col(str_iter, str_iter + num_rows); + auto const strings = std::vector{"abc", "de", "fghi"}; + auto const str_iter = + cudf::test::iterators::make_host_counting_transform_iterator(0, [&](int32_t i) { + if (i < 250000) { return strings[0]; } + if (i < 750000) { return strings[1]; } + return strings[2]; + }); + auto col3 = strings_col(str_iter, str_iter + num_rows); auto tbl = cudf::table_view{{col1, col2, col3}}; @@ -1945,7 +1947,7 @@ TEST_F(ParquetChunkedReaderTest, TestNumRowsPerSourceMultipleSources) std::equal(expected_counts.cbegin(), expected_counts.cend(), num_rows_per_source.cbegin())); // Expected source index column - auto const src_index = cudf::detail::make_counting_transform_iterator( + auto const src_index = cudf::test::iterators::make_host_counting_transform_iterator( 0, [](cudf::size_type i) { return i / num_rows; }); auto const expected_src_index = cudf::test::fixed_width_column_wrapper( src_index, src_index + nsources * num_rows); @@ -2113,11 +2115,11 @@ TEST_F(ParquetChunkedReaderTest, TestRowIndexColumnMultipleSources) EXPECT_EQ(result->num_columns(), 3); // Expected source and (file-local) row index columns - auto const src_index = cudf::detail::make_counting_transform_iterator( + auto const src_index = cudf::test::iterators::make_host_counting_transform_iterator( 0, [](cudf::size_type i) { return i / num_rows; }); auto const expected_src_index = cudf::test::fixed_width_column_wrapper( src_index, src_index + nsources * num_rows); - auto const row_index = cudf::detail::make_counting_transform_iterator( + auto const row_index = cudf::test::iterators::make_host_counting_transform_iterator( 0, [](cudf::size_type i) -> size_t { return i % num_rows; }); auto const expected_row_index = cudf::test::fixed_width_column_wrapper(row_index, row_index + nsources * num_rows); @@ -2150,11 +2152,11 @@ TEST_F(ParquetChunkedReaderTest, TestRowIndexColumnMultipleSources) EXPECT_EQ(result->num_rows(), rows_to_read); // Expected source and (file-local) row index columns - auto const src_index = cudf::detail::make_counting_transform_iterator( + auto const src_index = cudf::test::iterators::make_host_counting_transform_iterator( rows_to_skip, [](cudf::size_type i) { return i / num_rows; }); auto const expected_src_index = cudf::test::fixed_width_column_wrapper(src_index, src_index + rows_to_read); - auto const row_index = cudf::detail::make_counting_transform_iterator( + auto const row_index = cudf::test::iterators::make_host_counting_transform_iterator( rows_to_skip, [](cudf::size_type i) -> size_t { return i % num_rows; }); auto const expected_row_index = cudf::test::fixed_width_column_wrapper(row_index, row_index + rows_to_read); @@ -2265,17 +2267,17 @@ TEST_F(ParquetReaderTest, BooleanList) // Validity helpers std::bernoulli_distribution bn(0.7f); - auto valids = - cudf::detail::make_counting_transform_iterator(0, [&](int index) { return bn(gen); }); - auto list_valids = - cudf::detail::make_counting_transform_iterator(0, [&](int index) { return index % 100; }); + auto valids = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [&](int index) { return bn(gen); }); + auto list_valids = cudf::test::iterators::make_host_counting_transform_iterator( + 0, [&](int index) { return index % 100; }); // str(non-nullable) auto col0 = testdata::ascending(); // list(nullable) auto bools_iter = - cudf::detail::make_counting_transform_iterator(0, [](auto i) { return i % 2; }); + cudf::test::iterators::make_host_counting_transform_iterator(0, [](auto i) { return i % 2; }); auto bools_col = cudf::test::fixed_width_column_wrapper(bools_iter, bools_iter + num_rows, valids); auto offsets_iter = cuda::counting_iterator{0}; @@ -2494,7 +2496,7 @@ TEST_F(ParquetChunkedReaderTest, ReadStringsWithRowBounds) // Generate strings of varying length (~6-10 chars each) to produce enough // data for the chunked reader to return more than one chunk. - auto const str_iter = cudf::detail::make_counting_transform_iterator( + auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( 0, [](cudf::size_type i) { return "str_" + std::to_string(i); }); std::vector> input_columns; input_columns.emplace_back(strings_col(str_iter, str_iter + num_rows).release()); diff --git a/cpp/tests/utilities/column_utilities.cu b/cpp/tests/utilities/column_utilities.cu index 8b0e21a8048e..67a7fe3aeb3a 100644 --- a/cpp/tests/utilities/column_utilities.cu +++ b/cpp/tests/utilities/column_utilities.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -937,9 +937,11 @@ std::pair, std::vector> to_host(column_view auto col_span = cudf::device_span(c.begin(), c.size()); auto host_rep_types = cudf::detail::make_host_vector(col_span, cudf::get_default_stream()); - auto to_fp = [&](Rep val) { return T{scaled_integer{val, scale_type{c.type().scale()}}}; }; - auto begin = cuda::transform_iterator(std::cbegin(host_rep_types), to_fp); - auto const host_fixed_points = thrust::host_vector(begin, begin + c.size()); + auto host_fixed_points = thrust::host_vector(c.size()); + std::transform( + host_rep_types.cbegin(), host_rep_types.cend(), host_fixed_points.begin(), [&](Rep val) { + return T{scaled_integer{val, scale_type{c.type().scale()}}}; + }); return {std::move(host_fixed_points), bitmask_to_host(c)}; } From 30260e4085a2792035e121adb53d260c5d1357d5 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Sat, 1 Aug 2026 06:15:30 +0000 Subject: [PATCH 07/27] Use standard views for host test data --- cpp/include/cudf_test/iterator_utilities.hpp | 99 +++++------- cpp/tests/io/orc_chunked_reader_test.cu | 81 ++++++---- cpp/tests/io/parquet_chunked_reader_test.cu | 149 +++++++++++-------- 3 files changed, 169 insertions(+), 160 deletions(-) diff --git a/cpp/include/cudf_test/iterator_utilities.hpp b/cpp/include/cudf_test/iterator_utilities.hpp index f3d93015043a..c0ac732e2dc5 100644 --- a/cpp/include/cudf_test/iterator_utilities.hpp +++ b/cpp/include/cudf_test/iterator_utilities.hpp @@ -13,137 +13,112 @@ #include #include -#include #include #include -#include #include namespace CUDF_EXPORT cudf { namespace test { namespace iterators { -/** - * @brief Host-only counting transform iterator for test data generation. - * - * This iterator avoids making host-only test functors device-callable while retaining the - * random-access interface expected by column wrappers. - * - * @tparam Index Counting value type - * @tparam UnaryFunction Transformation callable type - */ -template -class host_counting_transform_iterator { +template +class nulls_at_iterator { public: using difference_type = std::ptrdiff_t; - using reference = std::invoke_result_t; - using value_type = std::remove_cvref_t; + using reference = bool; + using value_type = bool; using pointer = void; using iterator_category = std::random_access_iterator_tag; using iterator_concept = std::random_access_iterator_tag; - host_counting_transform_iterator() = default; + nulls_at_iterator() = default; - host_counting_transform_iterator(Index index, UnaryFunction function) - : _index{index}, _function{std::move(function)} + explicit nulls_at_iterator(std::vector indices) + : _indices{std::make_shared const>(std::move(indices))} { } - decltype(auto) operator*() const { return std::invoke(_function, _index); } - - decltype(auto) operator[](difference_type offset) const + reference operator*() const { - return std::invoke(_function, _index + static_cast(offset)); + auto const index = static_cast(_position); + return std::find(_indices->cbegin(), _indices->cend(), index) == _indices->cend(); } - host_counting_transform_iterator& operator++() + reference operator[](difference_type offset) const { return *(*this + offset); } + + nulls_at_iterator& operator++() { - ++_index; + ++_position; return *this; } - host_counting_transform_iterator operator++(int) + nulls_at_iterator operator++(int) { auto result = *this; ++*this; return result; } - host_counting_transform_iterator& operator--() + nulls_at_iterator& operator--() { - --_index; + --_position; return *this; } - host_counting_transform_iterator operator--(int) + nulls_at_iterator operator--(int) { auto result = *this; --*this; return result; } - host_counting_transform_iterator& operator+=(difference_type offset) + nulls_at_iterator& operator+=(difference_type offset) { - _index += static_cast(offset); + _position += offset; return *this; } - host_counting_transform_iterator& operator-=(difference_type offset) + nulls_at_iterator& operator-=(difference_type offset) { - _index -= static_cast(offset); + _position -= offset; return *this; } - friend host_counting_transform_iterator operator+(host_counting_transform_iterator iterator, - difference_type offset) + friend nulls_at_iterator operator+(nulls_at_iterator iterator, difference_type offset) { return iterator += offset; } - friend host_counting_transform_iterator operator+(difference_type offset, - host_counting_transform_iterator iterator) + friend nulls_at_iterator operator+(difference_type offset, nulls_at_iterator iterator) { return iterator += offset; } - friend host_counting_transform_iterator operator-(host_counting_transform_iterator iterator, - difference_type offset) + friend nulls_at_iterator operator-(nulls_at_iterator iterator, difference_type offset) { return iterator -= offset; } - friend difference_type operator-(host_counting_transform_iterator const& lhs, - host_counting_transform_iterator const& rhs) + friend difference_type operator-(nulls_at_iterator const& lhs, nulls_at_iterator const& rhs) { - return static_cast(lhs._index) - static_cast(rhs._index); + return lhs._position - rhs._position; } - friend bool operator==(host_counting_transform_iterator const& lhs, - host_counting_transform_iterator const& rhs) + friend bool operator==(nulls_at_iterator const& lhs, nulls_at_iterator const& rhs) { - return lhs._index == rhs._index; + return lhs._position == rhs._position; } - friend auto operator<=>(host_counting_transform_iterator const& lhs, - host_counting_transform_iterator const& rhs) + friend auto operator<=>(nulls_at_iterator const& lhs, nulls_at_iterator const& rhs) { - return lhs._index <=> rhs._index; + return lhs._position <=> rhs._position; } private: - Index _index{}; - mutable UnaryFunction _function{}; + std::shared_ptr const> _indices; + difference_type _position{}; }; -/** - * @brief Create a host-only counting transform iterator for test data generation. - */ -template -auto make_host_counting_transform_iterator(Index start, UnaryFunction function) -{ - return host_counting_transform_iterator{start, std::move(function)}; -} - /** * @brief Bool iterator for marking (possibly multiple) null elements in a column_wrapper. * @@ -170,13 +145,7 @@ template { using index_type = typename std::iterator_traits::value_type; - auto indices = std::make_shared const>( - std::vector{index_start, index_end}); - return make_host_counting_transform_iterator( - cudf::size_type{0}, [indices = std::move(indices)](cudf::size_type i) { - auto const index = static_cast(i); - return std::find(indices->cbegin(), indices->cend(), index) == indices->cend(); - }); + return nulls_at_iterator{std::vector{index_start, index_end}}; } /** diff --git a/cpp/tests/io/orc_chunked_reader_test.cu b/cpp/tests/io/orc_chunked_reader_test.cu index 1659615ed479..81ebd8be7e38 100644 --- a/cpp/tests/io/orc_chunked_reader_test.cu +++ b/cpp/tests/io/orc_chunked_reader_test.cu @@ -62,8 +62,10 @@ auto write_file(std::vector>& input_columns, { if (nullable) { // Generate deterministic bitmask instead of random bitmask for easy computation of data size. - auto const valid_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [](cudf::size_type i) -> bool { return i % 4 != 3; }); + auto const valid_values = + std::views::iota(cudf::size_type{0}) | + std::views::transform([](cudf::size_type i) -> bool { return i % 4 != 3; }); + auto const valid_iter = valid_values.begin(); cudf::size_type offset{0}; for (auto& col : input_columns) { auto const [null_mask, null_count] = @@ -441,13 +443,14 @@ TEST_F(OrcChunkedReaderTest, TestChunkedReadWithString) // 20000 rows of 1 char each (20000 + 80004) = B0 100004 100004 // 20000 rows of 4 chars each (80000 + 80004) = B1 160004 260008 // 20000 rows of 16 chars each (320000 + 80004) = B2 400004 660012 - auto const strings = std::vector{"a", "bbbb", "cccccccccccccccc"}; - auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [&](int32_t i) -> std::string { + auto const strings = std::vector{"a", "bbbb", "cccccccccccccccc"}; + auto const str_values = + std::views::iota(int32_t{0}) | std::views::transform([&](int32_t i) -> std::string { if (i < 20000) { return strings[0]; } if (i < 40000) { return strings[1]; } return strings[2]; }); + auto const str_iter = str_values.begin(); input_columns.emplace_back(strings_col(str_iter, str_iter + num_rows).release()); // Cumulative sizes: @@ -541,9 +544,11 @@ TEST_F(OrcChunkedReaderTest, TestChunkedReadWithStructs) auto child1 = int32s_col(int_iter, int_iter + num_rows); auto child2 = int32s_col(int_iter + num_rows, int_iter + num_rows * 2); - auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [&](int32_t i) -> std::string { return std::to_string(i); }); - auto child3 = strings_col{str_iter, str_iter + num_rows}; + auto const str_values = + std::views::iota(int32_t{0}) | + std::views::transform([&](int32_t i) -> std::string { return std::to_string(i); }); + auto const str_iter = str_values.begin(); + auto child3 = strings_col{str_iter, str_iter + num_rows}; return structs_col{{child1, child2, child3}}.release(); }()); @@ -628,9 +633,10 @@ TEST_F(OrcChunkedReaderTest, TestChunkedReadWithListsNoNulls) auto const template_lists = int32s_lists_col{ int32s_lists_col{}, int32s_lists_col{0}, int32s_lists_col{1, 2}, int32s_lists_col{3, 4, 5}}; - auto const gather_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [&](int32_t i) -> int32_t { return i % 4; }); - auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); + auto const gather_values = std::views::iota(int32_t{0}) | + std::views::transform([&](int32_t i) -> int32_t { return i % 4; }); + auto const gather_iter = gather_values.begin(); + auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); input_columns.emplace_back( std::move(cudf::gather(cudf::table_view{{template_lists}}, gather_map)->release().front())); @@ -714,9 +720,10 @@ TEST_F(OrcChunkedReaderTest, TestChunkedReadWithListsHavingNulls) int32s_lists_col{0}, int32s_lists_col{1, 2}, int32s_lists_col{3, 4, 5, 6, 7, 8, 9} /* this list will be nullified out */}; - auto const gather_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [&](int32_t i) -> int32_t { return i % 4; }); - auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); + auto const gather_values = std::views::iota(int32_t{0}) | + std::views::transform([&](int32_t i) -> int32_t { return i % 4; }); + auto const gather_iter = gather_values.begin(); + auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); input_columns.emplace_back( std::move(cudf::gather(cudf::table_view{{template_lists}}, gather_map)->release().front())); @@ -794,17 +801,19 @@ TEST_F(OrcChunkedReaderTest, TestChunkedReadWithStructsOfLists) child_columns.emplace_back( int32s_col(int_iter + num_rows, int_iter + num_rows * 2).release()); - auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [&](int32_t i) -> std::string { + auto const str_values = + std::views::iota(int32_t{0}) | std::views::transform([&](int32_t i) -> std::string { return std::to_string(i) + "++++++++++++++++++++" + std::to_string(i); }); + auto const str_iter = str_values.begin(); child_columns.emplace_back(strings_col{str_iter, str_iter + num_rows}.release()); auto const template_lists = int32s_lists_col{ int32s_lists_col{}, int32s_lists_col{0}, int32s_lists_col{0, 1}, int32s_lists_col{0, 1, 2}}; - auto const gather_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [&](int32_t i) -> int32_t { return i % 4; }); - auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); + auto const gather_values = std::views::iota(int32_t{0}) | + std::views::transform([&](int32_t i) -> int32_t { return i % 4; }); + auto const gather_iter = gather_values.begin(); + auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); child_columns.emplace_back( std::move(cudf::gather(cudf::table_view{{template_lists}}, gather_map)->release().front())); @@ -929,11 +938,12 @@ TEST_F(OrcChunkedReaderTest, TestChunkedReadWithListsOfStructs) auto child1 = int32s_col(int_iter, int_iter + num_structs); auto child2 = int32s_col(int_iter + num_structs, int_iter + num_structs * 2); - auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [&](int32_t i) -> std::string { + auto const str_values = + std::views::iota(int32_t{0}) | std::views::transform([&](int32_t i) -> std::string { return std::to_string(i) + std::to_string(i) + std::to_string(i); }); - auto child3 = strings_col{str_iter, str_iter + num_structs}; + auto const str_iter = str_values.begin(); + auto child3 = strings_col{str_iter, str_iter + num_structs}; return structs_col{{child1, child2, child3}}.release(); }; @@ -1042,9 +1052,10 @@ TEST_F(OrcChunkedReaderTest, TestChunkedReadNullCount) { auto constexpr num_rows = 100'000; - auto const sequence = cuda::constant_iterator(1); - auto const validity = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [](auto i) -> bool { return i % 4 != 3; }); + auto const sequence = cuda::constant_iterator(1); + auto const validity_values = std::views::iota(cudf::size_type{0}) | + std::views::transform([](auto i) -> bool { return i % 4 != 3; }); + auto const validity = validity_values.begin(); std::vector> cols; cols.push_back(int32s_col{sequence, sequence + num_rows, validity}.release()); auto const expected = std::make_unique(std::move(cols)); @@ -1169,18 +1180,21 @@ TEST_F(OrcChunkedReaderInputLimitTest, MixedColumns) auto const iter1 = cuda::counting_iterator{0}; auto const col1 = int32s_col(iter1, iter1 + num_rows); - auto const iter2 = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [](int i) -> double { return static_cast(i); }); - auto const col2 = doubles_col(iter2, iter2 + num_rows); + auto const values2 = std::views::iota(0) | std::views::transform([](int i) -> double { + return static_cast(i); + }); + auto const iter2 = values2.begin(); + auto const col2 = doubles_col(iter2, iter2 + num_rows); auto const strings = std::vector{"abc", "de", "fghi"}; - auto const str_iter = - cudf::test::iterators::make_host_counting_transform_iterator(0, [&](int32_t i) -> std::string { + auto const str_values = + std::views::iota(int32_t{0}) | std::views::transform([&](int32_t i) -> std::string { if (i < 250000) { return strings[0]; } if (i < 750000) { return strings[1]; } return strings[2]; }); - auto const col3 = strings_col(str_iter, str_iter + num_rows); + auto const str_iter = str_values.begin(); + auto const col3 = strings_col(str_iter, str_iter + num_rows); auto const filename = std::string{"mixed_columns"}; auto const test_files = input_limit_get_test_names(temp_env->get_temp_filepath(filename)); @@ -1587,8 +1601,9 @@ TEST_P(OrcChunkedDecompressionTest, RoundTripBasic) auto const num_rows = 12'345; std::vector> input_columns; - auto value_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [](auto i) -> int32_t { return i / 4; }); + auto const values = + std::views::iota(int32_t{0}) | std::views::transform([](auto i) -> int32_t { return i / 4; }); + auto const value_iter = values.begin(); input_columns.emplace_back(int32s_col(value_iter, value_iter + num_rows).release()); input_columns.emplace_back(int64s_col(value_iter, value_iter + num_rows).release()); auto expected = std::make_unique(std::move(input_columns)); diff --git a/cpp/tests/io/parquet_chunked_reader_test.cu b/cpp/tests/io/parquet_chunked_reader_test.cu index 79e7b119ce0e..8a02b9d1b84f 100644 --- a/cpp/tests/io/parquet_chunked_reader_test.cu +++ b/cpp/tests/io/parquet_chunked_reader_test.cu @@ -38,8 +38,10 @@ #include +#include #include #include +#include #include namespace { @@ -60,8 +62,9 @@ auto write_file(std::vector>& input_columns, { if (nullable) { // Generate deterministic bitmask instead of random bitmask for easy computation of data size. - auto const valid_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [](cudf::size_type i) { return i % 4 != 3; }); + auto const valid_values = std::views::iota(cudf::size_type{0}) | + std::views::transform([](cudf::size_type i) { return i % 4 != 3; }); + auto const valid_iter = valid_values.begin(); cudf::size_type offset{0}; for (auto& col : input_columns) { @@ -364,13 +367,13 @@ TEST_F(ParquetChunkedReaderTest, TestChunkedReadWithString) // 20000 rows of 1 char each (20000 + 80004) = B0 100004 100004 // 20000 rows of 4 chars each (80000 + 80004) = B1 160004 260008 // 20000 rows of 16 chars each (320000 + 80004) = B2 400004 660012 - auto const strings = std::vector{"a", "bbbb", "cccccccccccccccc"}; - auto const str_iter = - cudf::test::iterators::make_host_counting_transform_iterator(0, [&](int32_t i) { - if (i < 20000) { return strings[0]; } - if (i < 40000) { return strings[1]; } - return strings[2]; - }); + auto const strings = std::vector{"a", "bbbb", "cccccccccccccccc"}; + auto const str_values = std::views::iota(int32_t{0}) | std::views::transform([&](int32_t i) { + if (i < 20000) { return strings[0]; } + if (i < 40000) { return strings[1]; } + return strings[2]; + }); + auto const str_iter = str_values.begin(); input_columns.emplace_back(strings_col(str_iter, str_iter + num_rows).release()); // Cumulative sizes: @@ -620,9 +623,10 @@ TEST_F(ParquetChunkedReaderTest, TestChunkedReadWithStringPrecise) // 20000 rows alternating 1-4 chars each (50000 + 80004) A0 130004 130004 // 20000 rows alternating 1-4 chars each (50000 + 80004) A1 130004 260008 // ... - auto const strings = std::vector{"a", "bbbb"}; - auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [&](int32_t i) { return strings[i % 2]; }); + auto const strings = std::vector{"a", "bbbb"}; + auto const str_values = std::views::iota(int32_t{0}) | + std::views::transform([&](int32_t i) { return strings[i % 2]; }); + auto const str_iter = str_values.begin(); input_columns.emplace_back(strings_col(str_iter, str_iter + num_rows).release()); // Cumulative sizes: @@ -669,9 +673,10 @@ TEST_F(ParquetChunkedReaderTest, TestChunkedReadWithStructs) auto child1 = int32s_col(int_iter, int_iter + num_rows); auto child2 = int32s_col(int_iter + num_rows, int_iter + num_rows * 2); - auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [&](int32_t i) { return std::to_string(i); }); - auto child3 = strings_col{str_iter, str_iter + num_rows}; + auto const str_values = std::views::iota(int32_t{0}) | + std::views::transform([&](int32_t i) { return std::to_string(i); }); + auto const str_iter = str_values.begin(); + auto child3 = strings_col{str_iter, str_iter + num_rows}; return structs_col{{child1, child2, child3}}.release(); }()); @@ -752,9 +757,10 @@ TEST_F(ParquetChunkedReaderTest, TestChunkedReadWithListsNoNulls) auto const template_lists = int32s_lists_col{ int32s_lists_col{}, int32s_lists_col{0}, int32s_lists_col{1, 2}, int32s_lists_col{3, 4, 5}}; - auto const gather_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [&](int32_t i) { return i % 4; }); - auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); + auto const gather_values = + std::views::iota(int32_t{0}) | std::views::transform([&](int32_t i) { return i % 4; }); + auto const gather_iter = gather_values.begin(); + auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); input_columns.emplace_back( std::move(cudf::gather(cudf::table_view{{template_lists}}, gather_map)->release().front())); @@ -842,9 +848,10 @@ TEST_F(ParquetChunkedReaderTest, TestChunkedReadWithListsHavingNulls) int32s_lists_col{0}, int32s_lists_col{1, 2}, int32s_lists_col{3, 4, 5, 6, 7, 8, 9} /* this list will be nullified out */}; - auto const gather_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [&](int32_t i) { return i % 4; }); - auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); + auto const gather_values = + std::views::iota(int32_t{0}) | std::views::transform([&](int32_t i) { return i % 4; }); + auto const gather_iter = gather_values.begin(); + auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); input_columns.emplace_back( std::move(cudf::gather(cudf::table_view{{template_lists}}, gather_map)->release().front())); @@ -931,16 +938,19 @@ TEST_F(ParquetChunkedReaderTest, TestChunkedReadWithStructsOfLists) child_columns.emplace_back( int32s_col(int_iter + num_rows, int_iter + num_rows * 2).release()); - auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, - [&](int32_t i) { return std::to_string(i) + "++++++++++++++++++++" + std::to_string(i); }); + auto const str_values = + std::views::iota(int32_t{0}) | std::views::transform([&](int32_t i) { + return std::to_string(i) + "++++++++++++++++++++" + std::to_string(i); + }); + auto const str_iter = str_values.begin(); child_columns.emplace_back(strings_col{str_iter, str_iter + num_rows}.release()); auto const template_lists = int32s_lists_col{ int32s_lists_col{}, int32s_lists_col{0}, int32s_lists_col{0, 1}, int32s_lists_col{0, 1, 2}}; - auto const gather_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [&](int32_t i) { return i % 4; }); - auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); + auto const gather_values = + std::views::iota(int32_t{0}) | std::views::transform([&](int32_t i) { return i % 4; }); + auto const gather_iter = gather_values.begin(); + auto const gather_map = int32s_col(gather_iter, gather_iter + num_rows); child_columns.emplace_back( std::move(cudf::gather(cudf::table_view{{template_lists}}, gather_map)->release().front())); @@ -1074,9 +1084,11 @@ TEST_F(ParquetChunkedReaderTest, TestChunkedReadWithListsOfStructs) auto child1 = int32s_col(int_iter, int_iter + num_structs); auto child2 = int32s_col(int_iter + num_structs, int_iter + num_structs * 2); - auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [&](int32_t i) { return std::to_string(i) + std::to_string(i) + std::to_string(i); }); - auto child3 = strings_col{str_iter, str_iter + num_structs}; + auto const str_values = std::views::iota(int32_t{0}) | std::views::transform([&](int32_t i) { + return std::to_string(i) + std::to_string(i) + std::to_string(i); + }); + auto const str_iter = str_values.begin(); + auto child3 = strings_col{str_iter, str_iter + num_structs}; return structs_col{{child1, child2, child3}}.release(); }; @@ -1194,8 +1206,9 @@ TEST_F(ParquetChunkedReaderTest, TestChunkedReadNullCount) auto constexpr num_rows = 100'000; auto const sequence = cuda::constant_iterator{1}; - auto const validity = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [](auto i) { return i % 4 != 3; }); + auto const validity_values = + std::views::iota(cudf::size_type{0}) | std::views::transform([](auto i) { return i % 4 != 3; }); + auto const validity = validity_values.begin(); cudf::test::fixed_width_column_wrapper col{sequence, sequence + num_rows, validity}; std::vector> cols; cols.push_back(col.release()); @@ -1315,18 +1328,19 @@ TEST_F(ParquetChunkedReaderInputLimitConstrainedTest, MixedColumns) auto iter1 = cuda::counting_iterator{0}; cudf::test::fixed_width_column_wrapper col1(iter1, iter1 + num_rows); - auto iter2 = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [](int i) { return static_cast(i); }); + auto const values2 = + std::views::iota(0) | std::views::transform([](int i) { return static_cast(i); }); + auto const iter2 = values2.begin(); cudf::test::fixed_width_column_wrapper col2(iter2, iter2 + num_rows); - auto const strings = std::vector{"abc", "de", "fghi"}; - auto const str_iter = - cudf::test::iterators::make_host_counting_transform_iterator(0, [&](int32_t i) { - if (i < 250000) { return strings[0]; } - if (i < 750000) { return strings[1]; } - return strings[2]; - }); - auto col3 = strings_col(str_iter, str_iter + num_rows); + auto const strings = std::vector{"abc", "de", "fghi"}; + auto const str_values = std::views::iota(int32_t{0}) | std::views::transform([&](int32_t i) { + if (i < 250000) { return strings[0]; } + if (i < 750000) { return strings[1]; } + return strings[2]; + }); + auto const str_iter = str_values.begin(); + auto col3 = strings_col(str_iter, str_iter + num_rows); auto tbl = cudf::table_view{{col1, col2, col3}}; @@ -1947,8 +1961,9 @@ TEST_F(ParquetChunkedReaderTest, TestNumRowsPerSourceMultipleSources) std::equal(expected_counts.cbegin(), expected_counts.cend(), num_rows_per_source.cbegin())); // Expected source index column - auto const src_index = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [](cudf::size_type i) { return i / num_rows; }); + auto const src_indices = std::views::iota(cudf::size_type{0}) | + std::views::transform([](cudf::size_type i) { return i / num_rows; }); + auto const src_index = src_indices.begin(); auto const expected_src_index = cudf::test::fixed_width_column_wrapper( src_index, src_index + nsources * num_rows); CUDF_TEST_EXPECT_COLUMNS_EQUAL(result->view().column(0), expected_src_index); @@ -2115,12 +2130,15 @@ TEST_F(ParquetChunkedReaderTest, TestRowIndexColumnMultipleSources) EXPECT_EQ(result->num_columns(), 3); // Expected source and (file-local) row index columns - auto const src_index = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [](cudf::size_type i) { return i / num_rows; }); + auto const src_indices = std::views::iota(cudf::size_type{0}) | + std::views::transform([](cudf::size_type i) { return i / num_rows; }); + auto const src_index = src_indices.begin(); auto const expected_src_index = cudf::test::fixed_width_column_wrapper( src_index, src_index + nsources * num_rows); - auto const row_index = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [](cudf::size_type i) -> size_t { return i % num_rows; }); + auto const row_indices = + std::views::iota(cudf::size_type{0}) | + std::views::transform([](cudf::size_type i) -> size_t { return i % num_rows; }); + auto const row_index = row_indices.begin(); auto const expected_row_index = cudf::test::fixed_width_column_wrapper(row_index, row_index + nsources * num_rows); CUDF_TEST_EXPECT_COLUMNS_EQUAL(result->view().column(0), expected_src_index); @@ -2152,12 +2170,15 @@ TEST_F(ParquetChunkedReaderTest, TestRowIndexColumnMultipleSources) EXPECT_EQ(result->num_rows(), rows_to_read); // Expected source and (file-local) row index columns - auto const src_index = cudf::test::iterators::make_host_counting_transform_iterator( - rows_to_skip, [](cudf::size_type i) { return i / num_rows; }); + auto const src_indices = std::views::iota(static_cast(rows_to_skip)) | + std::views::transform([](cudf::size_type i) { return i / num_rows; }); + auto const src_index = src_indices.begin(); auto const expected_src_index = cudf::test::fixed_width_column_wrapper(src_index, src_index + rows_to_read); - auto const row_index = cudf::test::iterators::make_host_counting_transform_iterator( - rows_to_skip, [](cudf::size_type i) -> size_t { return i % num_rows; }); + auto const row_indices = + std::views::iota(static_cast(rows_to_skip)) | + std::views::transform([](cudf::size_type i) -> size_t { return i % num_rows; }); + auto const row_index = row_indices.begin(); auto const expected_row_index = cudf::test::fixed_width_column_wrapper(row_index, row_index + rows_to_read); CUDF_TEST_EXPECT_COLUMNS_EQUAL(result->view().column(0), expected_src_index); @@ -2267,19 +2288,21 @@ TEST_F(ParquetReaderTest, BooleanList) // Validity helpers std::bernoulli_distribution bn(0.7f); - auto valids = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [&](int index) { return bn(gen); }); - auto list_valids = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [&](int index) { return index % 100; }); + auto valids = std::vector(num_rows); + std::generate(valids.begin(), valids.end(), [&] { return bn(gen); }); + auto const list_valid_values = + std::views::iota(0) | std::views::transform([](int index) { return index % 100; }); + auto const list_valids = list_valid_values.begin(); // str(non-nullable) auto col0 = testdata::ascending(); // list(nullable) - auto bools_iter = - cudf::test::iterators::make_host_counting_transform_iterator(0, [](auto i) { return i % 2; }); - auto bools_col = - cudf::test::fixed_width_column_wrapper(bools_iter, bools_iter + num_rows, valids); + auto const bool_values = + std::views::iota(0) | std::views::transform([](auto i) { return i % 2; }); + auto const bools_iter = bool_values.begin(); + auto bools_col = cudf::test::fixed_width_column_wrapper( + bools_iter, bools_iter + num_rows, valids.begin()); auto offsets_iter = cuda::counting_iterator{0}; auto offsets_col = cudf::test::fixed_width_column_wrapper( offsets_iter, offsets_iter + num_rows + 1); @@ -2496,8 +2519,10 @@ TEST_F(ParquetChunkedReaderTest, ReadStringsWithRowBounds) // Generate strings of varying length (~6-10 chars each) to produce enough // data for the chunked reader to return more than one chunk. - auto const str_iter = cudf::test::iterators::make_host_counting_transform_iterator( - 0, [](cudf::size_type i) { return "str_" + std::to_string(i); }); + auto const str_values = + std::views::iota(cudf::size_type{0}) | + std::views::transform([](cudf::size_type i) { return "str_" + std::to_string(i); }); + auto const str_iter = str_values.begin(); std::vector> input_columns; input_columns.emplace_back(strings_col(str_iter, str_iter + num_rows).release()); From 14025b00a1755b6d915d7cb95d1de6d101797c51 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Sat, 1 Aug 2026 06:22:36 +0000 Subject: [PATCH 08/27] Use CUDA iterator for nulls_at --- cpp/include/cudf_test/iterator_utilities.hpp | 105 +------------------ 1 file changed, 4 insertions(+), 101 deletions(-) diff --git a/cpp/include/cudf_test/iterator_utilities.hpp b/cpp/include/cudf_test/iterator_utilities.hpp index c0ac732e2dc5..ff1e2d86641c 100644 --- a/cpp/include/cudf_test/iterator_utilities.hpp +++ b/cpp/include/cudf_test/iterator_utilities.hpp @@ -12,113 +12,13 @@ #include #include -#include #include -#include #include namespace CUDF_EXPORT cudf { namespace test { namespace iterators { -template -class nulls_at_iterator { - public: - using difference_type = std::ptrdiff_t; - using reference = bool; - using value_type = bool; - using pointer = void; - using iterator_category = std::random_access_iterator_tag; - using iterator_concept = std::random_access_iterator_tag; - - nulls_at_iterator() = default; - - explicit nulls_at_iterator(std::vector indices) - : _indices{std::make_shared const>(std::move(indices))} - { - } - - reference operator*() const - { - auto const index = static_cast(_position); - return std::find(_indices->cbegin(), _indices->cend(), index) == _indices->cend(); - } - - reference operator[](difference_type offset) const { return *(*this + offset); } - - nulls_at_iterator& operator++() - { - ++_position; - return *this; - } - - nulls_at_iterator operator++(int) - { - auto result = *this; - ++*this; - return result; - } - - nulls_at_iterator& operator--() - { - --_position; - return *this; - } - - nulls_at_iterator operator--(int) - { - auto result = *this; - --*this; - return result; - } - - nulls_at_iterator& operator+=(difference_type offset) - { - _position += offset; - return *this; - } - - nulls_at_iterator& operator-=(difference_type offset) - { - _position -= offset; - return *this; - } - - friend nulls_at_iterator operator+(nulls_at_iterator iterator, difference_type offset) - { - return iterator += offset; - } - - friend nulls_at_iterator operator+(difference_type offset, nulls_at_iterator iterator) - { - return iterator += offset; - } - - friend nulls_at_iterator operator-(nulls_at_iterator iterator, difference_type offset) - { - return iterator -= offset; - } - - friend difference_type operator-(nulls_at_iterator const& lhs, nulls_at_iterator const& rhs) - { - return lhs._position - rhs._position; - } - - friend bool operator==(nulls_at_iterator const& lhs, nulls_at_iterator const& rhs) - { - return lhs._position == rhs._position; - } - - friend auto operator<=>(nulls_at_iterator const& lhs, nulls_at_iterator const& rhs) - { - return lhs._position <=> rhs._position; - } - - private: - std::shared_ptr const> _indices; - difference_type _position{}; -}; - /** * @brief Bool iterator for marking (possibly multiple) null elements in a column_wrapper. * @@ -145,7 +45,10 @@ template { using index_type = typename std::iterator_traits::value_type; - return nulls_at_iterator{std::vector{index_start, index_end}}; + return cudf::detail::make_counting_transform_iterator( + 0, [indices = std::vector{index_start, index_end}](auto i) { + return std::find(indices.cbegin(), indices.cend(), i) == indices.cend(); + }); } /** From b09109c2c081205dc52d5a258610c9e24f2d826e Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Sat, 1 Aug 2026 06:32:25 +0000 Subject: [PATCH 09/27] Make nulls_at a standard range --- cpp/include/cudf_test/column_wrapper.hpp | 32 ++++++++--- cpp/include/cudf_test/iterator_utilities.hpp | 53 ++++++++++--------- cpp/tests/bitmask/bitmask_tests.cpp | 7 +-- cpp/tests/column/factories_test.cpp | 6 ++- .../copying/purge_nonempty_nulls_tests.cpp | 5 +- cpp/tests/copying/scatter_list_tests.cpp | 20 ++++--- cpp/tests/groupby/rank_scan_tests.cpp | 5 +- .../concatenate_list_elements_tests.cpp | 23 +++++--- cpp/tests/lists/contains_tests.cpp | 10 ++-- .../apply_boolean_mask_tests.cpp | 35 ++++++------ cpp/tests/reductions/distinct_count_tests.cpp | 5 +- cpp/tests/reductions/rank_tests.cpp | 12 +++-- cpp/tests/reductions/unique_count_tests.cpp | 5 +- cpp/tests/reshape/byte_cast_tests.cpp | 5 +- cpp/tests/rolling/collect_ops_test.cpp | 5 +- .../stream_compaction/distinct_tests.cpp | 17 +++--- .../stable_distinct_tests.cpp | 17 +++--- cpp/tests/stream_compaction/unique_tests.cpp | 11 ++-- cpp/tests/transform/one_hot_encode_tests.cpp | 8 +-- 19 files changed, 173 insertions(+), 108 deletions(-) diff --git a/cpp/include/cudf_test/column_wrapper.hpp b/cpp/include/cudf_test/column_wrapper.hpp index 566d2d8d7674..300d5e96b1c6 100644 --- a/cpp/include/cudf_test/column_wrapper.hpp +++ b/cpp/include/cudf_test/column_wrapper.hpp @@ -37,11 +37,26 @@ #include #include #include +#include #include namespace CUDF_EXPORT cudf { namespace test { namespace detail { + +/** + * @brief Return the beginning of a validity range or an unchanged validity iterator. + */ +template +auto validity_begin(Validity& validity) +{ + if constexpr (std::ranges::range) { + return std::ranges::begin(validity); + } else { + return validity; + } +} + /** * @brief Base class for a wrapper around a `cudf::column`. * @@ -396,7 +411,8 @@ class fixed_width_column_wrapper : public detail::column_wrapper { : column_wrapper{} { auto const size = cudf::distance(begin, end); - auto [null_mask, null_count] = detail::make_null_mask(v, v + size); + auto const validity = detail::validity_begin(v); + auto [null_mask, null_count] = detail::make_null_mask(validity, validity + size); wrapped.reset(new cudf::column{cudf::data_type{cudf::type_to_id()}, size, detail::make_elements(begin, end), @@ -631,7 +647,8 @@ class fixed_point_column_wrapper : public detail::column_wrapper { auto const elements = thrust::host_vector(begin, end); auto const id = type_to_id>(); auto const data_type = cudf::data_type{id, static_cast(scale)}; - auto [null_mask, null_count] = detail::make_null_mask(v, v + size); + auto const validity = detail::validity_begin(v); + auto [null_mask, null_count] = detail::make_null_mask(validity, validity + size); wrapped.reset(new cudf::column{ data_type, size, @@ -809,8 +826,9 @@ class strings_column_wrapper : public detail::column_wrapper { wrapped = cudf::make_empty_column(cudf::type_id::STRING); return; } - auto [chars, offsets] = detail::make_chars_and_offsets(begin, end, v); - auto [null_mask, null_count] = detail::make_null_mask_vector(v, v + num_strings); + auto const validity = detail::validity_begin(v); + auto [chars, offsets] = detail::make_chars_and_offsets(begin, end, validity); + auto [null_mask, null_count] = detail::make_null_mask_vector(validity, validity + num_strings); auto d_chars = cudf::detail::make_device_uvector_async( chars, cudf::test::get_default_stream(), cudf::get_current_device_resource_ref()); auto d_offsets = std::make_unique( @@ -1534,9 +1552,10 @@ class lists_column_wrapper : public detail::column_wrapper { : column_wrapper{} { std::vector validity; + auto const validity_iter = detail::validity_begin(v); std::transform(elements.begin(), elements.end(), - v, + validity_iter, std::back_inserter(validity), [](lists_column_wrapper const& l, bool valid) { return valid; }); build_from_nested(elements, validity); @@ -1950,7 +1969,8 @@ class structs_column_wrapper : public detail::column_wrapper { "All struct member columns must have the same row count."); std::vector validity(num_rows); - std::copy(validity_iterator, validity_iterator + num_rows, validity.begin()); + auto const validity_iter = detail::validity_begin(validity_iterator); + std::copy(validity_iter, validity_iter + num_rows, validity.begin()); init(std::move(child_columns), validity); } diff --git a/cpp/include/cudf_test/iterator_utilities.hpp b/cpp/include/cudf_test/iterator_utilities.hpp index ff1e2d86641c..b030e73db87d 100644 --- a/cpp/include/cudf_test/iterator_utilities.hpp +++ b/cpp/include/cudf_test/iterator_utilities.hpp @@ -13,6 +13,7 @@ #include #include +#include #include namespace CUDF_EXPORT cudf { @@ -20,53 +21,53 @@ namespace test { namespace iterators { /** - * @brief Bool iterator for marking (possibly multiple) null elements in a column_wrapper. + * @brief Bool range for marking (possibly multiple) null elements in a column_wrapper. * - * The returned iterator yields `false` (to mark `null`) at all the specified indices, + * The returned range yields `false` (to mark `null`) at all the specified indices, * and yields `true` (to mark valid rows) for all other indices. E.g. * * @code * auto indices = std::vector{8,9}; - * auto iter = nulls_at(indices.cbegin(), indices.end()); - * iter[6] == true; // i.e. Valid row at index 6. - * iter[7] == true; // i.e. Valid row at index 7. - * iter[8] == false; // i.e. Invalid row at index 8. - * iter[9] == false; // i.e. Invalid row at index 9. + * auto range = nulls_at(indices.cbegin(), indices.end()); + * range[6] == true; // i.e. Valid row at index 6. + * range[7] == true; // i.e. Valid row at index 7. + * range[8] == false; // i.e. Invalid row at index 8. + * range[9] == false; // i.e. Invalid row at index 9. * @endcode * * @tparam Iter Iterator type * @param index_start Iterator to start of indices for which the validity iterator * must return `false` (i.e. null) * @param index_end Iterator to end of indices for the validity iterator - * @return auto Validity iterator + * @return auto Validity range */ template [[maybe_unused]] static auto nulls_at(Iter index_start, Iter index_end) { using index_type = typename std::iterator_traits::value_type; - return cudf::detail::make_counting_transform_iterator( - 0, [indices = std::vector{index_start, index_end}](auto i) { - return std::find(indices.cbegin(), indices.cend(), i) == indices.cend(); - }); + return std::views::iota(cudf::size_type{0}) | + std::views::transform([indices = std::vector{index_start, index_end}](auto i) { + return std::find(indices.cbegin(), indices.cend(), i) == indices.cend(); + }); } /** - * @brief Bool iterator for marking (possibly multiple) null elements in a column_wrapper. + * @brief Bool range for marking (possibly multiple) null elements in a column_wrapper. * - * The returned iterator yields `false` (to mark `null`) at all the specified indices, + * The returned range yields `false` (to mark `null`) at all the specified indices, * and yields `true` (to mark valid rows) for all other indices. E.g. * * @code - * auto iter = nulls_at({8,9}); - * iter[6] == true; // i.e. Valid row at index 6. - * iter[7] == true; // i.e. Valid row at index 7. - * iter[8] == false; // i.e. Invalid row at index 8. - * iter[9] == false; // i.e. Invalid row at index 9. + * auto range = nulls_at({8,9}); + * range[6] == true; // i.e. Valid row at index 6. + * range[7] == true; // i.e. Valid row at index 7. + * range[8] == false; // i.e. Invalid row at index 8. + * range[9] == false; // i.e. Invalid row at index 9. * @endcode * * @param indices The indices for which the validity iterator must return `false` (i.e. null) - * @return auto Validity iterator + * @return auto Validity range */ [[maybe_unused]] static auto nulls_at(std::vector const& indices) { @@ -74,19 +75,19 @@ template } /** - * @brief Bool iterator for marking a single null element in a column_wrapper + * @brief Bool range for marking a single null element in a column_wrapper * - * The returned iterator yields `false` (to mark `null`) at the specified index, + * The returned range yields `false` (to mark `null`) at the specified index, * and yields `true` (to mark valid rows) for all other indices. E.g. * * @code - * auto iter = null_at(8); - * iter[7] == true; // i.e. Valid row at index 7. - * iter[8] == false; // i.e. Invalid row at index 8. + * auto range = null_at(8); + * range[7] == true; // i.e. Valid row at index 7. + * range[8] == false; // i.e. Invalid row at index 8. * @endcode * * @param index The index for which the validity iterator must return `false` (i.e. null) - * @return auto Validity iterator + * @return auto Validity range */ [[maybe_unused]] static auto null_at(cudf::size_type index) { diff --git a/cpp/tests/bitmask/bitmask_tests.cpp b/cpp/tests/bitmask/bitmask_tests.cpp index bf660d058657..0a6082e35131 100644 --- a/cpp/tests/bitmask/bitmask_tests.cpp +++ b/cpp/tests/bitmask/bitmask_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ #include @@ -692,8 +692,9 @@ TEST_F(MergeBitmaskTest, TestBitmaskOr) EXPECT_EQ(result2_null_count, 1); EXPECT_EQ(result3_null_count, 0); - auto all_but_index3 = cudf::test::iterators::null_at(3); - auto null3 = std::get<0>( + auto all_but_index3_values = cudf::test::iterators::null_at(3); + auto all_but_index3 = all_but_index3_values.begin(); + auto null3 = std::get<0>( cudf::test::detail::make_null_mask(all_but_index3, all_but_index3 + input2.num_rows())); EXPECT_EQ(nullptr, result1_mask.data()); diff --git a/cpp/tests/column/factories_test.cpp b/cpp/tests/column/factories_test.cpp index 07c39f81e23a..10529c2f9773 100644 --- a/cpp/tests/column/factories_test.cpp +++ b/cpp/tests/column/factories_test.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -702,7 +702,9 @@ TEST_F(ListsZeroLengthColumnTest, SuperimposeNulls) .release(); auto offsets = offset_t{0, 3, 3, 5}.release(); - auto const valid_iter = cudf::test::iterators::null_at(2); + auto const valid_iter_values = cudf::test::iterators::null_at(2); + + auto const valid_iter = valid_iter_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(valid_iter, valid_iter + 3); auto tmp = cudf::make_lists_column( diff --git a/cpp/tests/copying/purge_nonempty_nulls_tests.cpp b/cpp/tests/copying/purge_nonempty_nulls_tests.cpp index 1e80083d7142..21d76eb72741 100644 --- a/cpp/tests/copying/purge_nonempty_nulls_tests.cpp +++ b/cpp/tests/copying/purge_nonempty_nulls_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ #include @@ -419,7 +419,8 @@ TEST_F(PurgeNonEmptyNullsTest, StructOfList) return cudf::test::structs_column_wrapper{{child}}.release(); }(); auto [null_mask, null_count] = [&] { - auto const valid_iter = null_at(2); + auto const valid_iter_values = null_at(2); + auto const valid_iter = valid_iter_values.begin(); return cudf::test::detail::make_null_mask(valid_iter, valid_iter + structs_input->size()); }(); diff --git a/cpp/tests/copying/scatter_list_tests.cpp b/cpp/tests/copying/scatter_list_tests.cpp index 354aca593ad9..c2d5c767c8b7 100644 --- a/cpp/tests/copying/scatter_list_tests.cpp +++ b/cpp/tests/copying/scatter_list_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -155,7 +155,8 @@ TYPED_TEST(TypedScatterListsTest, NullableListsOfNullableFixedWidth) auto src_child = cudf::test::fixed_width_column_wrapper{{9, 9, 9, 9, 8, 8, 8}, {1, 1, 1, 0, 1, 1, 1}}; - auto src_list_validity = cudf::test::iterators::null_at(2); + auto src_list_validity_values = cudf::test::iterators::null_at(2); + auto src_list_validity = src_list_validity_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(src_list_validity, src_list_validity + 3); // One null list row, and one row with nulls. @@ -178,7 +179,8 @@ TYPED_TEST(TypedScatterListsTest, NullableListsOfNullableFixedWidth) auto expected_child_ints = cudf::test::fixed_width_column_wrapper{ {8, 8, 8, 1, 1, 9, 9, 9, 9, 3, 3, 4, 4, 6, 6}, {1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1}}; - auto expected_validity = cudf::test::iterators::null_at(5); + auto expected_validity_values = cudf::test::iterators::null_at(5); + auto expected_validity = expected_validity_values.begin(); std::tie(null_mask, null_count) = cudf::test::detail::make_null_mask(expected_validity, expected_validity + 7); auto expected_lists_column = cudf::make_lists_column( @@ -329,7 +331,8 @@ TEST_F(ScatterListsTest, NullableListsOfNullableStrings) cudf::test::strings_column_wrapper{{"all", "the", "leaves", "", "brown", "", "dreaming"}, {true, true, true, false, true, false, true}}; - auto src_validity = cudf::test::iterators::null_at(1); + auto src_validity_values = cudf::test::iterators::null_at(1); + auto src_validity = src_validity_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(src_validity, src_validity + 3); auto src_list_column = cudf::make_lists_column( 3, @@ -367,7 +370,8 @@ TEST_F(ScatterListsTest, NullableListsOfNullableStrings) "five"}, cudf::test::iterators::nulls_at({0, 7})}; - auto expected_validity = cudf::test::iterators::null_at(4); + auto expected_validity_values = cudf::test::iterators::null_at(4); + auto expected_validity = expected_validity_values.begin(); std::tie(null_mask, null_count) = cudf::test::detail::make_null_mask(expected_validity, expected_validity + 6); auto expected_lists = cudf::make_lists_column( @@ -863,7 +867,8 @@ TYPED_TEST(TypedScatterListsTest, NullListsOfStructs) auto source_structs = cudf::test::structs_column_wrapper{{source_numerics, source_strings}, cudf::test::iterators::null_at(1)}; - auto source_list_null_mask_begin = cudf::test::iterators::null_at(2); + auto source_list_null_mask_begin_values = cudf::test::iterators::null_at(2); + auto source_list_null_mask_begin = source_list_null_mask_begin_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask( source_list_null_mask_begin, source_list_null_mask_begin + 3); @@ -930,7 +935,8 @@ TYPED_TEST(TypedScatterListsTest, NullListsOfStructs) auto expected_structs = cudf::test::structs_column_wrapper{{expected_numerics, expected_strings}, cudf::test::iterators::null_at(6)}; - auto expected_lists_null_mask_begin = cudf::test::iterators::null_at(4); + auto expected_lists_null_mask_begin_values = cudf::test::iterators::null_at(4); + auto expected_lists_null_mask_begin = expected_lists_null_mask_begin_values.begin(); std::tie(null_mask, null_count) = cudf::test::detail::make_null_mask( expected_lists_null_mask_begin, expected_lists_null_mask_begin + 6); diff --git a/cpp/tests/groupby/rank_scan_tests.cpp b/cpp/tests/groupby/rank_scan_tests.cpp index a123093fd528..220152dc0ce3 100644 --- a/cpp/tests/groupby/rank_scan_tests.cpp +++ b/cpp/tests/groupby/rank_scan_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -330,7 +330,8 @@ TYPED_TEST(typed_groupby_rank_scan_test, structsWithNullPushdown) {"0a", "0a", "2a", "2a", "3b", "5", "6c", "6c", "6c", "9", "9", "10d"}, null_at(8)}; auto struct_column = cudf::test::structs_column_wrapper{nums_member, strings_member}.release(); // Reset null-mask, a posteriori. Nulls will not be pushed down to children. - auto const null_iter = nulls_at({1, 2, 11}); + auto const null_iter_values = nulls_at({1, 2, 11}); + auto const null_iter = null_iter_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_iter, null_iter + num_rows); struct_column->set_null_mask(std::move(null_mask), null_count); diff --git a/cpp/tests/lists/combine/concatenate_list_elements_tests.cpp b/cpp/tests/lists/combine/concatenate_list_elements_tests.cpp index 849cb79f4932..11800dd82e9b 100644 --- a/cpp/tests/lists/combine/concatenate_list_elements_tests.cpp +++ b/cpp/tests/lists/combine/concatenate_list_elements_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -540,7 +540,8 @@ TEST_F(ConcatenateListElementsTest, ListsOfListsOfStructsWithNull) auto child3 = strings_col{"1", "", "3", "4", "5", "", "7", "", "9", "10"}; auto structs = structs_col{{child1, child2, child3}, nulls_at({1, 5, 7})}; auto offsets = int32s_col{0, 2, 3, 3, 6, 8, 10}; - auto const null_it = null_at(2); // null list + auto const null_it_values = null_at(2); + auto const null_it = null_it_values.begin(); // null list auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 6); return cudf::make_lists_column( 6, offsets.release(), structs.release(), null_count, std::move(null_mask)); @@ -599,7 +600,8 @@ TEST_F(ConcatenateListElementsTest, ListsOfListsOfStructsWithNull) auto child3 = strings_col{"4", "5", "", "7", "", "9", "10"}; auto structs = structs_col{{child1, child2, child3}, nulls_at({2, 4})}; auto offsets = int32s_col{0, 0, 3, 7}; - auto const null_it = null_at(0); // null row + auto const null_it_values = null_at(0); + auto const null_it = null_it_values.begin(); // null row auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 3); return cudf::make_lists_column( 3, offsets.release(), structs.release(), null_count, std::move(null_mask)); @@ -621,7 +623,8 @@ TEST_F(ConcatenateListElementsTest, ListsOfListsOfStructsWithNull) auto child3 = strings_col{"4", "5", ""}; auto structs = structs_col{{child1, child2, child3}, null_at(2)}; auto offsets = int32s_col{0, 0, 3}; - auto const null_it = null_at(0); // null row + auto const null_it_values = null_at(0); + auto const null_it = null_it_values.begin(); // null row auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 2); return cudf::make_lists_column( 2, offsets.release(), structs.release(), null_count, std::move(null_mask)); @@ -700,7 +703,8 @@ TEST_F(ConcatenateListElementsTest, ListsOfListsOfStructsHavingListsWithNulls) null_at(3)}; auto structs = structs_col{{child1, child2, child3}}; auto offsets = int32s_col{0, 2, 3, 6, 6, 8, 10}; - auto const null_it = null_at(3); // null list + auto const null_it_values = null_at(3); + auto const null_it = null_it_values.begin(); // null list auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 6); return cudf::make_lists_column( 6, offsets.release(), structs.release(), null_count, std::move(null_mask)); @@ -762,7 +766,8 @@ TEST_F(ConcatenateListElementsTest, ListsOfListsOfStructsHavingListsWithNulls) lists_col{{{1, 1}, {2}, {3, 3}, {7}, {8}, {9, 9}, {10, 10, 10, 10}}, no_nulls()}; auto structs = structs_col{{child1, child2, child3}}; auto offsets = int32s_col{0, 3, 3, 7}; - auto const null_it = null_at(1); // null row + auto const null_it_values = null_at(1); + auto const null_it = null_it_values.begin(); // null row auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 3); return cudf::make_lists_column( 3, offsets.release(), structs.release(), null_count, std::move(null_mask)); @@ -784,7 +789,8 @@ TEST_F(ConcatenateListElementsTest, ListsOfListsOfStructsHavingListsWithNulls) auto child3 = lists_col{{{7}, {8}, {9, 9}, {10, 10, 10, 10}}, no_nulls()}; auto structs = structs_col{{child1, child2, child3}}; auto offsets = int32s_col{0, 0, 4}; - auto const null_it = null_at(0); // null row + auto const null_it_values = null_at(0); + auto const null_it = null_it_values.begin(); // null row auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 2); return cudf::make_lists_column( 2, offsets.release(), structs.release(), null_count, std::move(null_mask)); @@ -841,7 +847,8 @@ TEST_F(ConcatenateListElementsTest, EmptyInnerListColumnWithNullRow) auto inner_elements = cudf::test::fixed_width_column_wrapper{}; auto inner_col = cudf::make_lists_column(0, inner_offsets.release(), inner_elements.release(), 0, {}); - auto const null_it = cudf::test::iterators::null_at(0); + auto const null_it_values = cudf::test::iterators::null_at(0); + auto const null_it = null_it_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 2); auto const col = cudf::make_lists_column( 2, offsets.release(), std::move(inner_col), null_count, std::move(null_mask)); diff --git a/cpp/tests/lists/contains_tests.cpp b/cpp/tests/lists/contains_tests.cpp index e83da89df49b..886f79eaf867 100644 --- a/cpp/tests/lists/contains_tests.cpp +++ b/cpp/tests/lists/contains_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 * */ @@ -1194,8 +1194,9 @@ TYPED_TEST(TypedStructContainsTest, ScalarKeyWithNullLists) 1, 0, 1, 1 }; // clang-format on - auto child = cudf::test::structs_column_wrapper{{data1, data2}}; - auto const validity_iter = nulls_at({3, 10}); + auto child = cudf::test::structs_column_wrapper{{data1, data2}}; + auto const validity_iter_values = nulls_at({3, 10}); + auto const validity_iter = validity_iter_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(validity_iter, validity_iter + 11); return cudf::make_lists_column( @@ -1507,7 +1508,8 @@ TYPED_TEST(TypedStructContainsTest, ColumnKeyWithSlicedListsHavingNulls) }; // clang-format on auto child = cudf::test::structs_column_wrapper{{data1, data2}, nulls_at({1, 10, 15, 24})}; - auto const validity_iter = nulls_at({3, 10}); + auto const validity_iter_values = nulls_at({3, 10}); + auto const validity_iter = validity_iter_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(validity_iter, validity_iter + 11); return cudf::make_lists_column( diff --git a/cpp/tests/lists/stream_compaction/apply_boolean_mask_tests.cpp b/cpp/tests/lists/stream_compaction/apply_boolean_mask_tests.cpp index 4a782ad8e913..d1f73fbe9434 100644 --- a/cpp/tests/lists/stream_compaction/apply_boolean_mask_tests.cpp +++ b/cpp/tests/lists/stream_compaction/apply_boolean_mask_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ #include @@ -136,11 +136,12 @@ TYPED_TEST(ApplyBooleanMaskTypedTest, StructInput) auto constexpr num_input_rows = 7; auto const input = [] { - auto child_num = fwcw{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; - auto child_str = strings{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; - auto const null_mask_begin = null_at(5); - auto const null_mask_end = null_mask_begin + num_input_rows; - auto [null_mask, null_count] = detail::make_null_mask(null_mask_begin, null_mask_end); + auto child_num = fwcw{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; + auto child_str = strings{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; + auto const null_mask_begin_values = null_at(5); + auto const null_mask_begin = null_mask_begin_values.begin(); + auto const null_mask_end = null_mask_begin + num_input_rows; + auto [null_mask, null_count] = detail::make_null_mask(null_mask_begin, null_mask_end); return cudf::make_lists_column(num_input_rows, offsets{0, 2, 3, 6, 6, 8, 8, 10}.release(), structs_column_wrapper{{child_num, child_str}}.release(), @@ -154,11 +155,12 @@ TYPED_TEST(ApplyBooleanMaskTypedTest, StructInput) auto const filter = filter_t{{1, 1}, {0}, {0, 1, 0}, {}, {1, 0}, {}, {0, 1}}; auto const result = apply_boolean_mask(lists_column_view{*input}, lists_column_view{filter}); auto const expected = [] { - auto child_num = fwcw{0, 1, 4, 6, 9}; - auto child_str = strings{"0", "1", "4", "6", "9"}; - auto const null_mask_begin = null_at(5); - auto const null_mask_end = null_mask_begin + num_input_rows; - auto [null_mask, null_count] = detail::make_null_mask(null_mask_begin, null_mask_end); + auto child_num = fwcw{0, 1, 4, 6, 9}; + auto child_str = strings{"0", "1", "4", "6", "9"}; + auto const null_mask_begin_values = null_at(5); + auto const null_mask_begin = null_mask_begin_values.begin(); + auto const null_mask_end = null_mask_begin + num_input_rows; + auto [null_mask, null_count] = detail::make_null_mask(null_mask_begin, null_mask_end); return cudf::make_lists_column(num_input_rows, offsets{0, 2, 2, 3, 3, 4, 4, 5}.release(), structs_column_wrapper{{child_num, child_str}}.release(), @@ -176,11 +178,12 @@ TYPED_TEST(ApplyBooleanMaskTypedTest, StructInput) auto const result = apply_boolean_mask(lists_column_view{sliced_input}, lists_column_view{filter}); auto const expected = [] { - auto child_num = fwcw{4, 6, 9}; - auto child_str = strings{"4", "6", "9"}; - auto const null_mask_begin = null_at(4); - auto const null_mask_end = null_mask_begin + num_input_rows; - auto [null_mask, null_count] = detail::make_null_mask(null_mask_begin, null_mask_end); + auto child_num = fwcw{4, 6, 9}; + auto child_str = strings{"4", "6", "9"}; + auto const null_mask_begin_values = null_at(4); + auto const null_mask_begin = null_mask_begin_values.begin(); + auto const null_mask_end = null_mask_begin + num_input_rows; + auto [null_mask, null_count] = detail::make_null_mask(null_mask_begin, null_mask_end); return cudf::make_lists_column(num_input_rows - 1, offsets{0, 0, 1, 1, 2, 2, 3}.release(), structs_column_wrapper{{child_num, child_str}}.release(), diff --git a/cpp/tests/reductions/distinct_count_tests.cpp b/cpp/tests/reductions/distinct_count_tests.cpp index fd4ce0c9725c..186171f44810 100644 --- a/cpp/tests/reductions/distinct_count_tests.cpp +++ b/cpp/tests/reductions/distinct_count_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -347,7 +347,8 @@ TEST_F(DistinctCount, NullableStructOfStructs) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it = nulls_at({6, 8}); + auto const null_it_values = nulls_at({6, 8}); + auto const null_it = null_it_values.begin(); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 9}); }(); diff --git a/cpp/tests/reductions/rank_tests.cpp b/cpp/tests/reductions/rank_tests.cpp index 5e197a25ca54..f7d49b225594 100644 --- a/cpp/tests/reductions/rank_tests.cpp +++ b/cpp/tests/reductions/rank_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -85,9 +85,10 @@ TYPED_TEST(TypedRankScanTest, RankWithNulls) return make_vector({-120, -120, -120, -16, -16, 5, 6, 6, 6, 6, 34, 113}); return make_vector({5, 5, 5, 6, 6, 9, 11, 11, 11, 11, 14, 34}); }(); - auto const null_iter = cudf::test::iterators::nulls_at({3, 6, 7, 11}); - auto const b = thrust::host_vector(null_iter, null_iter + v.size()); - auto col = this->make_column(v, b); + auto const null_iter_values = cudf::test::iterators::nulls_at({3, 6, 7, 11}); + auto const null_iter = null_iter_values.begin(); + auto const b = thrust::host_vector(null_iter, null_iter + v.size()); + auto col = this->make_column(v, b); auto const expected_dense = rank_result_col{1, 1, 1, 2, 3, 4, 5, 5, 6, 6, 7, 8}; auto const expected_rank = rank_result_col{1, 1, 1, 4, 5, 6, 7, 7, 9, 9, 11, 12}; @@ -219,7 +220,8 @@ TYPED_TEST(TypedRankScanTest, StructsWithNullPushdown) // Next, verify that if the structs column a null mask that is NOT pushed down to members, // the ranks are still correct. { - auto const null_iter = cudf::test::iterators::nulls_at({1, 2}); + auto const null_iter_values = cudf::test::iterators::nulls_at({1, 2}); + auto const null_iter = null_iter_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_iter, null_iter + struct_col->size()); struct_col->set_null_mask(std::move(null_mask), null_count); diff --git a/cpp/tests/reductions/unique_count_tests.cpp b/cpp/tests/reductions/unique_count_tests.cpp index fcf2bfce8011..6bc770f55112 100644 --- a/cpp/tests/reductions/unique_count_tests.cpp +++ b/cpp/tests/reductions/unique_count_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -261,7 +261,8 @@ TEST_F(UniqueCount, NullableStructOfStructs) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it = nulls_at({6, 7}); + auto const null_it_values = nulls_at({6, 7}); + auto const null_it = null_it_values.begin(); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 9}); }(); diff --git a/cpp/tests/reshape/byte_cast_tests.cpp b/cpp/tests/reshape/byte_cast_tests.cpp index cbf6874ea52f..e36ac599cf5d 100644 --- a/cpp/tests/reshape/byte_cast_tests.cpp +++ b/cpp/tests/reshape/byte_cast_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -331,7 +331,8 @@ TEST_F(ByteCastTest, StringValuesWithNulls) // Set nulls by `set_null_mask` so the output column will have non-empty nulls. // This is intentional. - auto const null_iter = cudf::test::iterators::nulls_at({2, 4}); + auto const null_iter_values = cudf::test::iterators::nulls_at({2, 4}); + auto const null_iter = null_iter_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_iter, null_iter + output->size()); output->set_null_mask(std::move(null_mask), null_count); diff --git a/cpp/tests/rolling/collect_ops_test.cpp b/cpp/tests/rolling/collect_ops_test.cpp index 224edcd28647..340a14e565a1 100644 --- a/cpp/tests/rolling/collect_ops_test.cpp +++ b/cpp/tests/rolling/collect_ops_test.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -1252,7 +1252,8 @@ TYPED_TEST(TypedCollectListTest, GroupedTimeRangeRollingWindowOnStructsWithMinPe auto expected_offsets_column = cudf::test::fixed_width_column_wrapper{0, 4, 8, 13, 18, 23, 23, 23, 23, 23} .release(); - auto expected_validity_iter = cudf::test::iterators::nulls_at({5, 6, 7, 8}); + auto expected_validity_iter_values = cudf::test::iterators::nulls_at({5, 6, 7, 8}); + auto expected_validity_iter = expected_validity_iter_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(expected_validity_iter, expected_validity_iter + 9); auto expected_result = cudf::make_lists_column(9, diff --git a/cpp/tests/stream_compaction/distinct_tests.cpp b/cpp/tests/stream_compaction/distinct_tests.cpp index 8fac53ca64b1..7ed59905117b 100644 --- a/cpp/tests/stream_compaction/distinct_tests.cpp +++ b/cpp/tests/stream_compaction/distinct_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -866,7 +866,8 @@ TEST_F(DistinctKeepAny, ListsOfStructs) }(); auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 8, 10, 12, 14, 15, 16, 17, 18}; - auto const null_it = nulls_at({2, 3}); + auto const null_it_values = nulls_at({2, 3}); + auto const null_it = null_it_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 17); @@ -952,7 +953,8 @@ TEST_F(DistinctKeepFirstLastNone, ListsOfStructs) }(); auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 8, 10, 12, 14, 15, 16, 17, 18}; - auto const null_it = nulls_at({2, 3}); + auto const null_it_values = nulls_at({2, 3}); + auto const null_it = null_it_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 17); @@ -1048,7 +1050,8 @@ TEST_F(DistinctKeepAny, SlicedListsOfStructs) }(); auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 8, 10, 12, 14, 15, 16, 17, 18}; - auto const null_it = nulls_at({2, 3}); + auto const null_it_values = nulls_at({2, 3}); + auto const null_it = null_it_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 17); @@ -1211,7 +1214,8 @@ TEST_F(DistinctKeepAny, StructsOfStructs) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it = nulls_at({4, 5}); + auto const null_it_values = nulls_at({4, 5}); + auto const null_it = null_it_values.begin(); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 9}); }(); @@ -1264,7 +1268,8 @@ TEST_F(DistinctKeepAny, SlicedStructsOfStructs) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it = nulls_at({4, 5}); + auto const null_it_values = nulls_at({4, 5}); + auto const null_it = null_it_values.begin(); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 9}); }(); diff --git a/cpp/tests/stream_compaction/stable_distinct_tests.cpp b/cpp/tests/stream_compaction/stable_distinct_tests.cpp index f5e5bbe2a13a..10af401fc86a 100644 --- a/cpp/tests/stream_compaction/stable_distinct_tests.cpp +++ b/cpp/tests/stream_compaction/stable_distinct_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2023-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -805,7 +805,8 @@ TEST_F(StableDistinctKeepAny, ListsOfStructs) }(); auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 8, 10, 12, 14, 15, 16, 17, 18}; - auto const null_it = nulls_at({2, 3}); + auto const null_it_values = nulls_at({2, 3}); + auto const null_it = null_it_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 17); @@ -889,7 +890,8 @@ TEST_F(StableDistinctKeepFirstLastNone, ListsOfStructs) }(); auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 8, 10, 12, 14, 15, 16, 17, 18}; - auto const null_it = nulls_at({2, 3}); + auto const null_it_values = nulls_at({2, 3}); + auto const null_it = null_it_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 17); @@ -982,7 +984,8 @@ TEST_F(StableDistinctKeepAny, SlicedListsOfStructs) }(); auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 8, 10, 12, 14, 15, 16, 17, 18}; - auto const null_it = nulls_at({2, 3}); + auto const null_it_values = nulls_at({2, 3}); + auto const null_it = null_it_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 17); @@ -1148,7 +1151,8 @@ TEST_F(StableDistinctKeepAny, StructsOfStructs) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it = nulls_at({6, 7}); + auto const null_it_values = nulls_at({6, 7}); + auto const null_it = null_it_values.begin(); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 9}); }(); @@ -1202,7 +1206,8 @@ TEST_F(StableDistinctKeepAny, SlicedStructsOfStructs) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it = nulls_at({6, 7}); + auto const null_it_values = nulls_at({6, 7}); + auto const null_it = null_it_values.begin(); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 9}); }(); diff --git a/cpp/tests/stream_compaction/unique_tests.cpp b/cpp/tests/stream_compaction/unique_tests.cpp index cf73f4e739e2..3f051ca390db 100644 --- a/cpp/tests/stream_compaction/unique_tests.cpp +++ b/cpp/tests/stream_compaction/unique_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2025, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -461,7 +461,8 @@ TEST_F(Unique, ListsOfStructsKeepAny) }(); auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 8, 10, 12, 14, 15, 16, 17, 18}; - auto const null_it = nulls_at({2, 3}); + auto const null_it_values = nulls_at({2, 3}); + auto const null_it = null_it_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 17); auto const keys = cudf::column_view(cudf::data_type(cudf::type_id::LIST), @@ -544,7 +545,8 @@ TEST_F(Unique, ListsOfStructsKeepFirstLastNone) }(); auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 8, 10, 12, 14, 15, 16, 17, 18}; - auto const null_it = nulls_at({2, 3}); + auto const null_it_values = nulls_at({2, 3}); + auto const null_it = null_it_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 17); auto const keys = cudf::column_view(cudf::data_type(cudf::type_id::LIST), @@ -708,7 +710,8 @@ TEST_F(Unique, StructsOfStructsKeepAny) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it = nulls_at({6, 7}); + auto const null_it_values = nulls_at({6, 7}); + auto const null_it = null_it_values.begin(); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 9}); }(); diff --git a/cpp/tests/transform/one_hot_encode_tests.cpp b/cpp/tests/transform/one_hot_encode_tests.cpp index 72574afa9d0a..e50e812e9871 100644 --- a/cpp/tests/transform/one_hot_encode_tests.cpp +++ b/cpp/tests/transform/one_hot_encode_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -233,7 +233,8 @@ TEST_F(OneHotEncodingTest, StructsOfStructs) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it = nulls_at({0, 3}); + auto const null_it_values = nulls_at({0, 3}); + auto const null_it = null_it_values.begin(); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 7}); }(); @@ -246,7 +247,8 @@ TEST_F(OneHotEncodingTest, StructsOfStructs) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it = null_at(0); + auto const null_it_values = null_at(0); + auto const null_it = null_it_values.begin(); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 4}); }(); From f084a8cfcd6aaa82c9b65bdee3beef1cfae86be9 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Sat, 1 Aug 2026 06:37:16 +0000 Subject: [PATCH 10/27] Avoid copying validity ranges --- cpp/include/cudf_test/column_wrapper.hpp | 32 ++++++++++++------------ 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/cpp/include/cudf_test/column_wrapper.hpp b/cpp/include/cudf_test/column_wrapper.hpp index 300d5e96b1c6..68a5d5197f28 100644 --- a/cpp/include/cudf_test/column_wrapper.hpp +++ b/cpp/include/cudf_test/column_wrapper.hpp @@ -407,7 +407,7 @@ class fixed_width_column_wrapper : public detail::column_wrapper { * @param v The beginning of the sequence of validity indicators */ template - fixed_width_column_wrapper(InputIterator begin, InputIterator end, ValidityIterator v) + fixed_width_column_wrapper(InputIterator begin, InputIterator end, ValidityIterator&& v) : column_wrapper{} { auto const size = cudf::distance(begin, end); @@ -480,7 +480,7 @@ class fixed_width_column_wrapper : public detail::column_wrapper { * @param v The beginning of the sequence of validity indicators */ template - fixed_width_column_wrapper(std::initializer_list element_list, ValidityIterator v) + fixed_width_column_wrapper(std::initializer_list element_list, ValidityIterator&& v) : fixed_width_column_wrapper(std::cbegin(element_list), std::cend(element_list), v) { } @@ -637,7 +637,7 @@ class fixed_point_column_wrapper : public detail::column_wrapper { template fixed_point_column_wrapper(FixedPointRepIterator begin, FixedPointRepIterator end, - ValidityIterator v, + ValidityIterator&& v, numeric::scale_type scale) : column_wrapper{} { @@ -702,7 +702,7 @@ class fixed_point_column_wrapper : public detail::column_wrapper { */ template fixed_point_column_wrapper(std::initializer_list element_list, - ValidityIterator v, + ValidityIterator&& v, numeric::scale_type scale) : fixed_point_column_wrapper(std::cbegin(element_list), std::cend(element_list), v, scale) { @@ -818,7 +818,7 @@ class strings_column_wrapper : public detail::column_wrapper { * @param v The beginning of the sequence of validity indicators */ template - strings_column_wrapper(StringsIterator begin, StringsIterator end, ValidityIterator v) + strings_column_wrapper(StringsIterator begin, StringsIterator end, ValidityIterator&& v) : column_wrapper{} { size_type num_strings = std::distance(begin, end); @@ -878,7 +878,7 @@ class strings_column_wrapper : public detail::column_wrapper { * @param v The beginning of the sequence of validity indicators */ template - strings_column_wrapper(std::initializer_list strings, ValidityIterator v) + strings_column_wrapper(std::initializer_list strings, ValidityIterator&& v) : strings_column_wrapper(std::cbegin(strings), std::cend(strings), v) { } @@ -1017,7 +1017,7 @@ class dictionary_column_wrapper : public detail::column_wrapper { * @param v The beginning of the sequence of validity indicators */ template - dictionary_column_wrapper(InputIterator begin, InputIterator end, ValidityIterator v) + dictionary_column_wrapper(InputIterator begin, InputIterator end, ValidityIterator&& v) : column_wrapper{} { wrapped = cudf::dictionary::encode( @@ -1089,7 +1089,7 @@ class dictionary_column_wrapper : public detail::column_wrapper { * @param v The beginning of the sequence of validity indicators */ template - dictionary_column_wrapper(std::initializer_list element_list, ValidityIterator v) + dictionary_column_wrapper(std::initializer_list element_list, ValidityIterator&& v) : dictionary_column_wrapper(std::cbegin(element_list), std::cend(element_list), v) { } @@ -1220,7 +1220,7 @@ class dictionary_column_wrapper : public detail::column_wrapper { * @param v The beginning of the sequence of validity indicators */ template - dictionary_column_wrapper(StringsIterator begin, StringsIterator end, ValidityIterator v) + dictionary_column_wrapper(StringsIterator begin, StringsIterator end, ValidityIterator&& v) : column_wrapper{} { wrapped = cudf::dictionary::encode(strings_column_wrapper(begin, end, v), @@ -1264,7 +1264,7 @@ class dictionary_column_wrapper : public detail::column_wrapper { * @param v The beginning of the sequence of validity indicators */ template - dictionary_column_wrapper(std::initializer_list strings, ValidityIterator v) + dictionary_column_wrapper(std::initializer_list strings, ValidityIterator&& v) : dictionary_column_wrapper(std::cbegin(strings), std::cend(strings), v) { } @@ -1396,7 +1396,7 @@ class lists_column_wrapper : public detail::column_wrapper { template ()>* = nullptr> - lists_column_wrapper(std::initializer_list elements, ValidityIterator v) + lists_column_wrapper(std::initializer_list elements, ValidityIterator&& v) : column_wrapper{} { build_from_non_nested( @@ -1424,7 +1424,7 @@ class lists_column_wrapper : public detail::column_wrapper { typename InputIterator, typename ValidityIterator, std::enable_if_t()>* = nullptr> - lists_column_wrapper(InputIterator begin, InputIterator end, ValidityIterator v) + lists_column_wrapper(InputIterator begin, InputIterator end, ValidityIterator&& v) : column_wrapper{} { build_from_non_nested( @@ -1470,7 +1470,7 @@ class lists_column_wrapper : public detail::column_wrapper { template >* = nullptr> - lists_column_wrapper(std::initializer_list elements, ValidityIterator v) + lists_column_wrapper(std::initializer_list elements, ValidityIterator&& v) : column_wrapper{} { build_from_non_nested( @@ -1548,7 +1548,7 @@ class lists_column_wrapper : public detail::column_wrapper { */ template lists_column_wrapper(std::initializer_list> elements, - ValidityIterator v) + ValidityIterator&& v) : column_wrapper{} { std::vector validity; @@ -1917,7 +1917,7 @@ class structs_column_wrapper : public detail::column_wrapper { template structs_column_wrapper( std::initializer_list> child_column_wrappers, - V validity_iter) + V&& validity_iter) { std::vector> child_columns; child_columns.reserve(child_column_wrappers.size()); @@ -1959,7 +1959,7 @@ class structs_column_wrapper : public detail::column_wrapper { } template - void init(std::vector>&& child_columns, V validity_iterator) + void init(std::vector>&& child_columns, V&& validity_iterator) { size_type const num_rows = child_columns.empty() ? 0 : child_columns[0]->size(); From d04d3bc33ef4b1c5bd053bb4adee8b7c4196000b Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Sat, 1 Aug 2026 06:39:38 +0000 Subject: [PATCH 11/27] Fix struct validity overload resolution --- cpp/include/cudf_test/column_wrapper.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/include/cudf_test/column_wrapper.hpp b/cpp/include/cudf_test/column_wrapper.hpp index 68a5d5197f28..ccda301479a4 100644 --- a/cpp/include/cudf_test/column_wrapper.hpp +++ b/cpp/include/cudf_test/column_wrapper.hpp @@ -1855,7 +1855,7 @@ class structs_column_wrapper : public detail::column_wrapper { structs_column_wrapper(std::vector>&& child_columns, std::vector const& validity = {}) { - init(std::move(child_columns), validity); + init(std::move(child_columns), static_cast const&>(validity)); } /** From 310508b197b3672ccee11fe3af01165024f3e28d Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Sat, 1 Aug 2026 06:41:56 +0000 Subject: [PATCH 12/27] Fix struct validity overload dispatch --- cpp/include/cudf_test/column_wrapper.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/include/cudf_test/column_wrapper.hpp b/cpp/include/cudf_test/column_wrapper.hpp index ccda301479a4..b3331751876b 100644 --- a/cpp/include/cudf_test/column_wrapper.hpp +++ b/cpp/include/cudf_test/column_wrapper.hpp @@ -1855,7 +1855,7 @@ class structs_column_wrapper : public detail::column_wrapper { structs_column_wrapper(std::vector>&& child_columns, std::vector const& validity = {}) { - init(std::move(child_columns), static_cast const&>(validity)); + init(std::move(child_columns), validity); } /** @@ -1972,7 +1972,7 @@ class structs_column_wrapper : public detail::column_wrapper { auto const validity_iter = detail::validity_begin(validity_iterator); std::copy(validity_iter, validity_iter + num_rows, validity.begin()); - init(std::move(child_columns), validity); + init(std::move(child_columns), static_cast const&>(validity)); } }; From 35c9b60bc9462236045889482e01801468caca20 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Sat, 1 Aug 2026 06:47:20 +0000 Subject: [PATCH 13/27] Keep list null-mask views alive --- cpp/tests/lists/contains_tests.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/cpp/tests/lists/contains_tests.cpp b/cpp/tests/lists/contains_tests.cpp index 886f79eaf867..e66f036474d1 100644 --- a/cpp/tests/lists/contains_tests.cpp +++ b/cpp/tests/lists/contains_tests.cpp @@ -323,7 +323,8 @@ TYPED_TEST(TypedContainsTest, ScalarKeysWithNullsInLists) auto numerals = cudf::test::fixed_width_column_wrapper{ {X, 1, 2, X, 4, 5, X, 7, 8, X, X, 1, 2, X, 1}, nulls_at({0, 3, 6, 9, 10, 13})}; - auto input_null_mask_iter = null_at(4); + auto input_null_mask_values = null_at(4); + auto input_null_mask_iter = input_null_mask_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(input_null_mask_iter, input_null_mask_iter + 8); @@ -367,7 +368,8 @@ TEST_F(ContainsTest, BoolScalarWithNullsInLists) auto numerals = cudf::test::fixed_width_column_wrapper{ {X, 1, 1, X, 1, 1, X, 1, 1, X, X, 1, 1, X, 1}, nulls_at({0, 3, 6, 9, 10, 13})}; - auto input_null_mask_iter = null_at(4); + auto input_null_mask_values = null_at(4); + auto input_null_mask_iter = input_null_mask_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(input_null_mask_iter, input_null_mask_iter + 8); auto search_space = cudf::make_lists_column( @@ -412,7 +414,8 @@ TEST_F(ContainsTest, StringScalarWithNullsInLists) auto strings = cudf::test::strings_column_wrapper{ {"X", "1", "2", "X", "4", "5", "X", "7", "8", "X", "X", "1", "2", "X", "1"}, nulls_at({0, 3, 6, 9, 10, 13})}; - auto input_null_mask_iter = null_at(4); + auto input_null_mask_values = null_at(4); + auto input_null_mask_iter = input_null_mask_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(input_null_mask_iter, input_null_mask_iter + 8); auto search_space = cudf::make_lists_column(8, @@ -650,7 +653,9 @@ TYPED_TEST(TypedVectorContainsTest, VectorWithNullsInLists) auto numerals = cudf::test::fixed_width_column_wrapper{ {X, 1, 2, X, 4, 5, X, 7, 8, X, X, 1, 2, X, 1}, nulls_at({0, 3, 6, 9, 10, 13})}; - auto input_null_mask_iter = null_at(4); + auto input_null_mask_values = null_at(4); + + auto input_null_mask_iter = input_null_mask_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(input_null_mask_iter, input_null_mask_iter + 8); auto search_space = cudf::make_lists_column(8, @@ -689,7 +694,9 @@ TYPED_TEST(TypedVectorContainsTest, ListContainsVectorWithNullsInListsAndInSearc auto numerals = cudf::test::fixed_width_column_wrapper{ {X, 1, 2, X, 4, 5, X, 7, 8, X, X, 1, 2, X, 1}, nulls_at({0, 3, 6, 9, 10, 13})}; - auto input_null_mask_iter = null_at(4); + auto input_null_mask_values = null_at(4); + + auto input_null_mask_iter = input_null_mask_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(input_null_mask_iter, input_null_mask_iter + 8); auto search_space = cudf::make_lists_column(8, @@ -729,7 +736,9 @@ TEST_F(ContainsTest, BoolKeyVectorWithNullsInListsAndInSearchKeys) auto numerals = cudf::test::fixed_width_column_wrapper{ {X, 0, 1, X, 1, 1, X, 1, 1, X, X, 0, 1, X, 1}, nulls_at({0, 3, 6, 9, 10, 13})}; - auto input_null_mask_iter = null_at(4); + auto input_null_mask_values = null_at(4); + + auto input_null_mask_iter = input_null_mask_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(input_null_mask_iter, input_null_mask_iter + 8); auto search_space = cudf::make_lists_column(8, @@ -767,7 +776,8 @@ TEST_F(ContainsTest, StringKeyVectorWithNullsInListsAndInSearchKeys) auto strings = cudf::test::strings_column_wrapper{ {"X", "1", "2", "X", "4", "5", "X", "7", "8", "X", "X", "1", "2", "X", "1"}, nulls_at({0, 3, 6, 9, 10, 13})}; - auto input_null_mask_iter = null_at(4); + auto input_null_mask_values = null_at(4); + auto input_null_mask_iter = input_null_mask_values.begin(); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(input_null_mask_iter, input_null_mask_iter + 8); auto search_space = cudf::make_lists_column( From d8acca5e7fb77e80e8b903c2660c0ae555e9d631 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Sat, 1 Aug 2026 07:05:00 +0000 Subject: [PATCH 14/27] Keep remaining null-mask views alive --- cpp/tests/copying/copy_if_else_nested_tests.cpp | 16 +++++++++------- cpp/tests/stream_compaction/distinct_tests.cpp | 8 +++++--- .../stream_compaction/stable_distinct_tests.cpp | 8 +++++--- cpp/tests/stream_compaction/unique_tests.cpp | 8 +++++--- 4 files changed, 24 insertions(+), 16 deletions(-) diff --git a/cpp/tests/copying/copy_if_else_nested_tests.cpp b/cpp/tests/copying/copy_if_else_nested_tests.cpp index 2c383acd73b9..d7687045d80c 100644 --- a/cpp/tests/copying/copy_if_else_nested_tests.cpp +++ b/cpp/tests/copying/copy_if_else_nested_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -322,12 +322,14 @@ TYPED_TEST(TypedCopyIfElseNestedTest, ListsWithStructs) using bools = cudf::test::fixed_width_column_wrapper; using offsets = cudf::test::fixed_width_column_wrapper; - auto const null_at_0 = null_at(0); - auto const null_at_3 = null_at(3); - auto const null_at_4 = null_at(4); - auto const null_at_6 = null_at(6); - auto const null_at_7 = null_at(7); - auto const null_at_8 = null_at(8); + auto const null_at_0_values = null_at(0); + auto const null_at_0 = null_at_0_values.begin(); + auto const null_at_3 = null_at(3); + auto const null_at_4_values = null_at(4); + auto const null_at_4 = null_at_4_values.begin(); + auto const null_at_6 = null_at(6); + auto const null_at_7 = null_at(7); + auto const null_at_8 = null_at(8); auto lhs_ints = ints{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, null_at_3}; auto lhs_strings = strings{{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, null_at_4}; diff --git a/cpp/tests/stream_compaction/distinct_tests.cpp b/cpp/tests/stream_compaction/distinct_tests.cpp index 7ed59905117b..1806b60769a6 100644 --- a/cpp/tests/stream_compaction/distinct_tests.cpp +++ b/cpp/tests/stream_compaction/distinct_tests.cpp @@ -1105,7 +1105,8 @@ TEST_F(DistinctKeepAny, ListsOfEmptyStructs) // 11. [{}, {}] == // 12. [{}, {}] - auto const structs_null_it = nulls_at({0, 1, 2, 3, 4, 5, 6, 7}); + auto const structs_null_values = nulls_at({0, 1, 2, 3, 4, 5, 6, 7}); + auto const structs_null_it = structs_null_values.begin(); auto [structs_null_mask, structs_null_count] = cudf::test::detail::make_null_mask(structs_null_it, structs_null_it + 14); auto const structs = @@ -1115,8 +1116,9 @@ TEST_F(DistinctKeepAny, ListsOfEmptyStructs) static_cast(structs_null_mask.data()), structs_null_count); - auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 4, 6, 7, 8, 9, 10, 12, 14}; - auto const lists_null_it = nulls_at({2, 3}); + auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 4, 6, 7, 8, 9, 10, 12, 14}; + auto const lists_null_values = nulls_at({2, 3}); + auto const lists_null_it = lists_null_values.begin(); auto [lists_null_mask, lists_null_count] = cudf::test::detail::make_null_mask(lists_null_it, lists_null_it + 13); auto const keys = diff --git a/cpp/tests/stream_compaction/stable_distinct_tests.cpp b/cpp/tests/stream_compaction/stable_distinct_tests.cpp index 10af401fc86a..d5d09e0474ab 100644 --- a/cpp/tests/stream_compaction/stable_distinct_tests.cpp +++ b/cpp/tests/stream_compaction/stable_distinct_tests.cpp @@ -1040,7 +1040,8 @@ TEST_F(StableDistinctKeepAny, ListsOfEmptyStructs) // 11. [{}, {}] == // 12. [{}, {}] - auto const structs_null_it = nulls_at({0, 1, 2, 3, 4, 5, 6, 7}); + auto const structs_null_values = nulls_at({0, 1, 2, 3, 4, 5, 6, 7}); + auto const structs_null_it = structs_null_values.begin(); auto [structs_null_mask, structs_null_count] = cudf::test::detail::make_null_mask(structs_null_it, structs_null_it + 14); auto const structs = @@ -1050,8 +1051,9 @@ TEST_F(StableDistinctKeepAny, ListsOfEmptyStructs) static_cast(structs_null_mask.data()), structs_null_count); - auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 4, 6, 7, 8, 9, 10, 12, 14}; - auto const lists_null_it = nulls_at({2, 3}); + auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 4, 6, 7, 8, 9, 10, 12, 14}; + auto const lists_null_values = nulls_at({2, 3}); + auto const lists_null_it = lists_null_values.begin(); auto [lists_null_mask, lists_null_count] = cudf::test::detail::make_null_mask(lists_null_it, lists_null_it + 13); auto const keys = diff --git a/cpp/tests/stream_compaction/unique_tests.cpp b/cpp/tests/stream_compaction/unique_tests.cpp index 3f051ca390db..ed76729d294b 100644 --- a/cpp/tests/stream_compaction/unique_tests.cpp +++ b/cpp/tests/stream_compaction/unique_tests.cpp @@ -605,7 +605,8 @@ TEST_F(Unique, ListsOfEmptyStructsKeepAny) // 11. [{}, {}] == // 12. [{}, {}] - auto const structs_null_it = nulls_at({0, 1, 2, 3, 4, 5, 6, 7}); + auto const structs_null_values = nulls_at({0, 1, 2, 3, 4, 5, 6, 7}); + auto const structs_null_it = structs_null_values.begin(); auto [structs_null_mask, structs_null_count] = cudf::test::detail::make_null_mask(structs_null_it, structs_null_it + 14); auto const structs = @@ -615,8 +616,9 @@ TEST_F(Unique, ListsOfEmptyStructsKeepAny) static_cast(structs_null_mask.data()), structs_null_count); - auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 4, 6, 7, 8, 9, 10, 12, 14}; - auto const lists_null_it = nulls_at({2, 3}); + auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 4, 6, 7, 8, 9, 10, 12, 14}; + auto const lists_null_values = nulls_at({2, 3}); + auto const lists_null_it = lists_null_values.begin(); auto [lists_null_mask, lists_null_count] = cudf::test::detail::make_null_mask(lists_null_it, lists_null_it + 13); auto const keys = From 1e0b3d2a09de627d7481ddfc3ff0a2addf4b0d42 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Mon, 3 Aug 2026 17:04:58 +0000 Subject: [PATCH 15/27] Initialize JSON offsets with a zipped fill --- cpp/src/io/json/host_tree_algorithms.cu | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/cpp/src/io/json/host_tree_algorithms.cu b/cpp/src/io/json/host_tree_algorithms.cu index c9e42182983d..fdb697a00867 100644 --- a/cpp/src/io/json/host_tree_algorithms.cu +++ b/cpp/src/io/json/host_tree_algorithms.cu @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -523,13 +524,9 @@ void make_device_json_column(device_span input, col.string_offsets.resize(max_row_offsets[i] + 1, stream); col.string_lengths.resize(max_row_offsets[i] + 1, stream); thrust::fill(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), - col.string_offsets.begin(), - col.string_offsets.end(), - 0); - thrust::fill(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), - col.string_lengths.begin(), - col.string_lengths.end(), - 0); + cuda::make_zip_iterator(col.string_offsets.begin(), col.string_lengths.begin()), + cuda::make_zip_iterator(col.string_offsets.end(), col.string_lengths.end()), + cuda::std::make_tuple(0, 0)); } else if (column_category == NC_LIST) { col.child_offsets.resize(max_row_offsets[i] + 2, stream); thrust::uninitialized_fill( From fbf799d21cfe1fe77106d45569447372d5ff2882 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Mon, 3 Aug 2026 17:06:45 +0000 Subject: [PATCH 16/27] Use a constant source for JSON offset initialization --- cpp/src/io/json/host_tree_algorithms.cu | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/cpp/src/io/json/host_tree_algorithms.cu b/cpp/src/io/json/host_tree_algorithms.cu index fdb697a00867..95829fa8c201 100644 --- a/cpp/src/io/json/host_tree_algorithms.cu +++ b/cpp/src/io/json/host_tree_algorithms.cu @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include @@ -523,10 +522,13 @@ void make_device_json_column(device_span input, } else if (column_category == NC_VAL || column_category == NC_STR) { col.string_offsets.resize(max_row_offsets[i] + 1, stream); col.string_lengths.resize(max_row_offsets[i] + 1, stream); - thrust::fill(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), - cuda::make_zip_iterator(col.string_offsets.begin(), col.string_lengths.begin()), - cuda::make_zip_iterator(col.string_offsets.end(), col.string_lengths.end()), - cuda::std::make_tuple(0, 0)); + auto const zero = cuda::make_constant_iterator(device_json_column::row_offset_t{0}); + thrust::transform( + rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), + zero, + zero + col.string_offsets.size(), + cuda::make_zip_iterator(col.string_offsets.begin(), col.string_lengths.begin()), + [] __device__(auto value) { return cuda::std::make_tuple(value, value); }); } else if (column_category == NC_LIST) { col.child_offsets.resize(max_row_offsets[i] + 2, stream); thrust::uninitialized_fill( From 31667e91019f52672bbd8ca8530e6aeba48d2845 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Mon, 3 Aug 2026 17:07:45 +0000 Subject: [PATCH 17/27] Hoist JSON offset duplication functor --- cpp/src/io/json/host_tree_algorithms.cu | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cpp/src/io/json/host_tree_algorithms.cu b/cpp/src/io/json/host_tree_algorithms.cu index 95829fa8c201..e518cefcf7d7 100644 --- a/cpp/src/io/json/host_tree_algorithms.cu +++ b/cpp/src/io/json/host_tree_algorithms.cu @@ -514,6 +514,10 @@ void make_device_json_column(device_span input, } }; + auto const duplicate_value = [] __device__(device_json_column::row_offset_t value) { + return cuda::std::make_tuple(value, value); + }; + auto initialize_json_columns = [&](auto i, auto& col_ref, auto column_category) { auto& col = col_ref.get(); if (col.type != json_col_t::Unknown) { return; } @@ -528,7 +532,7 @@ void make_device_json_column(device_span input, zero, zero + col.string_offsets.size(), cuda::make_zip_iterator(col.string_offsets.begin(), col.string_lengths.begin()), - [] __device__(auto value) { return cuda::std::make_tuple(value, value); }); + duplicate_value); } else if (column_category == NC_LIST) { col.child_offsets.resize(max_row_offsets[i] + 2, stream); thrust::uninitialized_fill( From bc0bd5cda54ddb423d8ffde035d9d408964b81bc Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Wed, 5 Aug 2026 17:04:55 +0000 Subject: [PATCH 18/27] Use input transform iterator for JSON scatter --- cpp/src/io/json/json_tree.cu | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/cpp/src/io/json/json_tree.cu b/cpp/src/io/json/json_tree.cu index 06e1a634fa6f..f0564bd8c484 100644 --- a/cpp/src/io/json/json_tree.cu +++ b/cpp/src/io/json/json_tree.cu @@ -498,10 +498,9 @@ tree_meta_t get_tree_representation(device_span tokens, stream); // scatter to node_range_end for only nested end tokens. - auto token_indices_it = - cuda::make_permutation_iterator(token_indices.begin(), token_id.begin()); - auto nested_node_range_end_it = - cuda::make_transform_output_iterator(node_range_end.begin(), [] __device__(auto i) { + auto token_indices_it = cuda::transform_iterator( + cuda::make_permutation_iterator(token_indices.begin(), token_id.begin()), + [] __device__(auto i) -> SymbolOffsetT { // add +1 to include end symbol. return i + 1; }); @@ -511,7 +510,7 @@ tree_meta_t get_tree_representation(device_span tokens, token_indices_it + num_nested, parent_node_ids.begin(), stencil, - nested_node_range_end_it); + node_range_end.begin()); } return {std::move(node_categories), From 72f6a8ebef907651d14ea066a38fadc8400e40aa Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Wed, 5 Aug 2026 17:22:47 +0000 Subject: [PATCH 19/27] Materialize explode offset iterator tuple --- cpp/src/lists/explode.cu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/src/lists/explode.cu b/cpp/src/lists/explode.cu index e594b0879d88..ae2add1a019d 100644 --- a/cpp/src/lists/explode.cu +++ b/cpp/src/lists/explode.cu @@ -201,7 +201,7 @@ std::unique_ptr
explode_outer(table_view const& input_table, // number of nulls or empty lists found so far in the explode column rmm::device_uvector null_or_empty_offset(explode_col.size(), stream); - auto const offset_pairs = cuda::make_zip_iterator(offsets, offsets + 1); + auto const offset_pairs = cuda::make_zip_iterator(cuda::std::make_tuple(offsets, offsets + 1)); auto null_or_empty = cuda::transform_iterator( offset_pairs, cuda::proclaim_return_type([] __device__(auto const& pair) { return cuda::std::get<1>(pair) != cuda::std::get<0>(pair) ? 0 : 1; From 163bcb37b2f7f1d30b68c94c8dfffa8e99fdc7c2 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Wed, 5 Aug 2026 17:26:34 +0000 Subject: [PATCH 20/27] Keep indexed traversal for explode offsets --- cpp/src/lists/explode.cu | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cpp/src/lists/explode.cu b/cpp/src/lists/explode.cu index ae2add1a019d..89c86881b14d 100644 --- a/cpp/src/lists/explode.cu +++ b/cpp/src/lists/explode.cu @@ -21,7 +21,6 @@ #include #include #include -#include #include #include #include @@ -201,11 +200,12 @@ std::unique_ptr
explode_outer(table_view const& input_table, // number of nulls or empty lists found so far in the explode column rmm::device_uvector null_or_empty_offset(explode_col.size(), stream); - auto const offset_pairs = cuda::make_zip_iterator(cuda::std::make_tuple(offsets, offsets + 1)); - auto null_or_empty = cuda::transform_iterator( - offset_pairs, cuda::proclaim_return_type([] __device__(auto const& pair) { - return cuda::std::get<1>(pair) != cuda::std::get<0>(pair) ? 0 : 1; - })); + auto null_or_empty = cuda::transform_iterator( + cuda::counting_iterator{0}, + cuda::proclaim_return_type( + [offsets, offsets_size = explode_col.size() - 1] __device__(int idx) { + return (idx > offsets_size || (offsets[idx + 1] != offsets[idx])) ? 0 : 1; + })); thrust::inclusive_scan(rmm::exec_policy_nosync(stream, cudf::get_current_device_resource_ref()), null_or_empty, null_or_empty + explode_col.size(), From 8888454110e0a44e35d53151aa1a7aa77c9650ce Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Wed, 5 Aug 2026 17:50:40 +0000 Subject: [PATCH 21/27] Apply clang-format --- cpp/include/cudf/strings/detail/gather.cuh | 2 +- cpp/src/jit/helpers.cpp | 4 +- .../iterator/value_iterator_test_transform.cu | 2 +- cpp/tests/strings/split_tests.cpp | 114 +++++++++--------- 4 files changed, 61 insertions(+), 61 deletions(-) diff --git a/cpp/include/cudf/strings/detail/gather.cuh b/cpp/include/cudf/strings/detail/gather.cuh index 124434da2170..e18f7379836a 100644 --- a/cpp/include/cudf/strings/detail/gather.cuh +++ b/cpp/include/cudf/strings/detail/gather.cuh @@ -24,10 +24,10 @@ #include #include +#include #include #include #include -#include #include diff --git a/cpp/src/jit/helpers.cpp b/cpp/src/jit/helpers.cpp index e5c97ee9c38b..061ec9a4a8d5 100644 --- a/cpp/src/jit/helpers.cpp +++ b/cpp/src/jit/helpers.cpp @@ -9,14 +9,14 @@ #include #include +#include + #include #include #include #include -#include - namespace cudf { namespace jit { diff --git a/cpp/tests/iterator/value_iterator_test_transform.cu b/cpp/tests/iterator/value_iterator_test_transform.cu index abfbe7837305..3fce5be970fd 100644 --- a/cpp/tests/iterator/value_iterator_test_transform.cu +++ b/cpp/tests/iterator/value_iterator_test_transform.cu @@ -7,8 +7,8 @@ #include #include -#include #include +#include struct TransformedIteratorTest : public IteratorTest {}; diff --git a/cpp/tests/strings/split_tests.cpp b/cpp/tests/strings/split_tests.cpp index 0335e47462ce..74e6e03ae3ea 100644 --- a/cpp/tests/strings/split_tests.cpp +++ b/cpp/tests/strings/split_tests.cpp @@ -29,9 +29,9 @@ TEST_F(StringsSplitTest, Split) std::vector h_strings{ "Héllo thesé", nullptr, "are some", "tést String", "", "no-delimiter"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::strings_column_view strings_view(strings); std::vector h_expected1{"Héllo", nullptr, "are", "tést", "", "no-delimiter"}; @@ -119,9 +119,9 @@ TEST_F(StringsSplitTest, RSplit) std::vector h_strings{ "héllo", nullptr, "a_bc_déf", "a__bc", "_ab_cd", "ab_cd_", "", " a b ", " a bbb c"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::strings_column_view strings_view(strings); std::vector h_expected1{ @@ -176,9 +176,9 @@ TEST_F(StringsSplitTest, RSplitWhitespace) { std::vector h_strings{"héllo", nullptr, "a_bc_déf", "", " a\tb ", " a\r bbb c"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::strings_column_view strings_view(strings); std::vector h_expected1{"héllo", nullptr, "a_bc_déf", nullptr, "a", "a"}; @@ -926,28 +926,28 @@ TEST_F(StringsSplitTest, Partition) "_", "_", "", "", "", nullptr, "bc_déf", "_bc", "ab_cd", "cd_", "", ""}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::strings_column_view strings_view(strings); auto results = cudf::strings::partition(strings_view, cudf::string_scalar("_")); EXPECT_TRUE(results->num_columns() == 3); auto exp_itr = h_expecteds.begin(); cudf::test::strings_column_wrapper expected1( - exp_itr, - exp_itr + h_strings.size(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + exp_itr, exp_itr + h_strings.size(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); exp_itr += h_strings.size(); cudf::test::strings_column_wrapper expected2( - exp_itr, - exp_itr + h_strings.size(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + exp_itr, exp_itr + h_strings.size(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); exp_itr += h_strings.size(); cudf::test::strings_column_wrapper expected3( - exp_itr, - exp_itr + h_strings.size(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + exp_itr, exp_itr + h_strings.size(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); std::vector> expected_columns; expected_columns.push_back(expected1.release()); expected_columns.push_back(expected2.release()); @@ -966,28 +966,28 @@ TEST_F(StringsSplitTest, PartitionWhitespace) "", nullptr, "bc déf", " bc", "ab cd", "cd ", "", ""}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::strings_column_view strings_view(strings); auto results = cudf::strings::partition(strings_view); EXPECT_TRUE(results->num_columns() == 3); auto exp_itr = h_expecteds.begin(); cudf::test::strings_column_wrapper expected1( - exp_itr, - exp_itr + h_strings.size(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + exp_itr, exp_itr + h_strings.size(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); exp_itr += h_strings.size(); cudf::test::strings_column_wrapper expected2( - exp_itr, - exp_itr + h_strings.size(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + exp_itr, exp_itr + h_strings.size(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); exp_itr += h_strings.size(); cudf::test::strings_column_wrapper expected3( - exp_itr, - exp_itr + h_strings.size(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + exp_itr, exp_itr + h_strings.size(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); std::vector> expected_columns; expected_columns.push_back(expected1.release()); expected_columns.push_back(expected2.release()); @@ -1006,28 +1006,28 @@ TEST_F(StringsSplitTest, RPartition) "héllo", nullptr, "déf", "bc", "cd", "", "", " a b "}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::strings_column_view strings_view(strings); auto results = cudf::strings::rpartition(strings_view, cudf::string_scalar("_")); EXPECT_TRUE(results->num_columns() == 3); auto exp_itr = h_expecteds.begin(); cudf::test::strings_column_wrapper expected1( - exp_itr, - exp_itr + h_strings.size(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + exp_itr, exp_itr + h_strings.size(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); exp_itr += h_strings.size(); cudf::test::strings_column_wrapper expected2( - exp_itr, - exp_itr + h_strings.size(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + exp_itr, exp_itr + h_strings.size(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); exp_itr += h_strings.size(); cudf::test::strings_column_wrapper expected3( - exp_itr, - exp_itr + h_strings.size(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + exp_itr, exp_itr + h_strings.size(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); std::vector> expected_columns; expected_columns.push_back(expected1.release()); expected_columns.push_back(expected2.release()); @@ -1046,28 +1046,28 @@ TEST_F(StringsSplitTest, RPartitionWhitespace) "héllo", nullptr, "déf", "bc", "cd", "", "", "a_b"}; cudf::test::strings_column_wrapper strings( - h_strings.begin(), - h_strings.end(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + h_strings.begin(), h_strings.end(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); cudf::strings_column_view strings_view(strings); auto results = cudf::strings::rpartition(strings_view); EXPECT_TRUE(results->num_columns() == 3); auto exp_itr = h_expecteds.begin(); cudf::test::strings_column_wrapper expected1( - exp_itr, - exp_itr + h_strings.size(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + exp_itr, exp_itr + h_strings.size(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); exp_itr += h_strings.size(); cudf::test::strings_column_wrapper expected2( - exp_itr, - exp_itr + h_strings.size(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + exp_itr, exp_itr + h_strings.size(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); exp_itr += h_strings.size(); cudf::test::strings_column_wrapper expected3( - exp_itr, - exp_itr + h_strings.size(), - cuda::transform_iterator(h_strings.begin(), [](auto str) { return str != nullptr; })); + exp_itr, exp_itr + h_strings.size(), cuda::transform_iterator(h_strings.begin(), [](auto str) { + return str != nullptr; + })); std::vector> expected_columns; expected_columns.push_back(expected1.release()); expected_columns.push_back(expected2.release()); From 401c60e3945f2492c0ce13583809062e71478219 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Wed, 5 Aug 2026 18:47:01 +0000 Subject: [PATCH 22/27] Update copyright notices --- cpp/benchmarks/iterator/iterator.cu | 2 +- cpp/benchmarks/transpose/transpose.cpp | 2 +- cpp/include/cudf/detail/indexalator.cuh | 2 +- cpp/include/cudf/detail/iterator.cuh | 2 +- cpp/include/cudf/detail/utilities/transform_unary_functions.cuh | 2 +- cpp/include/cudf/strings/detail/scatter.cuh | 2 +- cpp/include/cudf/strings/detail/strings_column_factories.cuh | 2 +- cpp/include/cudf_test/column_utilities.hpp | 2 +- cpp/include/cudf_test/print_utilities.cuh | 2 +- cpp/src/column/column.cu | 2 +- cpp/src/column/column_view.cpp | 2 +- cpp/src/copying/gather.cu | 2 +- cpp/src/copying/segmented_shift.cu | 2 +- cpp/src/groupby/sort/group_count.cu | 2 +- cpp/src/groupby/sort/group_nth_element.cu | 2 +- cpp/src/groupby/sort/group_nunique.cu | 2 +- cpp/src/groupby/sort/group_scan_util.cuh | 2 +- cpp/src/groupby/sort/group_std.cu | 2 +- cpp/src/io/csv/durations.cu | 2 +- cpp/src/lists/combine/concatenate_rows.cu | 2 +- cpp/src/quantiles/quantiles.cu | 2 +- cpp/src/quantiles/tdigest/tdigest.cu | 2 +- cpp/src/reductions/all.cu | 2 +- cpp/src/reductions/any.cu | 2 +- cpp/src/reductions/compound.cuh | 2 +- cpp/src/reductions/nth_element.cu | 2 +- cpp/src/reductions/segmented/compound.cuh | 2 +- cpp/src/reductions/simple.cuh | 2 +- cpp/src/reshape/interleave_columns.cu | 2 +- cpp/src/reshape/table_to_array.cu | 2 +- cpp/src/reshape/tile.cu | 2 +- cpp/src/rolling/detail/rolling_collect_list.cuh | 2 +- cpp/src/strings/search/contains_multiple.cu | 2 +- cpp/src/strings/strings_column_factories.cu | 2 +- cpp/src/text/deduplicate.cu | 2 +- cpp/src/transpose/transpose.cu | 2 +- cpp/src/utilities/linked_column.cpp | 2 +- cpp/tests/copying/utility_tests.cpp | 2 +- cpp/tests/partitioning/hash_partition_test.cpp | 2 +- cpp/tests/rolling/grouped_rolling_range_test.cpp | 2 +- cpp/tests/rolling/lead_lag_test.cpp | 2 +- cpp/tests/rolling/nth_element_test.cpp | 2 +- cpp/tests/rolling/range_rolling_window_test.cpp | 2 +- cpp/tests/search/search_test.cpp | 2 +- cpp/tests/streams/strings/attributes_test.cpp | 2 +- cpp/tests/strings/attrs_tests.cpp | 2 +- cpp/tests/strings/booleans_tests.cpp | 2 +- cpp/tests/strings/case_tests.cpp | 2 +- cpp/tests/strings/chars_types_tests.cpp | 2 +- cpp/tests/strings/combine/concatenate_tests.cpp | 2 +- cpp/tests/strings/combine/join_strings_tests.cpp | 2 +- cpp/tests/strings/datetime_tests.cpp | 2 +- cpp/tests/strings/durations_tests.cpp | 2 +- cpp/tests/strings/find_multiple_tests.cpp | 2 +- cpp/tests/strings/find_tests.cpp | 2 +- cpp/tests/strings/findall_tests.cpp | 2 +- cpp/tests/strings/floats_tests.cpp | 2 +- cpp/tests/strings/integers_tests.cpp | 2 +- cpp/tests/strings/ipv4_tests.cpp | 2 +- cpp/tests/strings/replace_regex_tests.cpp | 2 +- cpp/tests/strings/replace_tests.cpp | 2 +- cpp/tests/strings/strip_tests.cpp | 2 +- cpp/tests/strings/translate_tests.cpp | 2 +- cpp/tests/strings/urls_tests.cpp | 2 +- cpp/tests/text/ngrams_tests.cpp | 2 +- cpp/tests/text/ngrams_tokenize_tests.cpp | 2 +- cpp/tests/text/normalize_tests.cpp | 2 +- cpp/tests/text/replace_tests.cpp | 2 +- cpp/tests/text/stemmer_tests.cpp | 2 +- cpp/tests/text/tokenize_tests.cpp | 2 +- cpp/tests/utilities_tests/batched_memcpy_tests.cu | 2 +- cpp/tests/utilities_tests/column_debug_tests.cpp | 2 +- cpp/tests/utilities_tests/column_utilities_tests.cpp | 2 +- 73 files changed, 73 insertions(+), 73 deletions(-) diff --git a/cpp/benchmarks/iterator/iterator.cu b/cpp/benchmarks/iterator/iterator.cu index 895c84fb47b8..ead9ca942516 100644 --- a/cpp/benchmarks/iterator/iterator.cu +++ b/cpp/benchmarks/iterator/iterator.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/benchmarks/transpose/transpose.cpp b/cpp/benchmarks/transpose/transpose.cpp index e85d13b6d9c0..8282be0d2d8b 100644 --- a/cpp/benchmarks/transpose/transpose.cpp +++ b/cpp/benchmarks/transpose/transpose.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/include/cudf/detail/indexalator.cuh b/cpp/include/cudf/detail/indexalator.cuh index 3fe49a4ab822..55b0b483c1fd 100644 --- a/cpp/include/cudf/detail/indexalator.cuh +++ b/cpp/include/cudf/detail/indexalator.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/include/cudf/detail/iterator.cuh b/cpp/include/cudf/detail/iterator.cuh index f39ddbb1c68a..8cadef2266e5 100644 --- a/cpp/include/cudf/detail/iterator.cuh +++ b/cpp/include/cudf/detail/iterator.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/include/cudf/detail/utilities/transform_unary_functions.cuh b/cpp/include/cudf/detail/utilities/transform_unary_functions.cuh index 3a8a6c605049..646a0a6b9208 100644 --- a/cpp/include/cudf/detail/utilities/transform_unary_functions.cuh +++ b/cpp/include/cudf/detail/utilities/transform_unary_functions.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/include/cudf/strings/detail/scatter.cuh b/cpp/include/cudf/strings/detail/scatter.cuh index 2a040abdf582..84545ed9a385 100644 --- a/cpp/include/cudf/strings/detail/scatter.cuh +++ b/cpp/include/cudf/strings/detail/scatter.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ #pragma once diff --git a/cpp/include/cudf/strings/detail/strings_column_factories.cuh b/cpp/include/cudf/strings/detail/strings_column_factories.cuh index 2d1e1c392278..b221bc71d451 100644 --- a/cpp/include/cudf/strings/detail/strings_column_factories.cuh +++ b/cpp/include/cudf/strings/detail/strings_column_factories.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ #pragma once diff --git a/cpp/include/cudf_test/column_utilities.hpp b/cpp/include/cudf_test/column_utilities.hpp index 57c3064664bd..fbb2a3f861a4 100644 --- a/cpp/include/cudf_test/column_utilities.hpp +++ b/cpp/include/cudf_test/column_utilities.hpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/include/cudf_test/print_utilities.cuh b/cpp/include/cudf_test/print_utilities.cuh index 999223303ef2..d720349c256f 100644 --- a/cpp/include/cudf_test/print_utilities.cuh +++ b/cpp/include/cudf_test/print_utilities.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/column/column.cu b/cpp/src/column/column.cu index 58293e961a05..4c595e48b8bb 100644 --- a/cpp/src/column/column.cu +++ b/cpp/src/column/column.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/column/column_view.cpp b/cpp/src/column/column_view.cpp index 8d0be1cf9c10..de75668c8a97 100644 --- a/cpp/src/column/column_view.cpp +++ b/cpp/src/column/column_view.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/copying/gather.cu b/cpp/src/copying/gather.cu index 2510b922ba5c..132673d7341a 100644 --- a/cpp/src/copying/gather.cu +++ b/cpp/src/copying/gather.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/copying/segmented_shift.cu b/cpp/src/copying/segmented_shift.cu index c4612793ac74..4ccb0b50bd08 100644 --- a/cpp/src/copying/segmented_shift.cu +++ b/cpp/src/copying/segmented_shift.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/groupby/sort/group_count.cu b/cpp/src/groupby/sort/group_count.cu index 5453871d58bc..a9db8b75fce4 100644 --- a/cpp/src/groupby/sort/group_count.cu +++ b/cpp/src/groupby/sort/group_count.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/groupby/sort/group_nth_element.cu b/cpp/src/groupby/sort/group_nth_element.cu index 208e5fecfb72..8080a7a33fb4 100644 --- a/cpp/src/groupby/sort/group_nth_element.cu +++ b/cpp/src/groupby/sort/group_nth_element.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/groupby/sort/group_nunique.cu b/cpp/src/groupby/sort/group_nunique.cu index e9380eae13fe..84c4f38cd739 100644 --- a/cpp/src/groupby/sort/group_nunique.cu +++ b/cpp/src/groupby/sort/group_nunique.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/groupby/sort/group_scan_util.cuh b/cpp/src/groupby/sort/group_scan_util.cuh index 49e8c15a7bc8..5e6dcf8a7b9f 100644 --- a/cpp/src/groupby/sort/group_scan_util.cuh +++ b/cpp/src/groupby/sort/group_scan_util.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/groupby/sort/group_std.cu b/cpp/src/groupby/sort/group_std.cu index c82e0670f36d..5fcfc6bb2641 100644 --- a/cpp/src/groupby/sort/group_std.cu +++ b/cpp/src/groupby/sort/group_std.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/io/csv/durations.cu b/cpp/src/io/csv/durations.cu index f42701cfb3d4..1ff04b5a1dd3 100644 --- a/cpp/src/io/csv/durations.cu +++ b/cpp/src/io/csv/durations.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ #include diff --git a/cpp/src/lists/combine/concatenate_rows.cu b/cpp/src/lists/combine/concatenate_rows.cu index 949b304132d7..dcff7434e84c 100644 --- a/cpp/src/lists/combine/concatenate_rows.cu +++ b/cpp/src/lists/combine/concatenate_rows.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/quantiles/quantiles.cu b/cpp/src/quantiles/quantiles.cu index baf205f11649..dc1292bb7f61 100644 --- a/cpp/src/quantiles/quantiles.cu +++ b/cpp/src/quantiles/quantiles.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/quantiles/tdigest/tdigest.cu b/cpp/src/quantiles/tdigest/tdigest.cu index 0b1e445f44f4..8aea3364c5eb 100644 --- a/cpp/src/quantiles/tdigest/tdigest.cu +++ b/cpp/src/quantiles/tdigest/tdigest.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/reductions/all.cu b/cpp/src/reductions/all.cu index a523db2d9fbc..1e97717cfab9 100644 --- a/cpp/src/reductions/all.cu +++ b/cpp/src/reductions/all.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/reductions/any.cu b/cpp/src/reductions/any.cu index a5beb01034ca..8d9d2d044f08 100644 --- a/cpp/src/reductions/any.cu +++ b/cpp/src/reductions/any.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/reductions/compound.cuh b/cpp/src/reductions/compound.cuh index 0c8ae20ffbb9..a5ba42fcee2e 100644 --- a/cpp/src/reductions/compound.cuh +++ b/cpp/src/reductions/compound.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/reductions/nth_element.cu b/cpp/src/reductions/nth_element.cu index 0de19a036f72..b9e5fed7a197 100644 --- a/cpp/src/reductions/nth_element.cu +++ b/cpp/src/reductions/nth_element.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/reductions/segmented/compound.cuh b/cpp/src/reductions/segmented/compound.cuh index 099489806980..09219b0e689a 100644 --- a/cpp/src/reductions/segmented/compound.cuh +++ b/cpp/src/reductions/segmented/compound.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/reductions/simple.cuh b/cpp/src/reductions/simple.cuh index 0371b4ea450e..cbbe1e7ed976 100644 --- a/cpp/src/reductions/simple.cuh +++ b/cpp/src/reductions/simple.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/reshape/interleave_columns.cu b/cpp/src/reshape/interleave_columns.cu index 8ca3951ed011..459f4c9e8618 100644 --- a/cpp/src/reshape/interleave_columns.cu +++ b/cpp/src/reshape/interleave_columns.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/reshape/table_to_array.cu b/cpp/src/reshape/table_to_array.cu index d01247c46d1f..9aa3fbe7a91d 100644 --- a/cpp/src/reshape/table_to_array.cu +++ b/cpp/src/reshape/table_to_array.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/reshape/tile.cu b/cpp/src/reshape/tile.cu index 1c7b430078d4..4ce819e839f7 100644 --- a/cpp/src/reshape/tile.cu +++ b/cpp/src/reshape/tile.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/rolling/detail/rolling_collect_list.cuh b/cpp/src/rolling/detail/rolling_collect_list.cuh index ee3f19f4476f..9398ff132dd1 100644 --- a/cpp/src/rolling/detail/rolling_collect_list.cuh +++ b/cpp/src/rolling/detail/rolling_collect_list.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/strings/search/contains_multiple.cu b/cpp/src/strings/search/contains_multiple.cu index f81535580470..3d10581ae849 100644 --- a/cpp/src/strings/search/contains_multiple.cu +++ b/cpp/src/strings/search/contains_multiple.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ #include diff --git a/cpp/src/strings/strings_column_factories.cu b/cpp/src/strings/strings_column_factories.cu index ceb19e385d56..a3d7e18a446b 100644 --- a/cpp/src/strings/strings_column_factories.cu +++ b/cpp/src/strings/strings_column_factories.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/text/deduplicate.cu b/cpp/src/text/deduplicate.cu index fc42626c0cb9..846d25727994 100644 --- a/cpp/src/text/deduplicate.cu +++ b/cpp/src/text/deduplicate.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/src/transpose/transpose.cu b/cpp/src/transpose/transpose.cu index 2a6694949d48..42cf01c244ed 100644 --- a/cpp/src/transpose/transpose.cu +++ b/cpp/src/transpose/transpose.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ #include diff --git a/cpp/src/utilities/linked_column.cpp b/cpp/src/utilities/linked_column.cpp index 33efea477564..e751cd5189d2 100644 --- a/cpp/src/utilities/linked_column.cpp +++ b/cpp/src/utilities/linked_column.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/copying/utility_tests.cpp b/cpp/tests/copying/utility_tests.cpp index f1baa545041b..45cf58cab6ae 100644 --- a/cpp/tests/copying/utility_tests.cpp +++ b/cpp/tests/copying/utility_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/partitioning/hash_partition_test.cpp b/cpp/tests/partitioning/hash_partition_test.cpp index 0729d03b7a08..df3ae6fcbbec 100644 --- a/cpp/tests/partitioning/hash_partition_test.cpp +++ b/cpp/tests/partitioning/hash_partition_test.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ #include diff --git a/cpp/tests/rolling/grouped_rolling_range_test.cpp b/cpp/tests/rolling/grouped_rolling_range_test.cpp index b9c870c4a59e..f190cd453614 100644 --- a/cpp/tests/rolling/grouped_rolling_range_test.cpp +++ b/cpp/tests/rolling/grouped_rolling_range_test.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/rolling/lead_lag_test.cpp b/cpp/tests/rolling/lead_lag_test.cpp index 86ca304d7f4f..126b3ef4679d 100644 --- a/cpp/tests/rolling/lead_lag_test.cpp +++ b/cpp/tests/rolling/lead_lag_test.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ #include diff --git a/cpp/tests/rolling/nth_element_test.cpp b/cpp/tests/rolling/nth_element_test.cpp index 2fad17e2f8b9..eda384ff18c5 100644 --- a/cpp/tests/rolling/nth_element_test.cpp +++ b/cpp/tests/rolling/nth_element_test.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/rolling/range_rolling_window_test.cpp b/cpp/tests/rolling/range_rolling_window_test.cpp index 4c4ffa24d01a..e73291c1114c 100644 --- a/cpp/tests/rolling/range_rolling_window_test.cpp +++ b/cpp/tests/rolling/range_rolling_window_test.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/search/search_test.cpp b/cpp/tests/search/search_test.cpp index 7dca6e69ea04..f7bfefad5e42 100644 --- a/cpp/tests/search/search_test.cpp +++ b/cpp/tests/search/search_test.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/streams/strings/attributes_test.cpp b/cpp/tests/streams/strings/attributes_test.cpp index 1955c260073c..af8026fbbc95 100644 --- a/cpp/tests/streams/strings/attributes_test.cpp +++ b/cpp/tests/streams/strings/attributes_test.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/attrs_tests.cpp b/cpp/tests/strings/attrs_tests.cpp index 63555f92fd76..01939440c816 100644 --- a/cpp/tests/strings/attrs_tests.cpp +++ b/cpp/tests/strings/attrs_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/booleans_tests.cpp b/cpp/tests/strings/booleans_tests.cpp index 6a9e52cf5a15..9377a031430e 100644 --- a/cpp/tests/strings/booleans_tests.cpp +++ b/cpp/tests/strings/booleans_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/case_tests.cpp b/cpp/tests/strings/case_tests.cpp index 482ccb48c8fa..2d3c35c1f149 100644 --- a/cpp/tests/strings/case_tests.cpp +++ b/cpp/tests/strings/case_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/chars_types_tests.cpp b/cpp/tests/strings/chars_types_tests.cpp index 502011c33310..7f99f1168d9a 100644 --- a/cpp/tests/strings/chars_types_tests.cpp +++ b/cpp/tests/strings/chars_types_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/combine/concatenate_tests.cpp b/cpp/tests/strings/combine/concatenate_tests.cpp index 1d2bbaed9c8b..a84208364fa7 100644 --- a/cpp/tests/strings/combine/concatenate_tests.cpp +++ b/cpp/tests/strings/combine/concatenate_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/combine/join_strings_tests.cpp b/cpp/tests/strings/combine/join_strings_tests.cpp index 0b1ddfe3bdca..0c781d49c91c 100644 --- a/cpp/tests/strings/combine/join_strings_tests.cpp +++ b/cpp/tests/strings/combine/join_strings_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/datetime_tests.cpp b/cpp/tests/strings/datetime_tests.cpp index 03ee5015b5fa..b6251d1651e5 100644 --- a/cpp/tests/strings/datetime_tests.cpp +++ b/cpp/tests/strings/datetime_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/durations_tests.cpp b/cpp/tests/strings/durations_tests.cpp index ee6f4316b755..292ea50c9158 100644 --- a/cpp/tests/strings/durations_tests.cpp +++ b/cpp/tests/strings/durations_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/find_multiple_tests.cpp b/cpp/tests/strings/find_multiple_tests.cpp index 0abf9e675812..2a128ebd142b 100644 --- a/cpp/tests/strings/find_multiple_tests.cpp +++ b/cpp/tests/strings/find_multiple_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/find_tests.cpp b/cpp/tests/strings/find_tests.cpp index 4295383572fd..105d1caf6267 100644 --- a/cpp/tests/strings/find_tests.cpp +++ b/cpp/tests/strings/find_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/findall_tests.cpp b/cpp/tests/strings/findall_tests.cpp index 0e01f015c11c..357b237f3ab0 100644 --- a/cpp/tests/strings/findall_tests.cpp +++ b/cpp/tests/strings/findall_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/floats_tests.cpp b/cpp/tests/strings/floats_tests.cpp index 277b59fc8b0b..721d49ed08f1 100644 --- a/cpp/tests/strings/floats_tests.cpp +++ b/cpp/tests/strings/floats_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/integers_tests.cpp b/cpp/tests/strings/integers_tests.cpp index 4971d7e280c7..46a90bd880c8 100644 --- a/cpp/tests/strings/integers_tests.cpp +++ b/cpp/tests/strings/integers_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/ipv4_tests.cpp b/cpp/tests/strings/ipv4_tests.cpp index 3171df48319a..e563ea37dc7e 100644 --- a/cpp/tests/strings/ipv4_tests.cpp +++ b/cpp/tests/strings/ipv4_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/replace_regex_tests.cpp b/cpp/tests/strings/replace_regex_tests.cpp index 66ebf03fa42d..8380735e863b 100644 --- a/cpp/tests/strings/replace_regex_tests.cpp +++ b/cpp/tests/strings/replace_regex_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/replace_tests.cpp b/cpp/tests/strings/replace_tests.cpp index eab420ccfc5d..6985345d8cea 100644 --- a/cpp/tests/strings/replace_tests.cpp +++ b/cpp/tests/strings/replace_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/strip_tests.cpp b/cpp/tests/strings/strip_tests.cpp index df0d4879e181..b0a1cdeb8176 100644 --- a/cpp/tests/strings/strip_tests.cpp +++ b/cpp/tests/strings/strip_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/translate_tests.cpp b/cpp/tests/strings/translate_tests.cpp index 093adc6880fc..cf6e7b4ea8c5 100644 --- a/cpp/tests/strings/translate_tests.cpp +++ b/cpp/tests/strings/translate_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/strings/urls_tests.cpp b/cpp/tests/strings/urls_tests.cpp index 63f44132c9d8..2cba047e7030 100644 --- a/cpp/tests/strings/urls_tests.cpp +++ b/cpp/tests/strings/urls_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/text/ngrams_tests.cpp b/cpp/tests/text/ngrams_tests.cpp index 6c731a2c5122..f072c97f6fe6 100644 --- a/cpp/tests/text/ngrams_tests.cpp +++ b/cpp/tests/text/ngrams_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/text/ngrams_tokenize_tests.cpp b/cpp/tests/text/ngrams_tokenize_tests.cpp index 13a92ed44e80..e6ada1921a0a 100644 --- a/cpp/tests/text/ngrams_tokenize_tests.cpp +++ b/cpp/tests/text/ngrams_tokenize_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/text/normalize_tests.cpp b/cpp/tests/text/normalize_tests.cpp index 60bd76050fe5..af3fb23dbf18 100644 --- a/cpp/tests/text/normalize_tests.cpp +++ b/cpp/tests/text/normalize_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/text/replace_tests.cpp b/cpp/tests/text/replace_tests.cpp index 4f0cadfac5ee..da95e17d0de3 100644 --- a/cpp/tests/text/replace_tests.cpp +++ b/cpp/tests/text/replace_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/text/stemmer_tests.cpp b/cpp/tests/text/stemmer_tests.cpp index d51624b63a40..13d7f5c69aaa 100644 --- a/cpp/tests/text/stemmer_tests.cpp +++ b/cpp/tests/text/stemmer_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/text/tokenize_tests.cpp b/cpp/tests/text/tokenize_tests.cpp index 8368c5864841..0da7a87e2825 100644 --- a/cpp/tests/text/tokenize_tests.cpp +++ b/cpp/tests/text/tokenize_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/utilities_tests/batched_memcpy_tests.cu b/cpp/tests/utilities_tests/batched_memcpy_tests.cu index 492dbdd3d437..ed01aeb98402 100644 --- a/cpp/tests/utilities_tests/batched_memcpy_tests.cu +++ b/cpp/tests/utilities_tests/batched_memcpy_tests.cu @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/utilities_tests/column_debug_tests.cpp b/cpp/tests/utilities_tests/column_debug_tests.cpp index 85a039a1fa1a..c08e926a1c38 100644 --- a/cpp/tests/utilities_tests/column_debug_tests.cpp +++ b/cpp/tests/utilities_tests/column_debug_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ diff --git a/cpp/tests/utilities_tests/column_utilities_tests.cpp b/cpp/tests/utilities_tests/column_utilities_tests.cpp index aacfcd17f41b..829b3fc4c7e0 100644 --- a/cpp/tests/utilities_tests/column_utilities_tests.cpp +++ b/cpp/tests/utilities_tests/column_utilities_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ From eb237ce3815d6e86edb5ba5b21de5646db971979 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Wed, 5 Aug 2026 21:26:55 +0000 Subject: [PATCH 23/27] Remove redundant valid-length transform --- cpp/benchmarks/common/generate_input.cu | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/cpp/benchmarks/common/generate_input.cu b/cpp/benchmarks/common/generate_input.cu index 688c11a2b878..36cdb711768a 100644 --- a/cpp/benchmarks/common/generate_input.cu +++ b/cpp/benchmarks/common/generate_input.cu @@ -440,14 +440,6 @@ rmm::device_uvector sample_indices_with_run_length(cudf::size_t } } -struct valid_or_zero { - template - __device__ T operator()(cuda::std::tuple len_valid) const - { - return cuda::std::get<1>(len_valid) ? cuda::std::get<0>(len_valid) : T{0}; - } -}; - enum class string_encoding { ASCII, UTF8, @@ -510,13 +502,9 @@ std::unique_ptr create_random_utf8_string_column(data_profile cons lengths.begin(), cuda::proclaim_return_type([] __device__(auto) { return 0; }), cuda::std::logical_not{}); - auto valid_lengths = cuda::transform_iterator( - cuda::make_zip_iterator(cuda::std::make_tuple(lengths.begin(), null_mask.begin())), - valid_or_zero{}); - // offsets are created as INT32 or INT64 as appropriate auto [offsets, chars_length] = cudf::strings::detail::make_offsets_child_column( - valid_lengths, valid_lengths + num_rows, stream, mr); + lengths.begin(), lengths.begin() + num_rows, stream, mr); // use the offsetalator to normalize the offset values for use by the string_generator auto offsets_itr = cudf::detail::offsetalator_factory::make_input_iterator(offsets->view()); rmm::device_uvector chars(chars_length, cudf::get_default_stream()); From 564113e0fedd43e89476a0b6fbb31bce6feb9f8b Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Fri, 7 Aug 2026 19:09:58 +0000 Subject: [PATCH 24/27] Fix CUDA iterator migration regressions --- cpp/src/io/json/column_tree_construction.cu | 6 ++---- java/src/main/native/src/aggregation128_utils.cu | 5 +---- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/cpp/src/io/json/column_tree_construction.cu b/cpp/src/io/json/column_tree_construction.cu index 2cd7411d999a..1b1b70d4ef72 100644 --- a/cpp/src/io/json/column_tree_construction.cu +++ b/cpp/src/io/json/column_tree_construction.cu @@ -157,10 +157,8 @@ std::tuple reduce_to_column_tree( } rmm::device_uvector parent_col_ids(num_columns, stream); - auto parent_col_ids_it = - cuda::transform_iterator(cuda::make_permutation_iterator( - unpermuted_tree.parent_node_ids.begin(), reordering_index.begin()), - parent_nodeids_to_colids{rev_mapped_col_ids}); + cuda::transform_output_iterator parent_col_ids_it(parent_col_ids.begin(), + parent_nodeids_to_colids{rev_mapped_col_ids}); rmm::device_uvector max_row_offsets(num_columns, stream); rmm::device_uvector column_categories(num_columns, stream); thrust::copy_n( diff --git a/java/src/main/native/src/aggregation128_utils.cu b/java/src/main/native/src/aggregation128_utils.cu index f668e4709316..2b75a6a90998 100644 --- a/java/src/main/native/src/aggregation128_utils.cu +++ b/java/src/main/native/src/aggregation128_utils.cu @@ -83,10 +83,7 @@ std::unique_ptr extract_chunk32(cudf::column_view const& in_col, auto const in_begin = in_col.begin(); // Build an iterator for every fourth 32-bit value, i.e.: one "chunk" of a __int128_t value - cuda::transform_iterator transform_iter{ - cuda::counting_iterator{cudf::size_type{0}}, - cuda::proclaim_return_type([] __device__(auto i) { return i * 4; })}; - cuda::permutation_iterator stride_iter{in_begin + chunk_idx, transform_iter}; + cuda::strided_iterator stride_iter{in_begin + chunk_idx, cudf::size_type{4}}; thrust::copy( rmm::exec_policy_nosync(stream), stride_iter, stride_iter + num_rows, out_view.data()); From 3c45f0c1ef0da177b4bed3b5b110ccb5aa4e0c10 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Mon, 10 Aug 2026 16:50:40 +0000 Subject: [PATCH 25/27] Restore nulls_at iterator compatibility --- cpp/include/cudf_test/iterator_utilities.hpp | 54 ++++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/cpp/include/cudf_test/iterator_utilities.hpp b/cpp/include/cudf_test/iterator_utilities.hpp index b030e73db87d..c79b9095919d 100644 --- a/cpp/include/cudf_test/iterator_utilities.hpp +++ b/cpp/include/cudf_test/iterator_utilities.hpp @@ -13,7 +13,6 @@ #include #include -#include #include namespace CUDF_EXPORT cudf { @@ -21,53 +20,54 @@ namespace test { namespace iterators { /** - * @brief Bool range for marking (possibly multiple) null elements in a column_wrapper. + * @brief Bool iterator for marking (possibly multiple) null elements in a column_wrapper. * - * The returned range yields `false` (to mark `null`) at all the specified indices, + * The returned iterator yields `false` (to mark `null`) at all the specified indices, * and yields `true` (to mark valid rows) for all other indices. E.g. * * @code * auto indices = std::vector{8,9}; - * auto range = nulls_at(indices.cbegin(), indices.end()); - * range[6] == true; // i.e. Valid row at index 6. - * range[7] == true; // i.e. Valid row at index 7. - * range[8] == false; // i.e. Invalid row at index 8. - * range[9] == false; // i.e. Invalid row at index 9. + * auto iter = nulls_at(indices.cbegin(), indices.end()); + * iter[6] == true; // i.e. Valid row at index 6. + * iter[7] == true; // i.e. Valid row at index 7. + * iter[8] == false; // i.e. Invalid row at index 8. + * iter[9] == false; // i.e. Invalid row at index 9. * @endcode * * @tparam Iter Iterator type * @param index_start Iterator to start of indices for which the validity iterator * must return `false` (i.e. null) * @param index_end Iterator to end of indices for the validity iterator - * @return auto Validity range + * @return auto Validity iterator */ template [[maybe_unused]] static auto nulls_at(Iter index_start, Iter index_end) { using index_type = typename std::iterator_traits::value_type; - return std::views::iota(cudf::size_type{0}) | - std::views::transform([indices = std::vector{index_start, index_end}](auto i) { - return std::find(indices.cbegin(), indices.cend(), i) == indices.cend(); - }); + return cuda::transform_iterator( + cuda::counting_iterator{0}, + [indices = std::vector{index_start, index_end}](auto i) { + return std::find(indices.cbegin(), indices.cend(), i) == indices.cend(); + }); } /** - * @brief Bool range for marking (possibly multiple) null elements in a column_wrapper. + * @brief Bool iterator for marking (possibly multiple) null elements in a column_wrapper. * - * The returned range yields `false` (to mark `null`) at all the specified indices, + * The returned iterator yields `false` (to mark `null`) at all the specified indices, * and yields `true` (to mark valid rows) for all other indices. E.g. * * @code - * auto range = nulls_at({8,9}); - * range[6] == true; // i.e. Valid row at index 6. - * range[7] == true; // i.e. Valid row at index 7. - * range[8] == false; // i.e. Invalid row at index 8. - * range[9] == false; // i.e. Invalid row at index 9. + * auto iter = nulls_at({8,9}); + * iter[6] == true; // i.e. Valid row at index 6. + * iter[7] == true; // i.e. Valid row at index 7. + * iter[8] == false; // i.e. Invalid row at index 8. + * iter[9] == false; // i.e. Invalid row at index 9. * @endcode * * @param indices The indices for which the validity iterator must return `false` (i.e. null) - * @return auto Validity range + * @return auto Validity iterator */ [[maybe_unused]] static auto nulls_at(std::vector const& indices) { @@ -75,19 +75,19 @@ template } /** - * @brief Bool range for marking a single null element in a column_wrapper + * @brief Bool iterator for marking a single null element in a column_wrapper * - * The returned range yields `false` (to mark `null`) at the specified index, + * The returned iterator yields `false` (to mark `null`) at the specified index, * and yields `true` (to mark valid rows) for all other indices. E.g. * * @code - * auto range = null_at(8); - * range[7] == true; // i.e. Valid row at index 7. - * range[8] == false; // i.e. Invalid row at index 8. + * auto iter = null_at(8); + * iter[7] == true; // i.e. Valid row at index 7. + * iter[8] == false; // i.e. Invalid row at index 8. * @endcode * * @param index The index for which the validity iterator must return `false` (i.e. null) - * @return auto Validity range + * @return auto Validity iterator */ [[maybe_unused]] static auto null_at(cudf::size_type index) { From 7765c04c18c49a2db10e7389225254c091992d3d Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Mon, 10 Aug 2026 17:13:08 +0000 Subject: [PATCH 26/27] Restore nulls_at iterator contract --- cpp/include/cudf_test/column_wrapper.hpp | 66 +++++++------------ cpp/include/cudf_test/iterator_utilities.hpp | 7 +- cpp/tests/bitmask/bitmask_tests.cpp | 5 +- cpp/tests/column/factories_test.cpp | 4 +- .../copying/copy_if_else_nested_tests.cpp | 16 ++--- .../copying/purge_nonempty_nulls_tests.cpp | 3 +- cpp/tests/copying/scatter_list_tests.cpp | 18 ++--- cpp/tests/groupby/rank_scan_tests.cpp | 5 +- .../concatenate_list_elements_tests.cpp | 21 ++---- cpp/tests/lists/contains_tests.cpp | 34 ++++------ .../apply_boolean_mask_tests.cpp | 33 +++++----- cpp/tests/reductions/distinct_count_tests.cpp | 3 +- cpp/tests/reductions/rank_tests.cpp | 12 ++-- cpp/tests/reductions/unique_count_tests.cpp | 3 +- cpp/tests/reshape/byte_cast_tests.cpp | 3 +- cpp/tests/rolling/collect_ops_test.cpp | 3 +- .../stream_compaction/distinct_tests.cpp | 25 +++---- .../stable_distinct_tests.cpp | 25 +++---- cpp/tests/stream_compaction/unique_tests.cpp | 19 ++---- cpp/tests/transform/one_hot_encode_tests.cpp | 8 +-- 20 files changed, 116 insertions(+), 197 deletions(-) diff --git a/cpp/include/cudf_test/column_wrapper.hpp b/cpp/include/cudf_test/column_wrapper.hpp index b3331751876b..566d2d8d7674 100644 --- a/cpp/include/cudf_test/column_wrapper.hpp +++ b/cpp/include/cudf_test/column_wrapper.hpp @@ -37,26 +37,11 @@ #include #include #include -#include #include namespace CUDF_EXPORT cudf { namespace test { namespace detail { - -/** - * @brief Return the beginning of a validity range or an unchanged validity iterator. - */ -template -auto validity_begin(Validity& validity) -{ - if constexpr (std::ranges::range) { - return std::ranges::begin(validity); - } else { - return validity; - } -} - /** * @brief Base class for a wrapper around a `cudf::column`. * @@ -407,12 +392,11 @@ class fixed_width_column_wrapper : public detail::column_wrapper { * @param v The beginning of the sequence of validity indicators */ template - fixed_width_column_wrapper(InputIterator begin, InputIterator end, ValidityIterator&& v) + fixed_width_column_wrapper(InputIterator begin, InputIterator end, ValidityIterator v) : column_wrapper{} { auto const size = cudf::distance(begin, end); - auto const validity = detail::validity_begin(v); - auto [null_mask, null_count] = detail::make_null_mask(validity, validity + size); + auto [null_mask, null_count] = detail::make_null_mask(v, v + size); wrapped.reset(new cudf::column{cudf::data_type{cudf::type_to_id()}, size, detail::make_elements(begin, end), @@ -480,7 +464,7 @@ class fixed_width_column_wrapper : public detail::column_wrapper { * @param v The beginning of the sequence of validity indicators */ template - fixed_width_column_wrapper(std::initializer_list element_list, ValidityIterator&& v) + fixed_width_column_wrapper(std::initializer_list element_list, ValidityIterator v) : fixed_width_column_wrapper(std::cbegin(element_list), std::cend(element_list), v) { } @@ -637,7 +621,7 @@ class fixed_point_column_wrapper : public detail::column_wrapper { template fixed_point_column_wrapper(FixedPointRepIterator begin, FixedPointRepIterator end, - ValidityIterator&& v, + ValidityIterator v, numeric::scale_type scale) : column_wrapper{} { @@ -647,8 +631,7 @@ class fixed_point_column_wrapper : public detail::column_wrapper { auto const elements = thrust::host_vector(begin, end); auto const id = type_to_id>(); auto const data_type = cudf::data_type{id, static_cast(scale)}; - auto const validity = detail::validity_begin(v); - auto [null_mask, null_count] = detail::make_null_mask(validity, validity + size); + auto [null_mask, null_count] = detail::make_null_mask(v, v + size); wrapped.reset(new cudf::column{ data_type, size, @@ -702,7 +685,7 @@ class fixed_point_column_wrapper : public detail::column_wrapper { */ template fixed_point_column_wrapper(std::initializer_list element_list, - ValidityIterator&& v, + ValidityIterator v, numeric::scale_type scale) : fixed_point_column_wrapper(std::cbegin(element_list), std::cend(element_list), v, scale) { @@ -818,7 +801,7 @@ class strings_column_wrapper : public detail::column_wrapper { * @param v The beginning of the sequence of validity indicators */ template - strings_column_wrapper(StringsIterator begin, StringsIterator end, ValidityIterator&& v) + strings_column_wrapper(StringsIterator begin, StringsIterator end, ValidityIterator v) : column_wrapper{} { size_type num_strings = std::distance(begin, end); @@ -826,9 +809,8 @@ class strings_column_wrapper : public detail::column_wrapper { wrapped = cudf::make_empty_column(cudf::type_id::STRING); return; } - auto const validity = detail::validity_begin(v); - auto [chars, offsets] = detail::make_chars_and_offsets(begin, end, validity); - auto [null_mask, null_count] = detail::make_null_mask_vector(validity, validity + num_strings); + auto [chars, offsets] = detail::make_chars_and_offsets(begin, end, v); + auto [null_mask, null_count] = detail::make_null_mask_vector(v, v + num_strings); auto d_chars = cudf::detail::make_device_uvector_async( chars, cudf::test::get_default_stream(), cudf::get_current_device_resource_ref()); auto d_offsets = std::make_unique( @@ -878,7 +860,7 @@ class strings_column_wrapper : public detail::column_wrapper { * @param v The beginning of the sequence of validity indicators */ template - strings_column_wrapper(std::initializer_list strings, ValidityIterator&& v) + strings_column_wrapper(std::initializer_list strings, ValidityIterator v) : strings_column_wrapper(std::cbegin(strings), std::cend(strings), v) { } @@ -1017,7 +999,7 @@ class dictionary_column_wrapper : public detail::column_wrapper { * @param v The beginning of the sequence of validity indicators */ template - dictionary_column_wrapper(InputIterator begin, InputIterator end, ValidityIterator&& v) + dictionary_column_wrapper(InputIterator begin, InputIterator end, ValidityIterator v) : column_wrapper{} { wrapped = cudf::dictionary::encode( @@ -1089,7 +1071,7 @@ class dictionary_column_wrapper : public detail::column_wrapper { * @param v The beginning of the sequence of validity indicators */ template - dictionary_column_wrapper(std::initializer_list element_list, ValidityIterator&& v) + dictionary_column_wrapper(std::initializer_list element_list, ValidityIterator v) : dictionary_column_wrapper(std::cbegin(element_list), std::cend(element_list), v) { } @@ -1220,7 +1202,7 @@ class dictionary_column_wrapper : public detail::column_wrapper { * @param v The beginning of the sequence of validity indicators */ template - dictionary_column_wrapper(StringsIterator begin, StringsIterator end, ValidityIterator&& v) + dictionary_column_wrapper(StringsIterator begin, StringsIterator end, ValidityIterator v) : column_wrapper{} { wrapped = cudf::dictionary::encode(strings_column_wrapper(begin, end, v), @@ -1264,7 +1246,7 @@ class dictionary_column_wrapper : public detail::column_wrapper { * @param v The beginning of the sequence of validity indicators */ template - dictionary_column_wrapper(std::initializer_list strings, ValidityIterator&& v) + dictionary_column_wrapper(std::initializer_list strings, ValidityIterator v) : dictionary_column_wrapper(std::cbegin(strings), std::cend(strings), v) { } @@ -1396,7 +1378,7 @@ class lists_column_wrapper : public detail::column_wrapper { template ()>* = nullptr> - lists_column_wrapper(std::initializer_list elements, ValidityIterator&& v) + lists_column_wrapper(std::initializer_list elements, ValidityIterator v) : column_wrapper{} { build_from_non_nested( @@ -1424,7 +1406,7 @@ class lists_column_wrapper : public detail::column_wrapper { typename InputIterator, typename ValidityIterator, std::enable_if_t()>* = nullptr> - lists_column_wrapper(InputIterator begin, InputIterator end, ValidityIterator&& v) + lists_column_wrapper(InputIterator begin, InputIterator end, ValidityIterator v) : column_wrapper{} { build_from_non_nested( @@ -1470,7 +1452,7 @@ class lists_column_wrapper : public detail::column_wrapper { template >* = nullptr> - lists_column_wrapper(std::initializer_list elements, ValidityIterator&& v) + lists_column_wrapper(std::initializer_list elements, ValidityIterator v) : column_wrapper{} { build_from_non_nested( @@ -1548,14 +1530,13 @@ class lists_column_wrapper : public detail::column_wrapper { */ template lists_column_wrapper(std::initializer_list> elements, - ValidityIterator&& v) + ValidityIterator v) : column_wrapper{} { std::vector validity; - auto const validity_iter = detail::validity_begin(v); std::transform(elements.begin(), elements.end(), - validity_iter, + v, std::back_inserter(validity), [](lists_column_wrapper const& l, bool valid) { return valid; }); build_from_nested(elements, validity); @@ -1917,7 +1898,7 @@ class structs_column_wrapper : public detail::column_wrapper { template structs_column_wrapper( std::initializer_list> child_column_wrappers, - V&& validity_iter) + V validity_iter) { std::vector> child_columns; child_columns.reserve(child_column_wrappers.size()); @@ -1959,7 +1940,7 @@ class structs_column_wrapper : public detail::column_wrapper { } template - void init(std::vector>&& child_columns, V&& validity_iterator) + void init(std::vector>&& child_columns, V validity_iterator) { size_type const num_rows = child_columns.empty() ? 0 : child_columns[0]->size(); @@ -1969,10 +1950,9 @@ class structs_column_wrapper : public detail::column_wrapper { "All struct member columns must have the same row count."); std::vector validity(num_rows); - auto const validity_iter = detail::validity_begin(validity_iterator); - std::copy(validity_iter, validity_iter + num_rows, validity.begin()); + std::copy(validity_iterator, validity_iterator + num_rows, validity.begin()); - init(std::move(child_columns), static_cast const&>(validity)); + init(std::move(child_columns), validity); } }; diff --git a/cpp/include/cudf_test/iterator_utilities.hpp b/cpp/include/cudf_test/iterator_utilities.hpp index c79b9095919d..38a3182c3506 100644 --- a/cpp/include/cudf_test/iterator_utilities.hpp +++ b/cpp/include/cudf_test/iterator_utilities.hpp @@ -13,6 +13,7 @@ #include #include +#include #include namespace CUDF_EXPORT cudf { @@ -45,10 +46,10 @@ template { using index_type = typename std::iterator_traits::value_type; + auto indices = std::make_shared const>(index_start, index_end); return cuda::transform_iterator( - cuda::counting_iterator{0}, - [indices = std::vector{index_start, index_end}](auto i) { - return std::find(indices.cbegin(), indices.cend(), i) == indices.cend(); + cuda::counting_iterator{0}, [indices = std::move(indices)](auto i) { + return std::find(indices->cbegin(), indices->cend(), i) == indices->cend(); }); } diff --git a/cpp/tests/bitmask/bitmask_tests.cpp b/cpp/tests/bitmask/bitmask_tests.cpp index 0a6082e35131..43056aa7a40b 100644 --- a/cpp/tests/bitmask/bitmask_tests.cpp +++ b/cpp/tests/bitmask/bitmask_tests.cpp @@ -692,9 +692,8 @@ TEST_F(MergeBitmaskTest, TestBitmaskOr) EXPECT_EQ(result2_null_count, 1); EXPECT_EQ(result3_null_count, 0); - auto all_but_index3_values = cudf::test::iterators::null_at(3); - auto all_but_index3 = all_but_index3_values.begin(); - auto null3 = std::get<0>( + auto all_but_index3 = cudf::test::iterators::null_at(3); + auto null3 = std::get<0>( cudf::test::detail::make_null_mask(all_but_index3, all_but_index3 + input2.num_rows())); EXPECT_EQ(nullptr, result1_mask.data()); diff --git a/cpp/tests/column/factories_test.cpp b/cpp/tests/column/factories_test.cpp index 10529c2f9773..3e5384a38bb4 100644 --- a/cpp/tests/column/factories_test.cpp +++ b/cpp/tests/column/factories_test.cpp @@ -702,9 +702,7 @@ TEST_F(ListsZeroLengthColumnTest, SuperimposeNulls) .release(); auto offsets = offset_t{0, 3, 3, 5}.release(); - auto const valid_iter_values = cudf::test::iterators::null_at(2); - - auto const valid_iter = valid_iter_values.begin(); + auto const valid_iter = cudf::test::iterators::null_at(2); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(valid_iter, valid_iter + 3); auto tmp = cudf::make_lists_column( diff --git a/cpp/tests/copying/copy_if_else_nested_tests.cpp b/cpp/tests/copying/copy_if_else_nested_tests.cpp index d7687045d80c..6dd50754dab0 100644 --- a/cpp/tests/copying/copy_if_else_nested_tests.cpp +++ b/cpp/tests/copying/copy_if_else_nested_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-FileCopyrightText: Copyright (c) 2021-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -322,14 +322,12 @@ TYPED_TEST(TypedCopyIfElseNestedTest, ListsWithStructs) using bools = cudf::test::fixed_width_column_wrapper; using offsets = cudf::test::fixed_width_column_wrapper; - auto const null_at_0_values = null_at(0); - auto const null_at_0 = null_at_0_values.begin(); - auto const null_at_3 = null_at(3); - auto const null_at_4_values = null_at(4); - auto const null_at_4 = null_at_4_values.begin(); - auto const null_at_6 = null_at(6); - auto const null_at_7 = null_at(7); - auto const null_at_8 = null_at(8); + auto const null_at_0 = null_at(0); + auto const null_at_3 = null_at(3); + auto const null_at_4 = null_at(4); + auto const null_at_6 = null_at(6); + auto const null_at_7 = null_at(7); + auto const null_at_8 = null_at(8); auto lhs_ints = ints{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, null_at_3}; auto lhs_strings = strings{{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, null_at_4}; diff --git a/cpp/tests/copying/purge_nonempty_nulls_tests.cpp b/cpp/tests/copying/purge_nonempty_nulls_tests.cpp index 21d76eb72741..4650de9ee092 100644 --- a/cpp/tests/copying/purge_nonempty_nulls_tests.cpp +++ b/cpp/tests/copying/purge_nonempty_nulls_tests.cpp @@ -419,8 +419,7 @@ TEST_F(PurgeNonEmptyNullsTest, StructOfList) return cudf::test::structs_column_wrapper{{child}}.release(); }(); auto [null_mask, null_count] = [&] { - auto const valid_iter_values = null_at(2); - auto const valid_iter = valid_iter_values.begin(); + auto const valid_iter = null_at(2); return cudf::test::detail::make_null_mask(valid_iter, valid_iter + structs_input->size()); }(); diff --git a/cpp/tests/copying/scatter_list_tests.cpp b/cpp/tests/copying/scatter_list_tests.cpp index c2d5c767c8b7..44d5a16fa084 100644 --- a/cpp/tests/copying/scatter_list_tests.cpp +++ b/cpp/tests/copying/scatter_list_tests.cpp @@ -155,8 +155,7 @@ TYPED_TEST(TypedScatterListsTest, NullableListsOfNullableFixedWidth) auto src_child = cudf::test::fixed_width_column_wrapper{{9, 9, 9, 9, 8, 8, 8}, {1, 1, 1, 0, 1, 1, 1}}; - auto src_list_validity_values = cudf::test::iterators::null_at(2); - auto src_list_validity = src_list_validity_values.begin(); + auto src_list_validity = cudf::test::iterators::null_at(2); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(src_list_validity, src_list_validity + 3); // One null list row, and one row with nulls. @@ -179,8 +178,7 @@ TYPED_TEST(TypedScatterListsTest, NullableListsOfNullableFixedWidth) auto expected_child_ints = cudf::test::fixed_width_column_wrapper{ {8, 8, 8, 1, 1, 9, 9, 9, 9, 3, 3, 4, 4, 6, 6}, {1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1}}; - auto expected_validity_values = cudf::test::iterators::null_at(5); - auto expected_validity = expected_validity_values.begin(); + auto expected_validity = cudf::test::iterators::null_at(5); std::tie(null_mask, null_count) = cudf::test::detail::make_null_mask(expected_validity, expected_validity + 7); auto expected_lists_column = cudf::make_lists_column( @@ -331,8 +329,7 @@ TEST_F(ScatterListsTest, NullableListsOfNullableStrings) cudf::test::strings_column_wrapper{{"all", "the", "leaves", "", "brown", "", "dreaming"}, {true, true, true, false, true, false, true}}; - auto src_validity_values = cudf::test::iterators::null_at(1); - auto src_validity = src_validity_values.begin(); + auto src_validity = cudf::test::iterators::null_at(1); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(src_validity, src_validity + 3); auto src_list_column = cudf::make_lists_column( 3, @@ -370,8 +367,7 @@ TEST_F(ScatterListsTest, NullableListsOfNullableStrings) "five"}, cudf::test::iterators::nulls_at({0, 7})}; - auto expected_validity_values = cudf::test::iterators::null_at(4); - auto expected_validity = expected_validity_values.begin(); + auto expected_validity = cudf::test::iterators::null_at(4); std::tie(null_mask, null_count) = cudf::test::detail::make_null_mask(expected_validity, expected_validity + 6); auto expected_lists = cudf::make_lists_column( @@ -867,8 +863,7 @@ TYPED_TEST(TypedScatterListsTest, NullListsOfStructs) auto source_structs = cudf::test::structs_column_wrapper{{source_numerics, source_strings}, cudf::test::iterators::null_at(1)}; - auto source_list_null_mask_begin_values = cudf::test::iterators::null_at(2); - auto source_list_null_mask_begin = source_list_null_mask_begin_values.begin(); + auto source_list_null_mask_begin = cudf::test::iterators::null_at(2); auto [null_mask, null_count] = cudf::test::detail::make_null_mask( source_list_null_mask_begin, source_list_null_mask_begin + 3); @@ -935,8 +930,7 @@ TYPED_TEST(TypedScatterListsTest, NullListsOfStructs) auto expected_structs = cudf::test::structs_column_wrapper{{expected_numerics, expected_strings}, cudf::test::iterators::null_at(6)}; - auto expected_lists_null_mask_begin_values = cudf::test::iterators::null_at(4); - auto expected_lists_null_mask_begin = expected_lists_null_mask_begin_values.begin(); + auto expected_lists_null_mask_begin = cudf::test::iterators::null_at(4); std::tie(null_mask, null_count) = cudf::test::detail::make_null_mask( expected_lists_null_mask_begin, expected_lists_null_mask_begin + 6); diff --git a/cpp/tests/groupby/rank_scan_tests.cpp b/cpp/tests/groupby/rank_scan_tests.cpp index 220152dc0ce3..fc673ec312e2 100644 --- a/cpp/tests/groupby/rank_scan_tests.cpp +++ b/cpp/tests/groupby/rank_scan_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-FileCopyrightText: Copyright (c) 2021-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -330,8 +330,7 @@ TYPED_TEST(typed_groupby_rank_scan_test, structsWithNullPushdown) {"0a", "0a", "2a", "2a", "3b", "5", "6c", "6c", "6c", "9", "9", "10d"}, null_at(8)}; auto struct_column = cudf::test::structs_column_wrapper{nums_member, strings_member}.release(); // Reset null-mask, a posteriori. Nulls will not be pushed down to children. - auto const null_iter_values = nulls_at({1, 2, 11}); - auto const null_iter = null_iter_values.begin(); + auto const null_iter = nulls_at({1, 2, 11}); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_iter, null_iter + num_rows); struct_column->set_null_mask(std::move(null_mask), null_count); diff --git a/cpp/tests/lists/combine/concatenate_list_elements_tests.cpp b/cpp/tests/lists/combine/concatenate_list_elements_tests.cpp index 11800dd82e9b..59ff3c1c39ea 100644 --- a/cpp/tests/lists/combine/concatenate_list_elements_tests.cpp +++ b/cpp/tests/lists/combine/concatenate_list_elements_tests.cpp @@ -540,8 +540,7 @@ TEST_F(ConcatenateListElementsTest, ListsOfListsOfStructsWithNull) auto child3 = strings_col{"1", "", "3", "4", "5", "", "7", "", "9", "10"}; auto structs = structs_col{{child1, child2, child3}, nulls_at({1, 5, 7})}; auto offsets = int32s_col{0, 2, 3, 3, 6, 8, 10}; - auto const null_it_values = null_at(2); - auto const null_it = null_it_values.begin(); // null list + auto const null_it = null_at(2); // null list auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 6); return cudf::make_lists_column( 6, offsets.release(), structs.release(), null_count, std::move(null_mask)); @@ -600,8 +599,7 @@ TEST_F(ConcatenateListElementsTest, ListsOfListsOfStructsWithNull) auto child3 = strings_col{"4", "5", "", "7", "", "9", "10"}; auto structs = structs_col{{child1, child2, child3}, nulls_at({2, 4})}; auto offsets = int32s_col{0, 0, 3, 7}; - auto const null_it_values = null_at(0); - auto const null_it = null_it_values.begin(); // null row + auto const null_it = null_at(0); // null row auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 3); return cudf::make_lists_column( 3, offsets.release(), structs.release(), null_count, std::move(null_mask)); @@ -623,8 +621,7 @@ TEST_F(ConcatenateListElementsTest, ListsOfListsOfStructsWithNull) auto child3 = strings_col{"4", "5", ""}; auto structs = structs_col{{child1, child2, child3}, null_at(2)}; auto offsets = int32s_col{0, 0, 3}; - auto const null_it_values = null_at(0); - auto const null_it = null_it_values.begin(); // null row + auto const null_it = null_at(0); // null row auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 2); return cudf::make_lists_column( 2, offsets.release(), structs.release(), null_count, std::move(null_mask)); @@ -703,8 +700,7 @@ TEST_F(ConcatenateListElementsTest, ListsOfListsOfStructsHavingListsWithNulls) null_at(3)}; auto structs = structs_col{{child1, child2, child3}}; auto offsets = int32s_col{0, 2, 3, 6, 6, 8, 10}; - auto const null_it_values = null_at(3); - auto const null_it = null_it_values.begin(); // null list + auto const null_it = null_at(3); // null list auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 6); return cudf::make_lists_column( 6, offsets.release(), structs.release(), null_count, std::move(null_mask)); @@ -766,8 +762,7 @@ TEST_F(ConcatenateListElementsTest, ListsOfListsOfStructsHavingListsWithNulls) lists_col{{{1, 1}, {2}, {3, 3}, {7}, {8}, {9, 9}, {10, 10, 10, 10}}, no_nulls()}; auto structs = structs_col{{child1, child2, child3}}; auto offsets = int32s_col{0, 3, 3, 7}; - auto const null_it_values = null_at(1); - auto const null_it = null_it_values.begin(); // null row + auto const null_it = null_at(1); // null row auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 3); return cudf::make_lists_column( 3, offsets.release(), structs.release(), null_count, std::move(null_mask)); @@ -789,8 +784,7 @@ TEST_F(ConcatenateListElementsTest, ListsOfListsOfStructsHavingListsWithNulls) auto child3 = lists_col{{{7}, {8}, {9, 9}, {10, 10, 10, 10}}, no_nulls()}; auto structs = structs_col{{child1, child2, child3}}; auto offsets = int32s_col{0, 0, 4}; - auto const null_it_values = null_at(0); - auto const null_it = null_it_values.begin(); // null row + auto const null_it = null_at(0); // null row auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 2); return cudf::make_lists_column( 2, offsets.release(), structs.release(), null_count, std::move(null_mask)); @@ -847,8 +841,7 @@ TEST_F(ConcatenateListElementsTest, EmptyInnerListColumnWithNullRow) auto inner_elements = cudf::test::fixed_width_column_wrapper{}; auto inner_col = cudf::make_lists_column(0, inner_offsets.release(), inner_elements.release(), 0, {}); - auto const null_it_values = cudf::test::iterators::null_at(0); - auto const null_it = null_it_values.begin(); + auto const null_it = cudf::test::iterators::null_at(0); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 2); auto const col = cudf::make_lists_column( 2, offsets.release(), std::move(inner_col), null_count, std::move(null_mask)); diff --git a/cpp/tests/lists/contains_tests.cpp b/cpp/tests/lists/contains_tests.cpp index e66f036474d1..1f7ea0f79092 100644 --- a/cpp/tests/lists/contains_tests.cpp +++ b/cpp/tests/lists/contains_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-FileCopyrightText: Copyright (c) 2021-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 * */ @@ -323,8 +323,7 @@ TYPED_TEST(TypedContainsTest, ScalarKeysWithNullsInLists) auto numerals = cudf::test::fixed_width_column_wrapper{ {X, 1, 2, X, 4, 5, X, 7, 8, X, X, 1, 2, X, 1}, nulls_at({0, 3, 6, 9, 10, 13})}; - auto input_null_mask_values = null_at(4); - auto input_null_mask_iter = input_null_mask_values.begin(); + auto input_null_mask_iter = null_at(4); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(input_null_mask_iter, input_null_mask_iter + 8); @@ -368,8 +367,7 @@ TEST_F(ContainsTest, BoolScalarWithNullsInLists) auto numerals = cudf::test::fixed_width_column_wrapper{ {X, 1, 1, X, 1, 1, X, 1, 1, X, X, 1, 1, X, 1}, nulls_at({0, 3, 6, 9, 10, 13})}; - auto input_null_mask_values = null_at(4); - auto input_null_mask_iter = input_null_mask_values.begin(); + auto input_null_mask_iter = null_at(4); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(input_null_mask_iter, input_null_mask_iter + 8); auto search_space = cudf::make_lists_column( @@ -414,8 +412,7 @@ TEST_F(ContainsTest, StringScalarWithNullsInLists) auto strings = cudf::test::strings_column_wrapper{ {"X", "1", "2", "X", "4", "5", "X", "7", "8", "X", "X", "1", "2", "X", "1"}, nulls_at({0, 3, 6, 9, 10, 13})}; - auto input_null_mask_values = null_at(4); - auto input_null_mask_iter = input_null_mask_values.begin(); + auto input_null_mask_iter = null_at(4); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(input_null_mask_iter, input_null_mask_iter + 8); auto search_space = cudf::make_lists_column(8, @@ -653,9 +650,7 @@ TYPED_TEST(TypedVectorContainsTest, VectorWithNullsInLists) auto numerals = cudf::test::fixed_width_column_wrapper{ {X, 1, 2, X, 4, 5, X, 7, 8, X, X, 1, 2, X, 1}, nulls_at({0, 3, 6, 9, 10, 13})}; - auto input_null_mask_values = null_at(4); - - auto input_null_mask_iter = input_null_mask_values.begin(); + auto input_null_mask_iter = null_at(4); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(input_null_mask_iter, input_null_mask_iter + 8); auto search_space = cudf::make_lists_column(8, @@ -694,9 +689,7 @@ TYPED_TEST(TypedVectorContainsTest, ListContainsVectorWithNullsInListsAndInSearc auto numerals = cudf::test::fixed_width_column_wrapper{ {X, 1, 2, X, 4, 5, X, 7, 8, X, X, 1, 2, X, 1}, nulls_at({0, 3, 6, 9, 10, 13})}; - auto input_null_mask_values = null_at(4); - - auto input_null_mask_iter = input_null_mask_values.begin(); + auto input_null_mask_iter = null_at(4); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(input_null_mask_iter, input_null_mask_iter + 8); auto search_space = cudf::make_lists_column(8, @@ -736,9 +729,7 @@ TEST_F(ContainsTest, BoolKeyVectorWithNullsInListsAndInSearchKeys) auto numerals = cudf::test::fixed_width_column_wrapper{ {X, 0, 1, X, 1, 1, X, 1, 1, X, X, 0, 1, X, 1}, nulls_at({0, 3, 6, 9, 10, 13})}; - auto input_null_mask_values = null_at(4); - - auto input_null_mask_iter = input_null_mask_values.begin(); + auto input_null_mask_iter = null_at(4); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(input_null_mask_iter, input_null_mask_iter + 8); auto search_space = cudf::make_lists_column(8, @@ -776,8 +767,7 @@ TEST_F(ContainsTest, StringKeyVectorWithNullsInListsAndInSearchKeys) auto strings = cudf::test::strings_column_wrapper{ {"X", "1", "2", "X", "4", "5", "X", "7", "8", "X", "X", "1", "2", "X", "1"}, nulls_at({0, 3, 6, 9, 10, 13})}; - auto input_null_mask_values = null_at(4); - auto input_null_mask_iter = input_null_mask_values.begin(); + auto input_null_mask_iter = null_at(4); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(input_null_mask_iter, input_null_mask_iter + 8); auto search_space = cudf::make_lists_column( @@ -1204,9 +1194,8 @@ TYPED_TEST(TypedStructContainsTest, ScalarKeyWithNullLists) 1, 0, 1, 1 }; // clang-format on - auto child = cudf::test::structs_column_wrapper{{data1, data2}}; - auto const validity_iter_values = nulls_at({3, 10}); - auto const validity_iter = validity_iter_values.begin(); + auto child = cudf::test::structs_column_wrapper{{data1, data2}}; + auto const validity_iter = nulls_at({3, 10}); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(validity_iter, validity_iter + 11); return cudf::make_lists_column( @@ -1518,8 +1507,7 @@ TYPED_TEST(TypedStructContainsTest, ColumnKeyWithSlicedListsHavingNulls) }; // clang-format on auto child = cudf::test::structs_column_wrapper{{data1, data2}, nulls_at({1, 10, 15, 24})}; - auto const validity_iter_values = nulls_at({3, 10}); - auto const validity_iter = validity_iter_values.begin(); + auto const validity_iter = nulls_at({3, 10}); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(validity_iter, validity_iter + 11); return cudf::make_lists_column( diff --git a/cpp/tests/lists/stream_compaction/apply_boolean_mask_tests.cpp b/cpp/tests/lists/stream_compaction/apply_boolean_mask_tests.cpp index d1f73fbe9434..36be64551bb5 100644 --- a/cpp/tests/lists/stream_compaction/apply_boolean_mask_tests.cpp +++ b/cpp/tests/lists/stream_compaction/apply_boolean_mask_tests.cpp @@ -136,12 +136,11 @@ TYPED_TEST(ApplyBooleanMaskTypedTest, StructInput) auto constexpr num_input_rows = 7; auto const input = [] { - auto child_num = fwcw{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; - auto child_str = strings{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; - auto const null_mask_begin_values = null_at(5); - auto const null_mask_begin = null_mask_begin_values.begin(); - auto const null_mask_end = null_mask_begin + num_input_rows; - auto [null_mask, null_count] = detail::make_null_mask(null_mask_begin, null_mask_end); + auto child_num = fwcw{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; + auto child_str = strings{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; + auto const null_mask_begin = null_at(5); + auto const null_mask_end = null_mask_begin + num_input_rows; + auto [null_mask, null_count] = detail::make_null_mask(null_mask_begin, null_mask_end); return cudf::make_lists_column(num_input_rows, offsets{0, 2, 3, 6, 6, 8, 8, 10}.release(), structs_column_wrapper{{child_num, child_str}}.release(), @@ -155,12 +154,11 @@ TYPED_TEST(ApplyBooleanMaskTypedTest, StructInput) auto const filter = filter_t{{1, 1}, {0}, {0, 1, 0}, {}, {1, 0}, {}, {0, 1}}; auto const result = apply_boolean_mask(lists_column_view{*input}, lists_column_view{filter}); auto const expected = [] { - auto child_num = fwcw{0, 1, 4, 6, 9}; - auto child_str = strings{"0", "1", "4", "6", "9"}; - auto const null_mask_begin_values = null_at(5); - auto const null_mask_begin = null_mask_begin_values.begin(); - auto const null_mask_end = null_mask_begin + num_input_rows; - auto [null_mask, null_count] = detail::make_null_mask(null_mask_begin, null_mask_end); + auto child_num = fwcw{0, 1, 4, 6, 9}; + auto child_str = strings{"0", "1", "4", "6", "9"}; + auto const null_mask_begin = null_at(5); + auto const null_mask_end = null_mask_begin + num_input_rows; + auto [null_mask, null_count] = detail::make_null_mask(null_mask_begin, null_mask_end); return cudf::make_lists_column(num_input_rows, offsets{0, 2, 2, 3, 3, 4, 4, 5}.release(), structs_column_wrapper{{child_num, child_str}}.release(), @@ -178,12 +176,11 @@ TYPED_TEST(ApplyBooleanMaskTypedTest, StructInput) auto const result = apply_boolean_mask(lists_column_view{sliced_input}, lists_column_view{filter}); auto const expected = [] { - auto child_num = fwcw{4, 6, 9}; - auto child_str = strings{"4", "6", "9"}; - auto const null_mask_begin_values = null_at(4); - auto const null_mask_begin = null_mask_begin_values.begin(); - auto const null_mask_end = null_mask_begin + num_input_rows; - auto [null_mask, null_count] = detail::make_null_mask(null_mask_begin, null_mask_end); + auto child_num = fwcw{4, 6, 9}; + auto child_str = strings{"4", "6", "9"}; + auto const null_mask_begin = null_at(4); + auto const null_mask_end = null_mask_begin + num_input_rows; + auto [null_mask, null_count] = detail::make_null_mask(null_mask_begin, null_mask_end); return cudf::make_lists_column(num_input_rows - 1, offsets{0, 0, 1, 1, 2, 2, 3}.release(), structs_column_wrapper{{child_num, child_str}}.release(), diff --git a/cpp/tests/reductions/distinct_count_tests.cpp b/cpp/tests/reductions/distinct_count_tests.cpp index 186171f44810..12655805adaf 100644 --- a/cpp/tests/reductions/distinct_count_tests.cpp +++ b/cpp/tests/reductions/distinct_count_tests.cpp @@ -347,8 +347,7 @@ TEST_F(DistinctCount, NullableStructOfStructs) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it_values = nulls_at({6, 8}); - auto const null_it = null_it_values.begin(); + auto const null_it = nulls_at({6, 8}); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 9}); }(); diff --git a/cpp/tests/reductions/rank_tests.cpp b/cpp/tests/reductions/rank_tests.cpp index f7d49b225594..de64083a6b20 100644 --- a/cpp/tests/reductions/rank_tests.cpp +++ b/cpp/tests/reductions/rank_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-FileCopyrightText: Copyright (c) 2021-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -85,10 +85,9 @@ TYPED_TEST(TypedRankScanTest, RankWithNulls) return make_vector({-120, -120, -120, -16, -16, 5, 6, 6, 6, 6, 34, 113}); return make_vector({5, 5, 5, 6, 6, 9, 11, 11, 11, 11, 14, 34}); }(); - auto const null_iter_values = cudf::test::iterators::nulls_at({3, 6, 7, 11}); - auto const null_iter = null_iter_values.begin(); - auto const b = thrust::host_vector(null_iter, null_iter + v.size()); - auto col = this->make_column(v, b); + auto const null_iter = cudf::test::iterators::nulls_at({3, 6, 7, 11}); + auto const b = thrust::host_vector(null_iter, null_iter + v.size()); + auto col = this->make_column(v, b); auto const expected_dense = rank_result_col{1, 1, 1, 2, 3, 4, 5, 5, 6, 6, 7, 8}; auto const expected_rank = rank_result_col{1, 1, 1, 4, 5, 6, 7, 7, 9, 9, 11, 12}; @@ -220,8 +219,7 @@ TYPED_TEST(TypedRankScanTest, StructsWithNullPushdown) // Next, verify that if the structs column a null mask that is NOT pushed down to members, // the ranks are still correct. { - auto const null_iter_values = cudf::test::iterators::nulls_at({1, 2}); - auto const null_iter = null_iter_values.begin(); + auto const null_iter = cudf::test::iterators::nulls_at({1, 2}); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_iter, null_iter + struct_col->size()); struct_col->set_null_mask(std::move(null_mask), null_count); diff --git a/cpp/tests/reductions/unique_count_tests.cpp b/cpp/tests/reductions/unique_count_tests.cpp index 6bc770f55112..bb364acfbeee 100644 --- a/cpp/tests/reductions/unique_count_tests.cpp +++ b/cpp/tests/reductions/unique_count_tests.cpp @@ -261,8 +261,7 @@ TEST_F(UniqueCount, NullableStructOfStructs) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it_values = nulls_at({6, 7}); - auto const null_it = null_it_values.begin(); + auto const null_it = nulls_at({6, 7}); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 9}); }(); diff --git a/cpp/tests/reshape/byte_cast_tests.cpp b/cpp/tests/reshape/byte_cast_tests.cpp index e36ac599cf5d..a6b0e4105768 100644 --- a/cpp/tests/reshape/byte_cast_tests.cpp +++ b/cpp/tests/reshape/byte_cast_tests.cpp @@ -331,8 +331,7 @@ TEST_F(ByteCastTest, StringValuesWithNulls) // Set nulls by `set_null_mask` so the output column will have non-empty nulls. // This is intentional. - auto const null_iter_values = cudf::test::iterators::nulls_at({2, 4}); - auto const null_iter = null_iter_values.begin(); + auto const null_iter = cudf::test::iterators::nulls_at({2, 4}); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_iter, null_iter + output->size()); output->set_null_mask(std::move(null_mask), null_count); diff --git a/cpp/tests/rolling/collect_ops_test.cpp b/cpp/tests/rolling/collect_ops_test.cpp index 340a14e565a1..c0710f051549 100644 --- a/cpp/tests/rolling/collect_ops_test.cpp +++ b/cpp/tests/rolling/collect_ops_test.cpp @@ -1252,8 +1252,7 @@ TYPED_TEST(TypedCollectListTest, GroupedTimeRangeRollingWindowOnStructsWithMinPe auto expected_offsets_column = cudf::test::fixed_width_column_wrapper{0, 4, 8, 13, 18, 23, 23, 23, 23, 23} .release(); - auto expected_validity_iter_values = cudf::test::iterators::nulls_at({5, 6, 7, 8}); - auto expected_validity_iter = expected_validity_iter_values.begin(); + auto expected_validity_iter = cudf::test::iterators::nulls_at({5, 6, 7, 8}); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(expected_validity_iter, expected_validity_iter + 9); auto expected_result = cudf::make_lists_column(9, diff --git a/cpp/tests/stream_compaction/distinct_tests.cpp b/cpp/tests/stream_compaction/distinct_tests.cpp index 1806b60769a6..32253437be8c 100644 --- a/cpp/tests/stream_compaction/distinct_tests.cpp +++ b/cpp/tests/stream_compaction/distinct_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-FileCopyrightText: Copyright (c) 2019-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -866,8 +866,7 @@ TEST_F(DistinctKeepAny, ListsOfStructs) }(); auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 8, 10, 12, 14, 15, 16, 17, 18}; - auto const null_it_values = nulls_at({2, 3}); - auto const null_it = null_it_values.begin(); + auto const null_it = nulls_at({2, 3}); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 17); @@ -953,8 +952,7 @@ TEST_F(DistinctKeepFirstLastNone, ListsOfStructs) }(); auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 8, 10, 12, 14, 15, 16, 17, 18}; - auto const null_it_values = nulls_at({2, 3}); - auto const null_it = null_it_values.begin(); + auto const null_it = nulls_at({2, 3}); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 17); @@ -1050,8 +1048,7 @@ TEST_F(DistinctKeepAny, SlicedListsOfStructs) }(); auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 8, 10, 12, 14, 15, 16, 17, 18}; - auto const null_it_values = nulls_at({2, 3}); - auto const null_it = null_it_values.begin(); + auto const null_it = nulls_at({2, 3}); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 17); @@ -1105,8 +1102,7 @@ TEST_F(DistinctKeepAny, ListsOfEmptyStructs) // 11. [{}, {}] == // 12. [{}, {}] - auto const structs_null_values = nulls_at({0, 1, 2, 3, 4, 5, 6, 7}); - auto const structs_null_it = structs_null_values.begin(); + auto const structs_null_it = nulls_at({0, 1, 2, 3, 4, 5, 6, 7}); auto [structs_null_mask, structs_null_count] = cudf::test::detail::make_null_mask(structs_null_it, structs_null_it + 14); auto const structs = @@ -1116,9 +1112,8 @@ TEST_F(DistinctKeepAny, ListsOfEmptyStructs) static_cast(structs_null_mask.data()), structs_null_count); - auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 4, 6, 7, 8, 9, 10, 12, 14}; - auto const lists_null_values = nulls_at({2, 3}); - auto const lists_null_it = lists_null_values.begin(); + auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 4, 6, 7, 8, 9, 10, 12, 14}; + auto const lists_null_it = nulls_at({2, 3}); auto [lists_null_mask, lists_null_count] = cudf::test::detail::make_null_mask(lists_null_it, lists_null_it + 13); auto const keys = @@ -1216,8 +1211,7 @@ TEST_F(DistinctKeepAny, StructsOfStructs) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it_values = nulls_at({4, 5}); - auto const null_it = null_it_values.begin(); + auto const null_it = nulls_at({4, 5}); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 9}); }(); @@ -1270,8 +1264,7 @@ TEST_F(DistinctKeepAny, SlicedStructsOfStructs) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it_values = nulls_at({4, 5}); - auto const null_it = null_it_values.begin(); + auto const null_it = nulls_at({4, 5}); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 9}); }(); diff --git a/cpp/tests/stream_compaction/stable_distinct_tests.cpp b/cpp/tests/stream_compaction/stable_distinct_tests.cpp index d5d09e0474ab..120aa12dabac 100644 --- a/cpp/tests/stream_compaction/stable_distinct_tests.cpp +++ b/cpp/tests/stream_compaction/stable_distinct_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-FileCopyrightText: Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -805,8 +805,7 @@ TEST_F(StableDistinctKeepAny, ListsOfStructs) }(); auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 8, 10, 12, 14, 15, 16, 17, 18}; - auto const null_it_values = nulls_at({2, 3}); - auto const null_it = null_it_values.begin(); + auto const null_it = nulls_at({2, 3}); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 17); @@ -890,8 +889,7 @@ TEST_F(StableDistinctKeepFirstLastNone, ListsOfStructs) }(); auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 8, 10, 12, 14, 15, 16, 17, 18}; - auto const null_it_values = nulls_at({2, 3}); - auto const null_it = null_it_values.begin(); + auto const null_it = nulls_at({2, 3}); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 17); @@ -984,8 +982,7 @@ TEST_F(StableDistinctKeepAny, SlicedListsOfStructs) }(); auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 8, 10, 12, 14, 15, 16, 17, 18}; - auto const null_it_values = nulls_at({2, 3}); - auto const null_it = null_it_values.begin(); + auto const null_it = nulls_at({2, 3}); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 17); @@ -1040,8 +1037,7 @@ TEST_F(StableDistinctKeepAny, ListsOfEmptyStructs) // 11. [{}, {}] == // 12. [{}, {}] - auto const structs_null_values = nulls_at({0, 1, 2, 3, 4, 5, 6, 7}); - auto const structs_null_it = structs_null_values.begin(); + auto const structs_null_it = nulls_at({0, 1, 2, 3, 4, 5, 6, 7}); auto [structs_null_mask, structs_null_count] = cudf::test::detail::make_null_mask(structs_null_it, structs_null_it + 14); auto const structs = @@ -1051,9 +1047,8 @@ TEST_F(StableDistinctKeepAny, ListsOfEmptyStructs) static_cast(structs_null_mask.data()), structs_null_count); - auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 4, 6, 7, 8, 9, 10, 12, 14}; - auto const lists_null_values = nulls_at({2, 3}); - auto const lists_null_it = lists_null_values.begin(); + auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 4, 6, 7, 8, 9, 10, 12, 14}; + auto const lists_null_it = nulls_at({2, 3}); auto [lists_null_mask, lists_null_count] = cudf::test::detail::make_null_mask(lists_null_it, lists_null_it + 13); auto const keys = @@ -1153,8 +1148,7 @@ TEST_F(StableDistinctKeepAny, StructsOfStructs) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it_values = nulls_at({6, 7}); - auto const null_it = null_it_values.begin(); + auto const null_it = nulls_at({6, 7}); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 9}); }(); @@ -1208,8 +1202,7 @@ TEST_F(StableDistinctKeepAny, SlicedStructsOfStructs) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it_values = nulls_at({6, 7}); - auto const null_it = null_it_values.begin(); + auto const null_it = nulls_at({6, 7}); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 9}); }(); diff --git a/cpp/tests/stream_compaction/unique_tests.cpp b/cpp/tests/stream_compaction/unique_tests.cpp index ed76729d294b..2bc0480e47e4 100644 --- a/cpp/tests/stream_compaction/unique_tests.cpp +++ b/cpp/tests/stream_compaction/unique_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2019-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-FileCopyrightText: Copyright (c) 2019-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -461,8 +461,7 @@ TEST_F(Unique, ListsOfStructsKeepAny) }(); auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 8, 10, 12, 14, 15, 16, 17, 18}; - auto const null_it_values = nulls_at({2, 3}); - auto const null_it = null_it_values.begin(); + auto const null_it = nulls_at({2, 3}); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 17); auto const keys = cudf::column_view(cudf::data_type(cudf::type_id::LIST), @@ -545,8 +544,7 @@ TEST_F(Unique, ListsOfStructsKeepFirstLastNone) }(); auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 8, 10, 12, 14, 15, 16, 17, 18}; - auto const null_it_values = nulls_at({2, 3}); - auto const null_it = null_it_values.begin(); + auto const null_it = nulls_at({2, 3}); auto [null_mask, null_count] = cudf::test::detail::make_null_mask(null_it, null_it + 17); auto const keys = cudf::column_view(cudf::data_type(cudf::type_id::LIST), @@ -605,8 +603,7 @@ TEST_F(Unique, ListsOfEmptyStructsKeepAny) // 11. [{}, {}] == // 12. [{}, {}] - auto const structs_null_values = nulls_at({0, 1, 2, 3, 4, 5, 6, 7}); - auto const structs_null_it = structs_null_values.begin(); + auto const structs_null_it = nulls_at({0, 1, 2, 3, 4, 5, 6, 7}); auto [structs_null_mask, structs_null_count] = cudf::test::detail::make_null_mask(structs_null_it, structs_null_it + 14); auto const structs = @@ -616,9 +613,8 @@ TEST_F(Unique, ListsOfEmptyStructsKeepAny) static_cast(structs_null_mask.data()), structs_null_count); - auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 4, 6, 7, 8, 9, 10, 12, 14}; - auto const lists_null_values = nulls_at({2, 3}); - auto const lists_null_it = lists_null_values.begin(); + auto const offsets = int32s_col{0, 0, 0, 0, 0, 2, 4, 6, 7, 8, 9, 10, 12, 14}; + auto const lists_null_it = nulls_at({2, 3}); auto [lists_null_mask, lists_null_count] = cudf::test::detail::make_null_mask(lists_null_it, lists_null_it + 13); auto const keys = @@ -712,8 +708,7 @@ TEST_F(Unique, StructsOfStructsKeepAny) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it_values = nulls_at({6, 7}); - auto const null_it = null_it_values.begin(); + auto const null_it = nulls_at({6, 7}); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 9}); }(); diff --git a/cpp/tests/transform/one_hot_encode_tests.cpp b/cpp/tests/transform/one_hot_encode_tests.cpp index e50e812e9871..fb35743938da 100644 --- a/cpp/tests/transform/one_hot_encode_tests.cpp +++ b/cpp/tests/transform/one_hot_encode_tests.cpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-FileCopyrightText: Copyright (c) 2021-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ @@ -233,8 +233,7 @@ TEST_F(OneHotEncodingTest, StructsOfStructs) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it_values = nulls_at({0, 3}); - auto const null_it = null_it_values.begin(); + auto const null_it = nulls_at({0, 3}); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 7}); }(); @@ -247,8 +246,7 @@ TEST_F(OneHotEncodingTest, StructsOfStructs) std::vector> s1_children; s1_children.emplace_back(s2.release()); s1_children.emplace_back(c.release()); - auto const null_it_values = null_at(0); - auto const null_it = null_it_values.begin(); + auto const null_it = null_at(0); return structs_col(std::move(s1_children), std::vector{null_it, null_it + 4}); }(); From 2dc3d98aa45b4a45e497004b3138348cc2d12662 Mon Sep 17 00:00:00 2001 From: Yunsong Wang Date: Fri, 14 Aug 2026 21:17:54 +0000 Subject: [PATCH 27/27] Fix iterator checks and empty DECIMAL128 extraction --- .pre-commit-config.yaml | 2 +- cpp/include/cudf_test/print_utilities.cuh | 1 + java/src/main/native/src/aggregation128_utils.cu | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0bf845aa5386..fb38bff6e868 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -115,7 +115,7 @@ repos: - id: use-cuda-iterators name: use-cuda-iterators description: 'Enforce that CUDA iterators are used instead of equivalent Thrust iterators' - entry: 'thrust::(?:make_)?(?:constant|counting|discard|permutation|reverse|tabulate_output|transform|transform_output|zip)_iterator' + entry: 'thrust::(?:make_)?(?:constant|counting|discard|permutation|reverse|strided|tabulate_output|transform|transform_input_output|transform_output|zip)_iterator' language: pygrep types_or: [c, c++, cuda] - id: exec-policy-nosync-memory-resource diff --git a/cpp/include/cudf_test/print_utilities.cuh b/cpp/include/cudf_test/print_utilities.cuh index d720349c256f..484115f308e7 100644 --- a/cpp/include/cudf_test/print_utilities.cuh +++ b/cpp/include/cudf_test/print_utilities.cuh @@ -13,6 +13,7 @@ #include +#include #include namespace CUDF_EXPORT cudf { diff --git a/java/src/main/native/src/aggregation128_utils.cu b/java/src/main/native/src/aggregation128_utils.cu index 2b75a6a90998..2daa0622f2be 100644 --- a/java/src/main/native/src/aggregation128_utils.cu +++ b/java/src/main/native/src/aggregation128_utils.cu @@ -79,6 +79,8 @@ std::unique_ptr extract_chunk32(cudf::column_view const& in_col, auto const num_rows = in_col.size(); auto out_col = cudf::make_fixed_width_column(type, num_rows, copy_bitmask(in_col), in_col.null_count()); + if (num_rows == 0) { return out_col; } + auto out_view = out_col->mutable_view(); auto const in_begin = in_col.begin();