cuda-cccl 0.3.3__cp313-cp313-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of cuda-cccl might be problematic. Click here for more details.
- cuda/cccl/__init__.py +27 -0
- cuda/cccl/_cuda_version_utils.py +24 -0
- cuda/cccl/cooperative/__init__.py +9 -0
- cuda/cccl/cooperative/experimental/__init__.py +24 -0
- cuda/cccl/headers/__init__.py +7 -0
- cuda/cccl/headers/include/__init__.py +1 -0
- cuda/cccl/headers/include/cub/agent/agent_adjacent_difference.cuh +259 -0
- cuda/cccl/headers/include/cub/agent/agent_batch_memcpy.cuh +1182 -0
- cuda/cccl/headers/include/cub/agent/agent_for.cuh +81 -0
- cuda/cccl/headers/include/cub/agent/agent_histogram.cuh +709 -0
- cuda/cccl/headers/include/cub/agent/agent_merge.cuh +234 -0
- cuda/cccl/headers/include/cub/agent/agent_merge_sort.cuh +748 -0
- cuda/cccl/headers/include/cub/agent/agent_radix_sort_downsweep.cuh +786 -0
- cuda/cccl/headers/include/cub/agent/agent_radix_sort_histogram.cuh +286 -0
- cuda/cccl/headers/include/cub/agent/agent_radix_sort_onesweep.cuh +703 -0
- cuda/cccl/headers/include/cub/agent/agent_radix_sort_upsweep.cuh +555 -0
- cuda/cccl/headers/include/cub/agent/agent_reduce.cuh +619 -0
- cuda/cccl/headers/include/cub/agent/agent_reduce_by_key.cuh +806 -0
- cuda/cccl/headers/include/cub/agent/agent_rle.cuh +1124 -0
- cuda/cccl/headers/include/cub/agent/agent_scan.cuh +589 -0
- cuda/cccl/headers/include/cub/agent/agent_scan_by_key.cuh +474 -0
- cuda/cccl/headers/include/cub/agent/agent_segmented_radix_sort.cuh +289 -0
- cuda/cccl/headers/include/cub/agent/agent_select_if.cuh +1117 -0
- cuda/cccl/headers/include/cub/agent/agent_sub_warp_merge_sort.cuh +346 -0
- cuda/cccl/headers/include/cub/agent/agent_three_way_partition.cuh +606 -0
- cuda/cccl/headers/include/cub/agent/agent_topk.cuh +764 -0
- cuda/cccl/headers/include/cub/agent/agent_unique_by_key.cuh +631 -0
- cuda/cccl/headers/include/cub/agent/single_pass_scan_operators.cuh +1424 -0
- cuda/cccl/headers/include/cub/block/block_adjacent_difference.cuh +963 -0
- cuda/cccl/headers/include/cub/block/block_discontinuity.cuh +1227 -0
- cuda/cccl/headers/include/cub/block/block_exchange.cuh +1313 -0
- cuda/cccl/headers/include/cub/block/block_histogram.cuh +424 -0
- cuda/cccl/headers/include/cub/block/block_load.cuh +1264 -0
- cuda/cccl/headers/include/cub/block/block_load_to_shared.cuh +432 -0
- cuda/cccl/headers/include/cub/block/block_merge_sort.cuh +800 -0
- cuda/cccl/headers/include/cub/block/block_radix_rank.cuh +1225 -0
- cuda/cccl/headers/include/cub/block/block_radix_sort.cuh +2196 -0
- cuda/cccl/headers/include/cub/block/block_raking_layout.cuh +150 -0
- cuda/cccl/headers/include/cub/block/block_reduce.cuh +667 -0
- cuda/cccl/headers/include/cub/block/block_run_length_decode.cuh +434 -0
- cuda/cccl/headers/include/cub/block/block_scan.cuh +2315 -0
- cuda/cccl/headers/include/cub/block/block_shuffle.cuh +346 -0
- cuda/cccl/headers/include/cub/block/block_store.cuh +1247 -0
- cuda/cccl/headers/include/cub/block/radix_rank_sort_operations.cuh +624 -0
- cuda/cccl/headers/include/cub/block/specializations/block_histogram_atomic.cuh +86 -0
- cuda/cccl/headers/include/cub/block/specializations/block_histogram_sort.cuh +240 -0
- cuda/cccl/headers/include/cub/block/specializations/block_reduce_raking.cuh +252 -0
- cuda/cccl/headers/include/cub/block/specializations/block_reduce_raking_commutative_only.cuh +238 -0
- cuda/cccl/headers/include/cub/block/specializations/block_reduce_warp_reductions.cuh +281 -0
- cuda/cccl/headers/include/cub/block/specializations/block_scan_raking.cuh +790 -0
- cuda/cccl/headers/include/cub/block/specializations/block_scan_warp_scans.cuh +538 -0
- cuda/cccl/headers/include/cub/config.cuh +53 -0
- cuda/cccl/headers/include/cub/cub.cuh +120 -0
- cuda/cccl/headers/include/cub/detail/array_utils.cuh +78 -0
- cuda/cccl/headers/include/cub/detail/choose_offset.cuh +161 -0
- cuda/cccl/headers/include/cub/detail/detect_cuda_runtime.cuh +74 -0
- cuda/cccl/headers/include/cub/detail/device_double_buffer.cuh +96 -0
- cuda/cccl/headers/include/cub/detail/device_memory_resource.cuh +62 -0
- cuda/cccl/headers/include/cub/detail/fast_modulo_division.cuh +253 -0
- cuda/cccl/headers/include/cub/detail/integer_utils.cuh +88 -0
- cuda/cccl/headers/include/cub/detail/launcher/cuda_driver.cuh +142 -0
- cuda/cccl/headers/include/cub/detail/launcher/cuda_runtime.cuh +100 -0
- cuda/cccl/headers/include/cub/detail/mdspan_utils.cuh +114 -0
- cuda/cccl/headers/include/cub/detail/ptx-json/README.md +71 -0
- cuda/cccl/headers/include/cub/detail/ptx-json/array.h +68 -0
- cuda/cccl/headers/include/cub/detail/ptx-json/json.h +62 -0
- cuda/cccl/headers/include/cub/detail/ptx-json/object.h +100 -0
- cuda/cccl/headers/include/cub/detail/ptx-json/string.h +53 -0
- cuda/cccl/headers/include/cub/detail/ptx-json/value.h +95 -0
- cuda/cccl/headers/include/cub/detail/ptx-json-parser.h +63 -0
- cuda/cccl/headers/include/cub/detail/rfa.cuh +731 -0
- cuda/cccl/headers/include/cub/detail/strong_load.cuh +189 -0
- cuda/cccl/headers/include/cub/detail/strong_store.cuh +220 -0
- cuda/cccl/headers/include/cub/detail/temporary_storage.cuh +384 -0
- cuda/cccl/headers/include/cub/detail/type_traits.cuh +187 -0
- cuda/cccl/headers/include/cub/detail/uninitialized_copy.cuh +73 -0
- cuda/cccl/headers/include/cub/detail/unsafe_bitcast.cuh +56 -0
- cuda/cccl/headers/include/cub/device/device_adjacent_difference.cuh +596 -0
- cuda/cccl/headers/include/cub/device/device_copy.cuh +276 -0
- cuda/cccl/headers/include/cub/device/device_for.cuh +1063 -0
- cuda/cccl/headers/include/cub/device/device_histogram.cuh +1509 -0
- cuda/cccl/headers/include/cub/device/device_memcpy.cuh +195 -0
- cuda/cccl/headers/include/cub/device/device_merge.cuh +203 -0
- cuda/cccl/headers/include/cub/device/device_merge_sort.cuh +979 -0
- cuda/cccl/headers/include/cub/device/device_partition.cuh +668 -0
- cuda/cccl/headers/include/cub/device/device_radix_sort.cuh +3437 -0
- cuda/cccl/headers/include/cub/device/device_reduce.cuh +2518 -0
- cuda/cccl/headers/include/cub/device/device_run_length_encode.cuh +370 -0
- cuda/cccl/headers/include/cub/device/device_scan.cuh +2212 -0
- cuda/cccl/headers/include/cub/device/device_segmented_radix_sort.cuh +1496 -0
- cuda/cccl/headers/include/cub/device/device_segmented_reduce.cuh +1430 -0
- cuda/cccl/headers/include/cub/device/device_segmented_sort.cuh +2811 -0
- cuda/cccl/headers/include/cub/device/device_select.cuh +1228 -0
- cuda/cccl/headers/include/cub/device/device_topk.cuh +511 -0
- cuda/cccl/headers/include/cub/device/device_transform.cuh +668 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_adjacent_difference.cuh +315 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_batch_memcpy.cuh +719 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_common.cuh +43 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_copy_mdspan.cuh +79 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_for.cuh +198 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_histogram.cuh +1046 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_merge.cuh +303 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_merge_sort.cuh +473 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_radix_sort.cuh +1744 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce.cuh +1310 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce_by_key.cuh +655 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce_deterministic.cuh +531 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce_nondeterministic.cuh +313 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_rle.cuh +615 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_scan.cuh +517 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_scan_by_key.cuh +602 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_segmented_sort.cuh +975 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_select_if.cuh +842 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_streaming_reduce.cuh +341 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_streaming_reduce_by_key.cuh +440 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_three_way_partition.cuh +389 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_topk.cuh +627 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_transform.cuh +569 -0
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_unique_by_key.cuh +545 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/for_each.cuh +261 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/histogram.cuh +505 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/merge_sort.cuh +334 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/radix_sort.cuh +803 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/reduce.cuh +583 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/scan.cuh +189 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/segmented_reduce.cuh +321 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/segmented_sort.cuh +522 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/three_way_partition.cuh +201 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/transform.cuh +1028 -0
- cuda/cccl/headers/include/cub/device/dispatch/kernels/unique_by_key.cuh +176 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_adjacent_difference.cuh +67 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_batch_memcpy.cuh +118 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_for.cuh +60 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_histogram.cuh +275 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_merge.cuh +76 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_merge_sort.cuh +126 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_radix_sort.cuh +1065 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_reduce.cuh +493 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_reduce_by_key.cuh +942 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_run_length_encode.cuh +673 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_scan.cuh +618 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_scan_by_key.cuh +1010 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_segmented_sort.cuh +398 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_select_if.cuh +1588 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_three_way_partition.cuh +440 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_topk.cuh +85 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_transform.cuh +481 -0
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_unique_by_key.cuh +884 -0
- cuda/cccl/headers/include/cub/grid/grid_even_share.cuh +227 -0
- cuda/cccl/headers/include/cub/grid/grid_mapping.cuh +106 -0
- cuda/cccl/headers/include/cub/grid/grid_queue.cuh +202 -0
- cuda/cccl/headers/include/cub/iterator/arg_index_input_iterator.cuh +254 -0
- cuda/cccl/headers/include/cub/iterator/cache_modified_input_iterator.cuh +259 -0
- cuda/cccl/headers/include/cub/iterator/cache_modified_output_iterator.cuh +250 -0
- cuda/cccl/headers/include/cub/iterator/tex_obj_input_iterator.cuh +320 -0
- cuda/cccl/headers/include/cub/thread/thread_load.cuh +349 -0
- cuda/cccl/headers/include/cub/thread/thread_operators.cuh +688 -0
- cuda/cccl/headers/include/cub/thread/thread_reduce.cuh +548 -0
- cuda/cccl/headers/include/cub/thread/thread_scan.cuh +498 -0
- cuda/cccl/headers/include/cub/thread/thread_search.cuh +199 -0
- cuda/cccl/headers/include/cub/thread/thread_simd.cuh +458 -0
- cuda/cccl/headers/include/cub/thread/thread_sort.cuh +102 -0
- cuda/cccl/headers/include/cub/thread/thread_store.cuh +365 -0
- cuda/cccl/headers/include/cub/util_allocator.cuh +921 -0
- cuda/cccl/headers/include/cub/util_arch.cuh +167 -0
- cuda/cccl/headers/include/cub/util_cpp_dialect.cuh +95 -0
- cuda/cccl/headers/include/cub/util_debug.cuh +207 -0
- cuda/cccl/headers/include/cub/util_device.cuh +800 -0
- cuda/cccl/headers/include/cub/util_macro.cuh +97 -0
- cuda/cccl/headers/include/cub/util_math.cuh +118 -0
- cuda/cccl/headers/include/cub/util_namespace.cuh +176 -0
- cuda/cccl/headers/include/cub/util_policy_wrapper_t.cuh +55 -0
- cuda/cccl/headers/include/cub/util_ptx.cuh +513 -0
- cuda/cccl/headers/include/cub/util_temporary_storage.cuh +122 -0
- cuda/cccl/headers/include/cub/util_type.cuh +1120 -0
- cuda/cccl/headers/include/cub/util_vsmem.cuh +253 -0
- cuda/cccl/headers/include/cub/version.cuh +89 -0
- cuda/cccl/headers/include/cub/warp/specializations/warp_exchange_shfl.cuh +329 -0
- cuda/cccl/headers/include/cub/warp/specializations/warp_exchange_smem.cuh +177 -0
- cuda/cccl/headers/include/cub/warp/specializations/warp_reduce_shfl.cuh +737 -0
- cuda/cccl/headers/include/cub/warp/specializations/warp_reduce_smem.cuh +408 -0
- cuda/cccl/headers/include/cub/warp/specializations/warp_scan_shfl.cuh +952 -0
- cuda/cccl/headers/include/cub/warp/specializations/warp_scan_smem.cuh +715 -0
- cuda/cccl/headers/include/cub/warp/warp_exchange.cuh +405 -0
- cuda/cccl/headers/include/cub/warp/warp_load.cuh +614 -0
- cuda/cccl/headers/include/cub/warp/warp_merge_sort.cuh +169 -0
- cuda/cccl/headers/include/cub/warp/warp_reduce.cuh +829 -0
- cuda/cccl/headers/include/cub/warp/warp_scan.cuh +1890 -0
- cuda/cccl/headers/include/cub/warp/warp_store.cuh +521 -0
- cuda/cccl/headers/include/cub/warp/warp_utils.cuh +61 -0
- cuda/cccl/headers/include/cuda/__algorithm/common.h +68 -0
- cuda/cccl/headers/include/cuda/__algorithm/copy.h +196 -0
- cuda/cccl/headers/include/cuda/__algorithm/fill.h +107 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/access_property.h +165 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/access_property_encoding.h +172 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/annotated_ptr.h +217 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/annotated_ptr_base.h +100 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/apply_access_property.h +83 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/associate_access_property.h +128 -0
- cuda/cccl/headers/include/cuda/__annotated_ptr/createpolicy.h +210 -0
- cuda/cccl/headers/include/cuda/__atomic/atomic.h +145 -0
- cuda/cccl/headers/include/cuda/__barrier/async_contract_fulfillment.h +39 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier.h +65 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier_arrive_tx.h +102 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier_block_scope.h +487 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier_expect_tx.h +74 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier_native_handle.h +45 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier_thread_scope.h +60 -0
- cuda/cccl/headers/include/cuda/__bit/bit_reverse.h +171 -0
- cuda/cccl/headers/include/cuda/__bit/bitfield.h +122 -0
- cuda/cccl/headers/include/cuda/__bit/bitmask.h +90 -0
- cuda/cccl/headers/include/cuda/__cccl_config +37 -0
- cuda/cccl/headers/include/cuda/__cmath/ceil_div.h +124 -0
- cuda/cccl/headers/include/cuda/__cmath/fast_modulo_division.h +178 -0
- cuda/cccl/headers/include/cuda/__cmath/ilog.h +195 -0
- cuda/cccl/headers/include/cuda/__cmath/ipow.h +107 -0
- cuda/cccl/headers/include/cuda/__cmath/isqrt.h +80 -0
- cuda/cccl/headers/include/cuda/__cmath/mul_hi.h +146 -0
- cuda/cccl/headers/include/cuda/__cmath/neg.h +47 -0
- cuda/cccl/headers/include/cuda/__cmath/pow2.h +74 -0
- cuda/cccl/headers/include/cuda/__cmath/round_down.h +102 -0
- cuda/cccl/headers/include/cuda/__cmath/round_up.h +104 -0
- cuda/cccl/headers/include/cuda/__cmath/uabs.h +57 -0
- cuda/cccl/headers/include/cuda/__complex/complex.h +238 -0
- cuda/cccl/headers/include/cuda/__complex/get_real_imag.h +89 -0
- cuda/cccl/headers/include/cuda/__complex/traits.h +64 -0
- cuda/cccl/headers/include/cuda/__complex_ +28 -0
- cuda/cccl/headers/include/cuda/__device/all_devices.h +140 -0
- cuda/cccl/headers/include/cuda/__device/arch_id.h +176 -0
- cuda/cccl/headers/include/cuda/__device/arch_traits.h +537 -0
- cuda/cccl/headers/include/cuda/__device/attributes.h +772 -0
- cuda/cccl/headers/include/cuda/__device/compute_capability.h +171 -0
- cuda/cccl/headers/include/cuda/__device/device_ref.h +156 -0
- cuda/cccl/headers/include/cuda/__device/physical_device.h +172 -0
- cuda/cccl/headers/include/cuda/__driver/driver_api.h +835 -0
- cuda/cccl/headers/include/cuda/__event/event.h +171 -0
- cuda/cccl/headers/include/cuda/__event/event_ref.h +157 -0
- cuda/cccl/headers/include/cuda/__event/timed_event.h +120 -0
- cuda/cccl/headers/include/cuda/__execution/determinism.h +91 -0
- cuda/cccl/headers/include/cuda/__execution/output_ordering.h +89 -0
- cuda/cccl/headers/include/cuda/__execution/require.h +75 -0
- cuda/cccl/headers/include/cuda/__execution/tune.h +70 -0
- cuda/cccl/headers/include/cuda/__functional/address_stability.h +131 -0
- cuda/cccl/headers/include/cuda/__functional/for_each_canceled.h +321 -0
- cuda/cccl/headers/include/cuda/__functional/maximum.h +58 -0
- cuda/cccl/headers/include/cuda/__functional/minimum.h +58 -0
- cuda/cccl/headers/include/cuda/__functional/proclaim_return_type.h +108 -0
- cuda/cccl/headers/include/cuda/__fwd/barrier.h +38 -0
- cuda/cccl/headers/include/cuda/__fwd/barrier_native_handle.h +42 -0
- cuda/cccl/headers/include/cuda/__fwd/complex.h +48 -0
- cuda/cccl/headers/include/cuda/__fwd/devices.h +44 -0
- cuda/cccl/headers/include/cuda/__fwd/get_stream.h +38 -0
- cuda/cccl/headers/include/cuda/__fwd/pipeline.h +37 -0
- cuda/cccl/headers/include/cuda/__fwd/zip_iterator.h +58 -0
- cuda/cccl/headers/include/cuda/__iterator/constant_iterator.h +315 -0
- cuda/cccl/headers/include/cuda/__iterator/counting_iterator.h +483 -0
- cuda/cccl/headers/include/cuda/__iterator/discard_iterator.h +324 -0
- cuda/cccl/headers/include/cuda/__iterator/permutation_iterator.h +456 -0
- cuda/cccl/headers/include/cuda/__iterator/shuffle_iterator.h +334 -0
- cuda/cccl/headers/include/cuda/__iterator/strided_iterator.h +418 -0
- cuda/cccl/headers/include/cuda/__iterator/tabulate_output_iterator.h +367 -0
- cuda/cccl/headers/include/cuda/__iterator/transform_input_output_iterator.h +528 -0
- cuda/cccl/headers/include/cuda/__iterator/transform_iterator.h +527 -0
- cuda/cccl/headers/include/cuda/__iterator/transform_output_iterator.h +486 -0
- cuda/cccl/headers/include/cuda/__iterator/zip_common.h +148 -0
- cuda/cccl/headers/include/cuda/__iterator/zip_function.h +112 -0
- cuda/cccl/headers/include/cuda/__iterator/zip_iterator.h +557 -0
- cuda/cccl/headers/include/cuda/__iterator/zip_transform_iterator.h +592 -0
- cuda/cccl/headers/include/cuda/__latch/latch.h +44 -0
- cuda/cccl/headers/include/cuda/__mdspan/host_device_accessor.h +533 -0
- cuda/cccl/headers/include/cuda/__mdspan/host_device_mdspan.h +238 -0
- cuda/cccl/headers/include/cuda/__mdspan/restrict_accessor.h +152 -0
- cuda/cccl/headers/include/cuda/__mdspan/restrict_mdspan.h +117 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/check_preconditions.h +79 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/completion_mechanism.h +47 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/cp_async_bulk_shared_global.h +60 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/cp_async_fallback.h +72 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/cp_async_shared_global.h +148 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/dispatch_memcpy_async.h +165 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/is_local_smem_barrier.h +53 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/memcpy_async.h +179 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/memcpy_async_barrier.h +99 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/memcpy_async_tx.h +104 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/memcpy_completion.h +170 -0
- cuda/cccl/headers/include/cuda/__memcpy_async/try_get_barrier_handle.h +59 -0
- cuda/cccl/headers/include/cuda/__memory/address_space.h +227 -0
- cuda/cccl/headers/include/cuda/__memory/align_down.h +56 -0
- cuda/cccl/headers/include/cuda/__memory/align_up.h +56 -0
- cuda/cccl/headers/include/cuda/__memory/aligned_size.h +61 -0
- cuda/cccl/headers/include/cuda/__memory/check_address.h +111 -0
- cuda/cccl/headers/include/cuda/__memory/discard_memory.h +64 -0
- cuda/cccl/headers/include/cuda/__memory/get_device_address.h +58 -0
- cuda/cccl/headers/include/cuda/__memory/is_aligned.h +47 -0
- cuda/cccl/headers/include/cuda/__memory/ptr_in_range.h +93 -0
- cuda/cccl/headers/include/cuda/__memory/ptr_rebind.h +75 -0
- cuda/cccl/headers/include/cuda/__memory_resource/get_memory_resource.h +82 -0
- cuda/cccl/headers/include/cuda/__memory_resource/get_property.h +153 -0
- cuda/cccl/headers/include/cuda/__memory_resource/properties.h +113 -0
- cuda/cccl/headers/include/cuda/__memory_resource/resource.h +125 -0
- cuda/cccl/headers/include/cuda/__memory_resource/resource_ref.h +652 -0
- cuda/cccl/headers/include/cuda/__numeric/add_overflow.h +306 -0
- cuda/cccl/headers/include/cuda/__numeric/narrow.h +108 -0
- cuda/cccl/headers/include/cuda/__numeric/overflow_cast.h +59 -0
- cuda/cccl/headers/include/cuda/__numeric/overflow_result.h +43 -0
- cuda/cccl/headers/include/cuda/__nvtx/nvtx.h +120 -0
- cuda/cccl/headers/include/cuda/__nvtx/nvtx3.h +2983 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/barrier_cluster.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/bfind.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/bmsk.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/clusterlaunchcontrol.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/cp_async_bulk.h +44 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/cp_async_bulk_commit_group.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/cp_async_bulk_tensor.h +45 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/cp_async_bulk_wait_group.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/cp_async_mbarrier_arrive.h +42 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/cp_reduce_async_bulk.h +60 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/cp_reduce_async_bulk_tensor.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/elect_sync.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/exit.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/fence.h +49 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/barrier_cluster.h +115 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/bfind.h +190 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/bmsk.h +54 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/clusterlaunchcontrol.h +242 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk.h +197 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_commit_group.h +25 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_multicast.h +54 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_tensor.h +997 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_tensor_gather_scatter.h +318 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_tensor_multicast.h +671 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_wait_group.h +46 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_mbarrier_arrive.h +26 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_mbarrier_arrive_noinc.h +26 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_reduce_async_bulk.h +1470 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_reduce_async_bulk_bf16.h +132 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_reduce_async_bulk_f16.h +132 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_reduce_async_bulk_tensor.h +601 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/elect_sync.h +36 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/exit.h +25 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence.h +208 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_mbarrier_init.h +31 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_proxy_alias.h +25 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_proxy_async.h +58 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_proxy_async_generic_sync_restrict.h +64 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_proxy_tensormap_generic.h +102 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_sync_restrict.h +64 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/get_sreg.h +949 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/getctarank.h +32 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/ld.h +5542 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_arrive.h +399 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_arrive_expect_tx.h +184 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_arrive_no_complete.h +34 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_expect_tx.h +102 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_init.h +27 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_test_wait.h +143 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_test_wait_parity.h +144 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_try_wait.h +286 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_try_wait_parity.h +290 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/multimem_ld_reduce.h +2202 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/multimem_red.h +1362 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/multimem_st.h +236 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/prmt.h +230 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/red_async.h +460 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/shl.h +96 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/shr.h +168 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/st.h +1490 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/st_async.h +123 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/st_bulk.h +31 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_alloc.h +132 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_commit.h +99 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_cp.h +765 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_fence.h +58 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_ld.h +4927 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_mma.h +4291 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_mma_ws.h +7110 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_shift.h +42 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_st.h +5063 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_wait.h +56 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tensormap_cp_fenceproxy.h +71 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tensormap_replace.h +1030 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/generated/trap.h +25 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/get_sreg.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/getctarank.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/ld.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/mbarrier_arrive.h +45 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/mbarrier_expect_tx.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/mbarrier_init.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/mbarrier_wait.h +46 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/multimem_ld_reduce.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/multimem_red.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/multimem_st.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/prmt.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/red_async.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/shfl_sync.h +244 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/shl.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/shr.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/st.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/st_async.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/st_bulk.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_alloc.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_commit.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_cp.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_fence.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_ld.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_mma.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_mma_ws.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_shift.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_st.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_wait.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tensormap_cp_fenceproxy.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/tensormap_replace.h +43 -0
- cuda/cccl/headers/include/cuda/__ptx/instructions/trap.h +41 -0
- cuda/cccl/headers/include/cuda/__ptx/pragmas/enable_smem_spilling.h +47 -0
- cuda/cccl/headers/include/cuda/__ptx/ptx_dot_variants.h +230 -0
- cuda/cccl/headers/include/cuda/__ptx/ptx_helper_functions.h +176 -0
- cuda/cccl/headers/include/cuda/__random/feistel_bijection.h +105 -0
- cuda/cccl/headers/include/cuda/__random/random_bijection.h +88 -0
- cuda/cccl/headers/include/cuda/__runtime/ensure_current_context.h +99 -0
- cuda/cccl/headers/include/cuda/__runtime/types.h +41 -0
- cuda/cccl/headers/include/cuda/__semaphore/counting_semaphore.h +53 -0
- cuda/cccl/headers/include/cuda/__stream/get_stream.h +110 -0
- cuda/cccl/headers/include/cuda/__stream/stream.h +141 -0
- cuda/cccl/headers/include/cuda/__stream/stream_ref.h +303 -0
- cuda/cccl/headers/include/cuda/__type_traits/is_floating_point.h +47 -0
- cuda/cccl/headers/include/cuda/__type_traits/is_specialization_of.h +37 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/access.h +88 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/any_cast.h +83 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/basic_any_base.h +148 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/basic_any_from.h +96 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/basic_any_fwd.h +128 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/basic_any_ptr.h +304 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/basic_any_ref.h +337 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/basic_any_value.h +590 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/conversions.h +169 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/dynamic_any_cast.h +107 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/interfaces.h +359 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/iset.h +142 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/overrides.h +64 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/rtti.h +257 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/semiregular.h +322 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/storage.h +79 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/tagged_ptr.h +58 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/virtcall.h +162 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/virtual_functions.h +184 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/virtual_ptrs.h +80 -0
- cuda/cccl/headers/include/cuda/__utility/__basic_any/virtual_tables.h +155 -0
- cuda/cccl/headers/include/cuda/__utility/basic_any.h +507 -0
- cuda/cccl/headers/include/cuda/__utility/immovable.h +50 -0
- cuda/cccl/headers/include/cuda/__utility/in_range.h +65 -0
- cuda/cccl/headers/include/cuda/__utility/inherit.h +36 -0
- cuda/cccl/headers/include/cuda/__utility/no_init.h +29 -0
- cuda/cccl/headers/include/cuda/__utility/static_for.h +79 -0
- cuda/cccl/headers/include/cuda/__warp/lane_mask.h +326 -0
- cuda/cccl/headers/include/cuda/__warp/warp_match_all.h +65 -0
- cuda/cccl/headers/include/cuda/__warp/warp_shuffle.h +251 -0
- cuda/cccl/headers/include/cuda/access_property +26 -0
- cuda/cccl/headers/include/cuda/algorithm +27 -0
- cuda/cccl/headers/include/cuda/annotated_ptr +29 -0
- cuda/cccl/headers/include/cuda/atomic +27 -0
- cuda/cccl/headers/include/cuda/barrier +267 -0
- cuda/cccl/headers/include/cuda/bit +29 -0
- cuda/cccl/headers/include/cuda/cmath +37 -0
- cuda/cccl/headers/include/cuda/devices +33 -0
- cuda/cccl/headers/include/cuda/discard_memory +32 -0
- cuda/cccl/headers/include/cuda/functional +32 -0
- cuda/cccl/headers/include/cuda/iterator +39 -0
- cuda/cccl/headers/include/cuda/latch +27 -0
- cuda/cccl/headers/include/cuda/mdspan +28 -0
- cuda/cccl/headers/include/cuda/memory +35 -0
- cuda/cccl/headers/include/cuda/memory_resource +35 -0
- cuda/cccl/headers/include/cuda/numeric +29 -0
- cuda/cccl/headers/include/cuda/pipeline +579 -0
- cuda/cccl/headers/include/cuda/ptx +129 -0
- cuda/cccl/headers/include/cuda/semaphore +31 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/adjacent_find.h +59 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/all_of.h +45 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/any_of.h +45 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/binary_search.h +53 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/clamp.h +48 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/comp.h +58 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/comp_ref_type.h +85 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/copy.h +142 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/copy_backward.h +80 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/copy_if.h +47 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/copy_n.h +73 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/count.h +49 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/count_if.h +49 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/equal.h +128 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/equal_range.h +101 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/fill.h +58 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/fill_n.h +51 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/find.h +62 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/find_end.h +225 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/find_first_of.h +73 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/find_if.h +46 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/find_if_not.h +46 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/for_each.h +42 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/for_each_n.h +48 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/generate.h +41 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/generate_n.h +46 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/half_positive.h +49 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/in_fun_result.h +55 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/includes.h +90 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_heap.h +50 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_heap_until.h +83 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_partitioned.h +57 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_permutation.h +252 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_sorted.h +49 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/is_sorted_until.h +68 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/iter_swap.h +82 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/iterator_operations.h +185 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/lexicographical_compare.h +68 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/lower_bound.h +82 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/make_heap.h +70 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/make_projected.h +88 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/max.h +62 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/max_element.h +67 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/merge.h +89 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/min.h +62 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/min_element.h +87 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/minmax.h +66 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/minmax_element.h +139 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/mismatch.h +83 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/move.h +86 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/move_backward.h +84 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/next_permutation.h +88 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/none_of.h +45 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/partial_sort.h +102 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/partial_sort_copy.h +122 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/partition.h +120 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/partition_copy.h +59 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/partition_point.h +61 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/pop_heap.h +93 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/prev_permutation.h +88 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/push_heap.h +100 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/ranges_for_each.h +84 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/ranges_for_each_n.h +68 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/ranges_iterator_concept.h +65 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/ranges_min.h +98 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/ranges_min_element.h +68 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/remove.h +55 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/remove_copy.h +47 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/remove_copy_if.h +47 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/remove_if.h +56 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/replace.h +45 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/replace_copy.h +54 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/replace_copy_if.h +50 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/replace_if.h +45 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/reverse.h +81 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/reverse_copy.h +43 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/rotate.h +261 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/rotate_copy.h +40 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/search.h +185 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/search_n.h +163 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/set_difference.h +95 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/set_intersection.h +122 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/set_symmetric_difference.h +134 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/set_union.h +128 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/shift_left.h +84 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/shift_right.h +144 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/sift_down.h +139 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/sort_heap.h +70 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/swap_ranges.h +78 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/transform.h +59 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/unique.h +76 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/unique_copy.h +155 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/unwrap_iter.h +95 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/unwrap_range.h +126 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/upper_bound.h +83 -0
- cuda/cccl/headers/include/cuda/std/__algorithm_ +26 -0
- cuda/cccl/headers/include/cuda/std/__atomic/api/common.h +192 -0
- cuda/cccl/headers/include/cuda/std/__atomic/api/owned.h +136 -0
- cuda/cccl/headers/include/cuda/std/__atomic/api/reference.h +118 -0
- cuda/cccl/headers/include/cuda/std/__atomic/functions/common.h +58 -0
- cuda/cccl/headers/include/cuda/std/__atomic/functions/cuda_local.h +208 -0
- cuda/cccl/headers/include/cuda/std/__atomic/functions/cuda_ptx_derived.h +401 -0
- cuda/cccl/headers/include/cuda/std/__atomic/functions/cuda_ptx_generated.h +3971 -0
- cuda/cccl/headers/include/cuda/std/__atomic/functions/cuda_ptx_generated_helper.h +177 -0
- cuda/cccl/headers/include/cuda/std/__atomic/functions/host.h +211 -0
- cuda/cccl/headers/include/cuda/std/__atomic/functions.h +33 -0
- cuda/cccl/headers/include/cuda/std/__atomic/order.h +159 -0
- cuda/cccl/headers/include/cuda/std/__atomic/platform/msvc_to_builtins.h +654 -0
- cuda/cccl/headers/include/cuda/std/__atomic/platform.h +93 -0
- cuda/cccl/headers/include/cuda/std/__atomic/scopes.h +105 -0
- cuda/cccl/headers/include/cuda/std/__atomic/types/base.h +249 -0
- cuda/cccl/headers/include/cuda/std/__atomic/types/common.h +104 -0
- cuda/cccl/headers/include/cuda/std/__atomic/types/locked.h +225 -0
- cuda/cccl/headers/include/cuda/std/__atomic/types/reference.h +72 -0
- cuda/cccl/headers/include/cuda/std/__atomic/types/small.h +228 -0
- cuda/cccl/headers/include/cuda/std/__atomic/types.h +52 -0
- cuda/cccl/headers/include/cuda/std/__atomic/wait/notify_wait.h +95 -0
- cuda/cccl/headers/include/cuda/std/__atomic/wait/polling.h +65 -0
- cuda/cccl/headers/include/cuda/std/__barrier/barrier.h +227 -0
- cuda/cccl/headers/include/cuda/std/__barrier/empty_completion.h +37 -0
- cuda/cccl/headers/include/cuda/std/__barrier/poll_tester.h +82 -0
- cuda/cccl/headers/include/cuda/std/__bit/bit_cast.h +76 -0
- cuda/cccl/headers/include/cuda/std/__bit/byteswap.h +185 -0
- cuda/cccl/headers/include/cuda/std/__bit/countl.h +174 -0
- cuda/cccl/headers/include/cuda/std/__bit/countr.h +185 -0
- cuda/cccl/headers/include/cuda/std/__bit/endian.h +39 -0
- cuda/cccl/headers/include/cuda/std/__bit/has_single_bit.h +43 -0
- cuda/cccl/headers/include/cuda/std/__bit/integral.h +126 -0
- cuda/cccl/headers/include/cuda/std/__bit/popcount.h +154 -0
- cuda/cccl/headers/include/cuda/std/__bit/reference.h +1272 -0
- cuda/cccl/headers/include/cuda/std/__bit/rotate.h +94 -0
- cuda/cccl/headers/include/cuda/std/__cccl/algorithm_wrapper.h +36 -0
- cuda/cccl/headers/include/cuda/std/__cccl/architecture.h +78 -0
- cuda/cccl/headers/include/cuda/std/__cccl/assert.h +161 -0
- cuda/cccl/headers/include/cuda/std/__cccl/attributes.h +206 -0
- cuda/cccl/headers/include/cuda/std/__cccl/builtin.h +673 -0
- cuda/cccl/headers/include/cuda/std/__cccl/compiler.h +217 -0
- cuda/cccl/headers/include/cuda/std/__cccl/cuda_capabilities.h +51 -0
- cuda/cccl/headers/include/cuda/std/__cccl/cuda_toolkit.h +56 -0
- cuda/cccl/headers/include/cuda/std/__cccl/deprecated.h +88 -0
- cuda/cccl/headers/include/cuda/std/__cccl/diagnostic.h +131 -0
- cuda/cccl/headers/include/cuda/std/__cccl/dialect.h +123 -0
- cuda/cccl/headers/include/cuda/std/__cccl/epilogue.h +344 -0
- cuda/cccl/headers/include/cuda/std/__cccl/exceptions.h +91 -0
- cuda/cccl/headers/include/cuda/std/__cccl/execution_space.h +74 -0
- cuda/cccl/headers/include/cuda/std/__cccl/extended_data_types.h +160 -0
- cuda/cccl/headers/include/cuda/std/__cccl/host_std_lib.h +52 -0
- cuda/cccl/headers/include/cuda/std/__cccl/is_non_narrowing_convertible.h +73 -0
- cuda/cccl/headers/include/cuda/std/__cccl/memory_wrapper.h +36 -0
- cuda/cccl/headers/include/cuda/std/__cccl/numeric_wrapper.h +36 -0
- cuda/cccl/headers/include/cuda/std/__cccl/os.h +54 -0
- cuda/cccl/headers/include/cuda/std/__cccl/preprocessor.h +1286 -0
- cuda/cccl/headers/include/cuda/std/__cccl/prologue.h +281 -0
- cuda/cccl/headers/include/cuda/std/__cccl/ptx_isa.h +253 -0
- cuda/cccl/headers/include/cuda/std/__cccl/rtti.h +72 -0
- cuda/cccl/headers/include/cuda/std/__cccl/sequence_access.h +87 -0
- cuda/cccl/headers/include/cuda/std/__cccl/system_header.h +38 -0
- cuda/cccl/headers/include/cuda/std/__cccl/unreachable.h +31 -0
- cuda/cccl/headers/include/cuda/std/__cccl/version.h +26 -0
- cuda/cccl/headers/include/cuda/std/__cccl/visibility.h +171 -0
- cuda/cccl/headers/include/cuda/std/__charconv/chars_format.h +81 -0
- cuda/cccl/headers/include/cuda/std/__charconv/from_chars.h +154 -0
- cuda/cccl/headers/include/cuda/std/__charconv/from_chars_result.h +56 -0
- cuda/cccl/headers/include/cuda/std/__charconv/to_chars.h +148 -0
- cuda/cccl/headers/include/cuda/std/__charconv/to_chars_result.h +56 -0
- cuda/cccl/headers/include/cuda/std/__charconv_ +31 -0
- cuda/cccl/headers/include/cuda/std/__chrono/calendar.h +54 -0
- cuda/cccl/headers/include/cuda/std/__chrono/day.h +162 -0
- cuda/cccl/headers/include/cuda/std/__chrono/duration.h +503 -0
- cuda/cccl/headers/include/cuda/std/__chrono/file_clock.h +55 -0
- cuda/cccl/headers/include/cuda/std/__chrono/high_resolution_clock.h +46 -0
- cuda/cccl/headers/include/cuda/std/__chrono/month.h +187 -0
- cuda/cccl/headers/include/cuda/std/__chrono/steady_clock.h +60 -0
- cuda/cccl/headers/include/cuda/std/__chrono/system_clock.h +80 -0
- cuda/cccl/headers/include/cuda/std/__chrono/time_point.h +259 -0
- cuda/cccl/headers/include/cuda/std/__chrono/year.h +186 -0
- cuda/cccl/headers/include/cuda/std/__cmath/abs.h +127 -0
- cuda/cccl/headers/include/cuda/std/__cmath/copysign.h +88 -0
- cuda/cccl/headers/include/cuda/std/__cmath/error_functions.h +200 -0
- cuda/cccl/headers/include/cuda/std/__cmath/exponential_functions.h +784 -0
- cuda/cccl/headers/include/cuda/std/__cmath/fdim.h +118 -0
- cuda/cccl/headers/include/cuda/std/__cmath/fma.h +125 -0
- cuda/cccl/headers/include/cuda/std/__cmath/fpclassify.h +231 -0
- cuda/cccl/headers/include/cuda/std/__cmath/gamma.h +205 -0
- cuda/cccl/headers/include/cuda/std/__cmath/hyperbolic_functions.h +286 -0
- cuda/cccl/headers/include/cuda/std/__cmath/hypot.h +221 -0
- cuda/cccl/headers/include/cuda/std/__cmath/inverse_hyperbolic_functions.h +286 -0
- cuda/cccl/headers/include/cuda/std/__cmath/inverse_trigonometric_functions.h +371 -0
- cuda/cccl/headers/include/cuda/std/__cmath/isfinite.h +167 -0
- cuda/cccl/headers/include/cuda/std/__cmath/isinf.h +205 -0
- cuda/cccl/headers/include/cuda/std/__cmath/isnan.h +186 -0
- cuda/cccl/headers/include/cuda/std/__cmath/isnormal.h +138 -0
- cuda/cccl/headers/include/cuda/std/__cmath/lerp.h +101 -0
- cuda/cccl/headers/include/cuda/std/__cmath/logarithms.h +534 -0
- cuda/cccl/headers/include/cuda/std/__cmath/min_max.h +287 -0
- cuda/cccl/headers/include/cuda/std/__cmath/modulo.h +208 -0
- cuda/cccl/headers/include/cuda/std/__cmath/nan.h +54 -0
- cuda/cccl/headers/include/cuda/std/__cmath/remainder.h +206 -0
- cuda/cccl/headers/include/cuda/std/__cmath/roots.h +199 -0
- cuda/cccl/headers/include/cuda/std/__cmath/rounding_functions.h +984 -0
- cuda/cccl/headers/include/cuda/std/__cmath/signbit.h +56 -0
- cuda/cccl/headers/include/cuda/std/__cmath/traits.h +238 -0
- cuda/cccl/headers/include/cuda/std/__cmath/trigonometric_functions.h +328 -0
- cuda/cccl/headers/include/cuda/std/__complex/arg.h +84 -0
- cuda/cccl/headers/include/cuda/std/__complex/complex.h +669 -0
- cuda/cccl/headers/include/cuda/std/__complex/exponential_functions.h +411 -0
- cuda/cccl/headers/include/cuda/std/__complex/hyperbolic_functions.h +117 -0
- cuda/cccl/headers/include/cuda/std/__complex/inverse_hyperbolic_functions.h +216 -0
- cuda/cccl/headers/include/cuda/std/__complex/inverse_trigonometric_functions.h +131 -0
- cuda/cccl/headers/include/cuda/std/__complex/literals.h +86 -0
- cuda/cccl/headers/include/cuda/std/__complex/logarithms.h +303 -0
- cuda/cccl/headers/include/cuda/std/__complex/math.h +159 -0
- cuda/cccl/headers/include/cuda/std/__complex/nvbf16.h +323 -0
- cuda/cccl/headers/include/cuda/std/__complex/nvfp16.h +322 -0
- cuda/cccl/headers/include/cuda/std/__complex/roots.h +214 -0
- cuda/cccl/headers/include/cuda/std/__complex/trigonometric_functions.h +61 -0
- cuda/cccl/headers/include/cuda/std/__complex/tuple.h +107 -0
- cuda/cccl/headers/include/cuda/std/__complex/vector_support.h +130 -0
- cuda/cccl/headers/include/cuda/std/__concepts/arithmetic.h +56 -0
- cuda/cccl/headers/include/cuda/std/__concepts/assignable.h +64 -0
- cuda/cccl/headers/include/cuda/std/__concepts/boolean_testable.h +63 -0
- cuda/cccl/headers/include/cuda/std/__concepts/class_or_enum.h +45 -0
- cuda/cccl/headers/include/cuda/std/__concepts/common_reference_with.h +69 -0
- cuda/cccl/headers/include/cuda/std/__concepts/common_with.h +82 -0
- cuda/cccl/headers/include/cuda/std/__concepts/concept_macros.h +341 -0
- cuda/cccl/headers/include/cuda/std/__concepts/constructible.h +174 -0
- cuda/cccl/headers/include/cuda/std/__concepts/convertible_to.h +70 -0
- cuda/cccl/headers/include/cuda/std/__concepts/copyable.h +60 -0
- cuda/cccl/headers/include/cuda/std/__concepts/derived_from.h +56 -0
- cuda/cccl/headers/include/cuda/std/__concepts/destructible.h +76 -0
- cuda/cccl/headers/include/cuda/std/__concepts/different_from.h +38 -0
- cuda/cccl/headers/include/cuda/std/__concepts/equality_comparable.h +100 -0
- cuda/cccl/headers/include/cuda/std/__concepts/invocable.h +80 -0
- cuda/cccl/headers/include/cuda/std/__concepts/movable.h +58 -0
- cuda/cccl/headers/include/cuda/std/__concepts/predicate.h +54 -0
- cuda/cccl/headers/include/cuda/std/__concepts/regular.h +54 -0
- cuda/cccl/headers/include/cuda/std/__concepts/relation.h +77 -0
- cuda/cccl/headers/include/cuda/std/__concepts/same_as.h +39 -0
- cuda/cccl/headers/include/cuda/std/__concepts/semiregular.h +54 -0
- cuda/cccl/headers/include/cuda/std/__concepts/swappable.h +206 -0
- cuda/cccl/headers/include/cuda/std/__concepts/totally_ordered.h +101 -0
- cuda/cccl/headers/include/cuda/std/__cstddef/byte.h +113 -0
- cuda/cccl/headers/include/cuda/std/__cstddef/types.h +52 -0
- cuda/cccl/headers/include/cuda/std/__cstdlib/abs.h +57 -0
- cuda/cccl/headers/include/cuda/std/__cstdlib/aligned_alloc.h +66 -0
- cuda/cccl/headers/include/cuda/std/__cstdlib/div.h +96 -0
- cuda/cccl/headers/include/cuda/std/__cstdlib/malloc.h +70 -0
- cuda/cccl/headers/include/cuda/std/__cstring/memcpy.h +61 -0
- cuda/cccl/headers/include/cuda/std/__cstring/memset.h +46 -0
- cuda/cccl/headers/include/cuda/std/__cuda/api_wrapper.h +62 -0
- cuda/cccl/headers/include/cuda/std/__exception/cuda_error.h +139 -0
- cuda/cccl/headers/include/cuda/std/__exception/terminate.h +73 -0
- cuda/cccl/headers/include/cuda/std/__execution/env.h +455 -0
- cuda/cccl/headers/include/cuda/std/__execution/policy.h +88 -0
- cuda/cccl/headers/include/cuda/std/__expected/bad_expected_access.h +127 -0
- cuda/cccl/headers/include/cuda/std/__expected/expected.h +1941 -0
- cuda/cccl/headers/include/cuda/std/__expected/expected_base.h +1050 -0
- cuda/cccl/headers/include/cuda/std/__expected/unexpect.h +37 -0
- cuda/cccl/headers/include/cuda/std/__expected/unexpected.h +165 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/arithmetic.h +56 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/cast.h +812 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/cccl_fp.h +125 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/common_type.h +48 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/constants.h +376 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/conversion_rank_order.h +124 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/cuda_fp_types.h +116 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/decompose.h +69 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/format.h +162 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/fp.h +40 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/mask.h +78 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/native_type.h +81 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/overflow_handler.h +139 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/properties.h +229 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/storage.h +248 -0
- cuda/cccl/headers/include/cuda/std/__floating_point/traits.h +172 -0
- cuda/cccl/headers/include/cuda/std/__format/buffer.h +48 -0
- cuda/cccl/headers/include/cuda/std/__format/concepts.h +69 -0
- cuda/cccl/headers/include/cuda/std/__format/format_arg.h +282 -0
- cuda/cccl/headers/include/cuda/std/__format/format_arg_store.h +279 -0
- cuda/cccl/headers/include/cuda/std/__format/format_args.h +122 -0
- cuda/cccl/headers/include/cuda/std/__format/format_context.h +92 -0
- cuda/cccl/headers/include/cuda/std/__format/format_error.h +76 -0
- cuda/cccl/headers/include/cuda/std/__format/format_integral.h +237 -0
- cuda/cccl/headers/include/cuda/std/__format/format_parse_context.h +124 -0
- cuda/cccl/headers/include/cuda/std/__format/format_spec_parser.h +1230 -0
- cuda/cccl/headers/include/cuda/std/__format/formatter.h +59 -0
- cuda/cccl/headers/include/cuda/std/__format/formatters/bool.h +101 -0
- cuda/cccl/headers/include/cuda/std/__format/formatters/char.h +124 -0
- cuda/cccl/headers/include/cuda/std/__format/formatters/fp.h +101 -0
- cuda/cccl/headers/include/cuda/std/__format/formatters/int.h +174 -0
- cuda/cccl/headers/include/cuda/std/__format/formatters/ptr.h +104 -0
- cuda/cccl/headers/include/cuda/std/__format/formatters/str.h +178 -0
- cuda/cccl/headers/include/cuda/std/__format/output_utils.h +272 -0
- cuda/cccl/headers/include/cuda/std/__format/parse_arg_id.h +138 -0
- cuda/cccl/headers/include/cuda/std/__format_ +45 -0
- cuda/cccl/headers/include/cuda/std/__functional/binary_function.h +63 -0
- cuda/cccl/headers/include/cuda/std/__functional/binary_negate.h +65 -0
- cuda/cccl/headers/include/cuda/std/__functional/bind.h +334 -0
- cuda/cccl/headers/include/cuda/std/__functional/bind_back.h +80 -0
- cuda/cccl/headers/include/cuda/std/__functional/bind_front.h +73 -0
- cuda/cccl/headers/include/cuda/std/__functional/binder1st.h +74 -0
- cuda/cccl/headers/include/cuda/std/__functional/binder2nd.h +74 -0
- cuda/cccl/headers/include/cuda/std/__functional/compose.h +68 -0
- cuda/cccl/headers/include/cuda/std/__functional/default_searcher.h +75 -0
- cuda/cccl/headers/include/cuda/std/__functional/function.h +1275 -0
- cuda/cccl/headers/include/cuda/std/__functional/hash.h +649 -0
- cuda/cccl/headers/include/cuda/std/__functional/identity.h +57 -0
- cuda/cccl/headers/include/cuda/std/__functional/invoke.h +296 -0
- cuda/cccl/headers/include/cuda/std/__functional/is_transparent.h +41 -0
- cuda/cccl/headers/include/cuda/std/__functional/mem_fn.h +66 -0
- cuda/cccl/headers/include/cuda/std/__functional/mem_fun_ref.h +211 -0
- cuda/cccl/headers/include/cuda/std/__functional/not_fn.h +120 -0
- cuda/cccl/headers/include/cuda/std/__functional/operations.h +534 -0
- cuda/cccl/headers/include/cuda/std/__functional/perfect_forward.h +128 -0
- cuda/cccl/headers/include/cuda/std/__functional/pointer_to_binary_function.h +64 -0
- cuda/cccl/headers/include/cuda/std/__functional/pointer_to_unary_function.h +63 -0
- cuda/cccl/headers/include/cuda/std/__functional/ranges_operations.h +113 -0
- cuda/cccl/headers/include/cuda/std/__functional/reference_wrapper.h +113 -0
- cuda/cccl/headers/include/cuda/std/__functional/unary_function.h +62 -0
- cuda/cccl/headers/include/cuda/std/__functional/unary_negate.h +65 -0
- cuda/cccl/headers/include/cuda/std/__functional/unwrap_ref.h +56 -0
- cuda/cccl/headers/include/cuda/std/__functional/weak_result_type.h +262 -0
- cuda/cccl/headers/include/cuda/std/__fwd/allocator.h +53 -0
- cuda/cccl/headers/include/cuda/std/__fwd/array.h +42 -0
- cuda/cccl/headers/include/cuda/std/__fwd/char_traits.h +74 -0
- cuda/cccl/headers/include/cuda/std/__fwd/complex.h +75 -0
- cuda/cccl/headers/include/cuda/std/__fwd/expected.h +46 -0
- cuda/cccl/headers/include/cuda/std/__fwd/format.h +84 -0
- cuda/cccl/headers/include/cuda/std/__fwd/fp.h +37 -0
- cuda/cccl/headers/include/cuda/std/__fwd/get.h +123 -0
- cuda/cccl/headers/include/cuda/std/__fwd/hash.h +34 -0
- cuda/cccl/headers/include/cuda/std/__fwd/iterator.h +43 -0
- cuda/cccl/headers/include/cuda/std/__fwd/mdspan.h +122 -0
- cuda/cccl/headers/include/cuda/std/__fwd/memory_resource.h +37 -0
- cuda/cccl/headers/include/cuda/std/__fwd/optional.h +39 -0
- cuda/cccl/headers/include/cuda/std/__fwd/pair.h +47 -0
- cuda/cccl/headers/include/cuda/std/__fwd/reference_wrapper.h +34 -0
- cuda/cccl/headers/include/cuda/std/__fwd/span.h +45 -0
- cuda/cccl/headers/include/cuda/std/__fwd/string.h +112 -0
- cuda/cccl/headers/include/cuda/std/__fwd/string_view.h +91 -0
- cuda/cccl/headers/include/cuda/std/__fwd/subrange.h +55 -0
- cuda/cccl/headers/include/cuda/std/__fwd/tuple.h +34 -0
- cuda/cccl/headers/include/cuda/std/__fwd/unexpected.h +40 -0
- cuda/cccl/headers/include/cuda/std/__internal/cpp_dialect.h +44 -0
- cuda/cccl/headers/include/cuda/std/__internal/features.h +72 -0
- cuda/cccl/headers/include/cuda/std/__internal/namespaces.h +143 -0
- cuda/cccl/headers/include/cuda/std/__iterator/access.h +128 -0
- cuda/cccl/headers/include/cuda/std/__iterator/advance.h +228 -0
- cuda/cccl/headers/include/cuda/std/__iterator/back_insert_iterator.h +163 -0
- cuda/cccl/headers/include/cuda/std/__iterator/bounded_iter.h +253 -0
- cuda/cccl/headers/include/cuda/std/__iterator/concepts.h +645 -0
- cuda/cccl/headers/include/cuda/std/__iterator/counted_iterator.h +464 -0
- cuda/cccl/headers/include/cuda/std/__iterator/data.h +61 -0
- cuda/cccl/headers/include/cuda/std/__iterator/default_sentinel.h +36 -0
- cuda/cccl/headers/include/cuda/std/__iterator/distance.h +126 -0
- cuda/cccl/headers/include/cuda/std/__iterator/empty.h +53 -0
- cuda/cccl/headers/include/cuda/std/__iterator/erase_if_container.h +53 -0
- cuda/cccl/headers/include/cuda/std/__iterator/front_insert_iterator.h +99 -0
- cuda/cccl/headers/include/cuda/std/__iterator/incrementable_traits.h +143 -0
- cuda/cccl/headers/include/cuda/std/__iterator/indirectly_comparable.h +55 -0
- cuda/cccl/headers/include/cuda/std/__iterator/insert_iterator.h +107 -0
- cuda/cccl/headers/include/cuda/std/__iterator/istream_iterator.h +146 -0
- cuda/cccl/headers/include/cuda/std/__iterator/istreambuf_iterator.h +161 -0
- cuda/cccl/headers/include/cuda/std/__iterator/iter_move.h +161 -0
- cuda/cccl/headers/include/cuda/std/__iterator/iter_swap.h +163 -0
- cuda/cccl/headers/include/cuda/std/__iterator/iterator.h +44 -0
- cuda/cccl/headers/include/cuda/std/__iterator/iterator_traits.h +847 -0
- cuda/cccl/headers/include/cuda/std/__iterator/mergeable.h +72 -0
- cuda/cccl/headers/include/cuda/std/__iterator/move_iterator.h +432 -0
- cuda/cccl/headers/include/cuda/std/__iterator/move_sentinel.h +73 -0
- cuda/cccl/headers/include/cuda/std/__iterator/next.h +101 -0
- cuda/cccl/headers/include/cuda/std/__iterator/ostream_iterator.h +95 -0
- cuda/cccl/headers/include/cuda/std/__iterator/ostreambuf_iterator.h +100 -0
- cuda/cccl/headers/include/cuda/std/__iterator/permutable.h +54 -0
- cuda/cccl/headers/include/cuda/std/__iterator/prev.h +90 -0
- cuda/cccl/headers/include/cuda/std/__iterator/projected.h +61 -0
- cuda/cccl/headers/include/cuda/std/__iterator/readable_traits.h +156 -0
- cuda/cccl/headers/include/cuda/std/__iterator/reverse_access.h +142 -0
- cuda/cccl/headers/include/cuda/std/__iterator/reverse_iterator.h +371 -0
- cuda/cccl/headers/include/cuda/std/__iterator/size.h +69 -0
- cuda/cccl/headers/include/cuda/std/__iterator/sortable.h +55 -0
- cuda/cccl/headers/include/cuda/std/__iterator/unreachable_sentinel.h +84 -0
- cuda/cccl/headers/include/cuda/std/__iterator/wrap_iter.h +245 -0
- cuda/cccl/headers/include/cuda/std/__latch/latch.h +88 -0
- cuda/cccl/headers/include/cuda/std/__limits/numeric_limits.h +617 -0
- cuda/cccl/headers/include/cuda/std/__limits/numeric_limits_ext.h +753 -0
- cuda/cccl/headers/include/cuda/std/__linalg/conj_if_needed.h +78 -0
- cuda/cccl/headers/include/cuda/std/__linalg/conjugate_transposed.h +54 -0
- cuda/cccl/headers/include/cuda/std/__linalg/conjugated.h +139 -0
- cuda/cccl/headers/include/cuda/std/__linalg/scaled.h +132 -0
- cuda/cccl/headers/include/cuda/std/__linalg/transposed.h +321 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/aligned_accessor.h +97 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/concepts.h +139 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/default_accessor.h +73 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/empty_base.h +352 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/extents.h +759 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/layout_left.h +314 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/layout_right.h +307 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/layout_stride.h +605 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/mdspan.h +512 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/submdspan_extents.h +193 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/submdspan_helper.h +189 -0
- cuda/cccl/headers/include/cuda/std/__mdspan/submdspan_mapping.h +344 -0
- cuda/cccl/headers/include/cuda/std/__memory/addressof.h +67 -0
- cuda/cccl/headers/include/cuda/std/__memory/align.h +67 -0
- cuda/cccl/headers/include/cuda/std/__memory/allocate_at_least.h +81 -0
- cuda/cccl/headers/include/cuda/std/__memory/allocation_guard.h +100 -0
- cuda/cccl/headers/include/cuda/std/__memory/allocator.h +320 -0
- cuda/cccl/headers/include/cuda/std/__memory/allocator_arg_t.h +84 -0
- cuda/cccl/headers/include/cuda/std/__memory/allocator_destructor.h +59 -0
- cuda/cccl/headers/include/cuda/std/__memory/allocator_traits.h +525 -0
- cuda/cccl/headers/include/cuda/std/__memory/assume_aligned.h +60 -0
- cuda/cccl/headers/include/cuda/std/__memory/builtin_new_allocator.h +87 -0
- cuda/cccl/headers/include/cuda/std/__memory/compressed_pair.h +225 -0
- cuda/cccl/headers/include/cuda/std/__memory/construct_at.h +246 -0
- cuda/cccl/headers/include/cuda/std/__memory/destruct_n.h +91 -0
- cuda/cccl/headers/include/cuda/std/__memory/is_sufficiently_aligned.h +46 -0
- cuda/cccl/headers/include/cuda/std/__memory/pointer_traits.h +246 -0
- cuda/cccl/headers/include/cuda/std/__memory/runtime_assume_aligned.h +62 -0
- cuda/cccl/headers/include/cuda/std/__memory/temporary_buffer.h +92 -0
- cuda/cccl/headers/include/cuda/std/__memory/uninitialized_algorithms.h +678 -0
- cuda/cccl/headers/include/cuda/std/__memory/unique_ptr.h +765 -0
- cuda/cccl/headers/include/cuda/std/__memory/uses_allocator.h +54 -0
- cuda/cccl/headers/include/cuda/std/__memory/voidify.h +41 -0
- cuda/cccl/headers/include/cuda/std/__memory_ +34 -0
- cuda/cccl/headers/include/cuda/std/__new/allocate.h +126 -0
- cuda/cccl/headers/include/cuda/std/__new/bad_alloc.h +57 -0
- cuda/cccl/headers/include/cuda/std/__new/launder.h +53 -0
- cuda/cccl/headers/include/cuda/std/__new_ +29 -0
- cuda/cccl/headers/include/cuda/std/__numeric/accumulate.h +56 -0
- cuda/cccl/headers/include/cuda/std/__numeric/adjacent_difference.h +72 -0
- cuda/cccl/headers/include/cuda/std/__numeric/exclusive_scan.h +66 -0
- cuda/cccl/headers/include/cuda/std/__numeric/gcd_lcm.h +78 -0
- cuda/cccl/headers/include/cuda/std/__numeric/inclusive_scan.h +73 -0
- cuda/cccl/headers/include/cuda/std/__numeric/inner_product.h +62 -0
- cuda/cccl/headers/include/cuda/std/__numeric/iota.h +42 -0
- cuda/cccl/headers/include/cuda/std/__numeric/midpoint.h +97 -0
- cuda/cccl/headers/include/cuda/std/__numeric/partial_sum.h +69 -0
- cuda/cccl/headers/include/cuda/std/__numeric/reduce.h +60 -0
- cuda/cccl/headers/include/cuda/std/__numeric/transform_exclusive_scan.h +51 -0
- cuda/cccl/headers/include/cuda/std/__numeric/transform_inclusive_scan.h +65 -0
- cuda/cccl/headers/include/cuda/std/__numeric/transform_reduce.h +72 -0
- cuda/cccl/headers/include/cuda/std/__optional/bad_optional_access.h +74 -0
- cuda/cccl/headers/include/cuda/std/__optional/hash.h +53 -0
- cuda/cccl/headers/include/cuda/std/__optional/make_optional.h +61 -0
- cuda/cccl/headers/include/cuda/std/__optional/nullopt.h +43 -0
- cuda/cccl/headers/include/cuda/std/__optional/optional.h +859 -0
- cuda/cccl/headers/include/cuda/std/__optional/optional_base.h +433 -0
- cuda/cccl/headers/include/cuda/std/__optional/optional_ref.h +324 -0
- cuda/cccl/headers/include/cuda/std/__random/generate_canonical.h +56 -0
- cuda/cccl/headers/include/cuda/std/__random/is_seed_sequence.h +39 -0
- cuda/cccl/headers/include/cuda/std/__random/is_valid.h +106 -0
- cuda/cccl/headers/include/cuda/std/__random/linear_congruential_engine.h +398 -0
- cuda/cccl/headers/include/cuda/std/__random/uniform_int_distribution.h +335 -0
- cuda/cccl/headers/include/cuda/std/__random/uniform_real_distribution.h +183 -0
- cuda/cccl/headers/include/cuda/std/__random_ +29 -0
- cuda/cccl/headers/include/cuda/std/__ranges/access.h +303 -0
- cuda/cccl/headers/include/cuda/std/__ranges/all.h +98 -0
- cuda/cccl/headers/include/cuda/std/__ranges/compressed_movable_box.h +892 -0
- cuda/cccl/headers/include/cuda/std/__ranges/concepts.h +302 -0
- cuda/cccl/headers/include/cuda/std/__ranges/counted.h +90 -0
- cuda/cccl/headers/include/cuda/std/__ranges/dangling.h +54 -0
- cuda/cccl/headers/include/cuda/std/__ranges/data.h +136 -0
- cuda/cccl/headers/include/cuda/std/__ranges/empty.h +109 -0
- cuda/cccl/headers/include/cuda/std/__ranges/empty_view.h +77 -0
- cuda/cccl/headers/include/cuda/std/__ranges/enable_borrowed_range.h +41 -0
- cuda/cccl/headers/include/cuda/std/__ranges/enable_view.h +78 -0
- cuda/cccl/headers/include/cuda/std/__ranges/from_range.h +36 -0
- cuda/cccl/headers/include/cuda/std/__ranges/iota_view.h +266 -0
- cuda/cccl/headers/include/cuda/std/__ranges/movable_box.h +410 -0
- cuda/cccl/headers/include/cuda/std/__ranges/owning_view.h +162 -0
- cuda/cccl/headers/include/cuda/std/__ranges/range_adaptor.h +110 -0
- cuda/cccl/headers/include/cuda/std/__ranges/rbegin.h +175 -0
- cuda/cccl/headers/include/cuda/std/__ranges/ref_view.h +121 -0
- cuda/cccl/headers/include/cuda/std/__ranges/rend.h +182 -0
- cuda/cccl/headers/include/cuda/std/__ranges/repeat_view.h +345 -0
- cuda/cccl/headers/include/cuda/std/__ranges/single_view.h +155 -0
- cuda/cccl/headers/include/cuda/std/__ranges/size.h +201 -0
- cuda/cccl/headers/include/cuda/std/__ranges/subrange.h +513 -0
- cuda/cccl/headers/include/cuda/std/__ranges/take_view.h +476 -0
- cuda/cccl/headers/include/cuda/std/__ranges/take_while_view.h +259 -0
- cuda/cccl/headers/include/cuda/std/__ranges/transform_view.h +522 -0
- cuda/cccl/headers/include/cuda/std/__ranges/unwrap_end.h +53 -0
- cuda/cccl/headers/include/cuda/std/__ranges/view_interface.h +183 -0
- cuda/cccl/headers/include/cuda/std/__ranges/views.h +38 -0
- cuda/cccl/headers/include/cuda/std/__semaphore/atomic_semaphore.h +234 -0
- cuda/cccl/headers/include/cuda/std/__semaphore/counting_semaphore.h +51 -0
- cuda/cccl/headers/include/cuda/std/__string/char_traits.h +191 -0
- cuda/cccl/headers/include/cuda/std/__string/constexpr_c_functions.h +581 -0
- cuda/cccl/headers/include/cuda/std/__string/helper_functions.h +296 -0
- cuda/cccl/headers/include/cuda/std/__string/string_view.h +244 -0
- cuda/cccl/headers/include/cuda/std/__string_ +29 -0
- cuda/cccl/headers/include/cuda/std/__system_error/errc.h +51 -0
- cuda/cccl/headers/include/cuda/std/__system_error_ +26 -0
- cuda/cccl/headers/include/cuda/std/__thread/threading_support.h +106 -0
- cuda/cccl/headers/include/cuda/std/__thread/threading_support_cuda.h +47 -0
- cuda/cccl/headers/include/cuda/std/__thread/threading_support_external.h +41 -0
- cuda/cccl/headers/include/cuda/std/__thread/threading_support_pthread.h +143 -0
- cuda/cccl/headers/include/cuda/std/__thread/threading_support_win32.h +87 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/ignore.h +51 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/make_tuple_types.h +120 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/sfinae_helpers.h +260 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/structured_bindings.h +212 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_element.h +70 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_indices.h +44 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_like.h +84 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_like_ext.h +68 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_size.h +79 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_types.h +35 -0
- cuda/cccl/headers/include/cuda/std/__tuple_dir/vector_types.h +290 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/add_const.h +40 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/add_cv.h +40 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/add_lvalue_reference.h +62 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/add_pointer.h +65 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/add_rvalue_reference.h +62 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/add_volatile.h +40 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/aligned_storage.h +149 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/aligned_union.h +62 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/alignment_of.h +41 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/always_false.h +35 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/can_extract_key.h +68 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/common_reference.h +262 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/common_type.h +173 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/conditional.h +65 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/conjunction.h +67 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/copy_cv.h +50 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/copy_cvref.h +148 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/decay.h +83 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/dependent_type.h +35 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/disjunction.h +77 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/enable_if.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/extent.h +68 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/fold.h +47 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/has_unique_object_representation.h +46 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/has_virtual_destructor.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/integral_constant.h +62 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_abstract.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_aggregate.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_allocator.h +46 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_arithmetic.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_array.h +62 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_assignable.h +78 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_base_of.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_bounded_array.h +44 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_callable.h +60 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_char_like_type.h +38 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_class.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_compound.h +58 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_const.h +56 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_constant_evaluated.h +51 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_constructible.h +174 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_convertible.h +211 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_copy_assignable.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_copy_constructible.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_core_convertible.h +47 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_corresponding_member.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_default_constructible.h +40 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_destructible.h +115 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_empty.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_enum.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_execution_policy.h +81 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_extended_arithmetic.h +38 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_extended_floating_point.h +79 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_final.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_floating_point.h +53 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_function.h +61 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_fundamental.h +56 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_implicitly_default_constructible.h +57 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_integer.h +45 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_integral.h +123 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_layout_compatible.h +45 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_literal_type.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_member_function_pointer.h +79 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_member_object_pointer.h +57 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_member_pointer.h +57 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_move_assignable.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_move_constructible.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_assignable.h +70 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_constructible.h +84 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_convertible.h +59 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_copy_assignable.h +60 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_copy_constructible.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_default_constructible.h +54 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_destructible.h +82 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_move_assignable.h +60 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_move_constructible.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_null_pointer.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_object.h +57 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_one_of.h +37 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_pod.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_pointer.h +60 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_pointer_interconvertible_base_of.h +84 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_pointer_interconvertible_with_class.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_polymorphic.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_primary_template.h +121 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_reference.h +95 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_reference_wrapper.h +50 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_referenceable.h +55 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_same.h +88 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_scalar.h +60 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_scoped_enum.h +49 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_signed.h +65 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_signed_integer.h +59 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_standard_layout.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_swappable.h +202 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivial.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_assignable.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_constructible.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_copy_assignable.h +46 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_copy_constructible.h +45 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_copyable.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_default_constructible.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_destructible.h +58 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_move_assignable.h +45 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_move_constructible.h +44 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_unbounded_array.h +43 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_union.h +42 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_unsigned.h +66 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_unsigned_integer.h +59 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_valid_expansion.h +41 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_void.h +55 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/is_volatile.h +56 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/lazy.h +35 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/make_const_lvalue_ref.h +36 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/make_nbit_int.h +107 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/make_signed.h +140 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/make_unsigned.h +151 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/maybe_const.h +36 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/nat.h +39 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/negation.h +44 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/num_bits.h +122 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/promote.h +163 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/rank.h +60 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/reference_constructs_from_temporary.h +57 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/reference_converts_from_temporary.h +56 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_all_extents.h +66 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_const.h +59 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_const_ref.h +37 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_cv.h +57 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_cvref.h +57 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_extent.h +65 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_pointer.h +73 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_reference.h +72 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/remove_volatile.h +58 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/result_of.h +47 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/type_identity.h +40 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/type_list.h +1067 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/type_set.h +131 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/underlying_type.h +52 -0
- cuda/cccl/headers/include/cuda/std/__type_traits/void_t.h +34 -0
- cuda/cccl/headers/include/cuda/std/__utility/as_const.h +52 -0
- cuda/cccl/headers/include/cuda/std/__utility/auto_cast.h +34 -0
- cuda/cccl/headers/include/cuda/std/__utility/cmp.h +116 -0
- cuda/cccl/headers/include/cuda/std/__utility/convert_to_integral.h +101 -0
- cuda/cccl/headers/include/cuda/std/__utility/declval.h +76 -0
- cuda/cccl/headers/include/cuda/std/__utility/exception_guard.h +161 -0
- cuda/cccl/headers/include/cuda/std/__utility/exchange.h +46 -0
- cuda/cccl/headers/include/cuda/std/__utility/forward.h +59 -0
- cuda/cccl/headers/include/cuda/std/__utility/forward_like.h +55 -0
- cuda/cccl/headers/include/cuda/std/__utility/in_place.h +86 -0
- cuda/cccl/headers/include/cuda/std/__utility/integer_sequence.h +251 -0
- cuda/cccl/headers/include/cuda/std/__utility/monostate.h +99 -0
- cuda/cccl/headers/include/cuda/std/__utility/move.h +74 -0
- cuda/cccl/headers/include/cuda/std/__utility/pair.h +791 -0
- cuda/cccl/headers/include/cuda/std/__utility/piecewise_construct.h +37 -0
- cuda/cccl/headers/include/cuda/std/__utility/pod_tuple.h +527 -0
- cuda/cccl/headers/include/cuda/std/__utility/priority_tag.h +40 -0
- cuda/cccl/headers/include/cuda/std/__utility/rel_ops.h +63 -0
- cuda/cccl/headers/include/cuda/std/__utility/swap.h +64 -0
- cuda/cccl/headers/include/cuda/std/__utility/to_underlying.h +40 -0
- cuda/cccl/headers/include/cuda/std/__utility/typeid.h +421 -0
- cuda/cccl/headers/include/cuda/std/__utility/undefined.h +34 -0
- cuda/cccl/headers/include/cuda/std/__utility/unreachable.h +37 -0
- cuda/cccl/headers/include/cuda/std/array +518 -0
- cuda/cccl/headers/include/cuda/std/atomic +810 -0
- cuda/cccl/headers/include/cuda/std/barrier +42 -0
- cuda/cccl/headers/include/cuda/std/bit +35 -0
- cuda/cccl/headers/include/cuda/std/bitset +994 -0
- cuda/cccl/headers/include/cuda/std/cassert +28 -0
- cuda/cccl/headers/include/cuda/std/ccomplex +15 -0
- cuda/cccl/headers/include/cuda/std/cfloat +59 -0
- cuda/cccl/headers/include/cuda/std/chrono +26 -0
- cuda/cccl/headers/include/cuda/std/climits +61 -0
- cuda/cccl/headers/include/cuda/std/cmath +87 -0
- cuda/cccl/headers/include/cuda/std/complex +50 -0
- cuda/cccl/headers/include/cuda/std/concepts +48 -0
- cuda/cccl/headers/include/cuda/std/cstddef +28 -0
- cuda/cccl/headers/include/cuda/std/cstdint +178 -0
- cuda/cccl/headers/include/cuda/std/cstdlib +30 -0
- cuda/cccl/headers/include/cuda/std/cstring +110 -0
- cuda/cccl/headers/include/cuda/std/ctime +154 -0
- cuda/cccl/headers/include/cuda/std/detail/__config +45 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/__config +207 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/algorithm +1721 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/chrono +2509 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/iosfwd +128 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/stdexcept +120 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/tuple +1365 -0
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/variant +2144 -0
- cuda/cccl/headers/include/cuda/std/execution +29 -0
- cuda/cccl/headers/include/cuda/std/expected +30 -0
- cuda/cccl/headers/include/cuda/std/functional +56 -0
- cuda/cccl/headers/include/cuda/std/initializer_list +44 -0
- cuda/cccl/headers/include/cuda/std/inplace_vector +2170 -0
- cuda/cccl/headers/include/cuda/std/iterator +70 -0
- cuda/cccl/headers/include/cuda/std/latch +34 -0
- cuda/cccl/headers/include/cuda/std/limits +28 -0
- cuda/cccl/headers/include/cuda/std/linalg +30 -0
- cuda/cccl/headers/include/cuda/std/mdspan +38 -0
- cuda/cccl/headers/include/cuda/std/memory +39 -0
- cuda/cccl/headers/include/cuda/std/numbers +346 -0
- cuda/cccl/headers/include/cuda/std/numeric +41 -0
- cuda/cccl/headers/include/cuda/std/optional +31 -0
- cuda/cccl/headers/include/cuda/std/ranges +69 -0
- cuda/cccl/headers/include/cuda/std/ratio +416 -0
- cuda/cccl/headers/include/cuda/std/semaphore +31 -0
- cuda/cccl/headers/include/cuda/std/source_location +83 -0
- cuda/cccl/headers/include/cuda/std/span +628 -0
- cuda/cccl/headers/include/cuda/std/string_view +925 -0
- cuda/cccl/headers/include/cuda/std/tuple +26 -0
- cuda/cccl/headers/include/cuda/std/type_traits +177 -0
- cuda/cccl/headers/include/cuda/std/utility +70 -0
- cuda/cccl/headers/include/cuda/std/variant +25 -0
- cuda/cccl/headers/include/cuda/std/version +240 -0
- cuda/cccl/headers/include/cuda/stream +31 -0
- cuda/cccl/headers/include/cuda/stream_ref +59 -0
- cuda/cccl/headers/include/cuda/type_traits +27 -0
- cuda/cccl/headers/include/cuda/utility +28 -0
- cuda/cccl/headers/include/cuda/version +16 -0
- cuda/cccl/headers/include/cuda/warp +28 -0
- cuda/cccl/headers/include/cuda/work_stealing +26 -0
- cuda/cccl/headers/include/nv/detail/__preprocessor +169 -0
- cuda/cccl/headers/include/nv/detail/__target_macros +718 -0
- cuda/cccl/headers/include/nv/target +240 -0
- cuda/cccl/headers/include/thrust/addressof.h +22 -0
- cuda/cccl/headers/include/thrust/adjacent_difference.h +254 -0
- cuda/cccl/headers/include/thrust/advance.h +57 -0
- cuda/cccl/headers/include/thrust/allocate_unique.h +299 -0
- cuda/cccl/headers/include/thrust/binary_search.h +1910 -0
- cuda/cccl/headers/include/thrust/complex.h +858 -0
- cuda/cccl/headers/include/thrust/copy.h +506 -0
- cuda/cccl/headers/include/thrust/count.h +245 -0
- cuda/cccl/headers/include/thrust/detail/adjacent_difference.inl +95 -0
- cuda/cccl/headers/include/thrust/detail/alignment.h +81 -0
- cuda/cccl/headers/include/thrust/detail/allocator/allocator_traits.h +626 -0
- cuda/cccl/headers/include/thrust/detail/allocator/copy_construct_range.h +192 -0
- cuda/cccl/headers/include/thrust/detail/allocator/destroy_range.h +96 -0
- cuda/cccl/headers/include/thrust/detail/allocator/fill_construct_range.h +81 -0
- cuda/cccl/headers/include/thrust/detail/allocator/malloc_allocator.h +78 -0
- cuda/cccl/headers/include/thrust/detail/allocator/no_throw_allocator.h +76 -0
- cuda/cccl/headers/include/thrust/detail/allocator/tagged_allocator.h +115 -0
- cuda/cccl/headers/include/thrust/detail/allocator/temporary_allocator.h +116 -0
- cuda/cccl/headers/include/thrust/detail/allocator/value_initialize_range.h +77 -0
- cuda/cccl/headers/include/thrust/detail/allocator_aware_execution_policy.h +99 -0
- cuda/cccl/headers/include/thrust/detail/binary_search.inl +525 -0
- cuda/cccl/headers/include/thrust/detail/caching_allocator.h +47 -0
- cuda/cccl/headers/include/thrust/detail/complex/arithmetic.h +255 -0
- cuda/cccl/headers/include/thrust/detail/complex/c99math.h +64 -0
- cuda/cccl/headers/include/thrust/detail/complex/catrig.h +875 -0
- cuda/cccl/headers/include/thrust/detail/complex/catrigf.h +589 -0
- cuda/cccl/headers/include/thrust/detail/complex/ccosh.h +233 -0
- cuda/cccl/headers/include/thrust/detail/complex/ccoshf.h +161 -0
- cuda/cccl/headers/include/thrust/detail/complex/cexp.h +195 -0
- cuda/cccl/headers/include/thrust/detail/complex/cexpf.h +173 -0
- cuda/cccl/headers/include/thrust/detail/complex/clog.h +223 -0
- cuda/cccl/headers/include/thrust/detail/complex/clogf.h +210 -0
- cuda/cccl/headers/include/thrust/detail/complex/complex.inl +263 -0
- cuda/cccl/headers/include/thrust/detail/complex/cpow.h +50 -0
- cuda/cccl/headers/include/thrust/detail/complex/cproj.h +81 -0
- cuda/cccl/headers/include/thrust/detail/complex/csinh.h +228 -0
- cuda/cccl/headers/include/thrust/detail/complex/csinhf.h +168 -0
- cuda/cccl/headers/include/thrust/detail/complex/csqrt.h +178 -0
- cuda/cccl/headers/include/thrust/detail/complex/csqrtf.h +174 -0
- cuda/cccl/headers/include/thrust/detail/complex/ctanh.h +208 -0
- cuda/cccl/headers/include/thrust/detail/complex/ctanhf.h +133 -0
- cuda/cccl/headers/include/thrust/detail/complex/math_private.h +138 -0
- cuda/cccl/headers/include/thrust/detail/complex/stream.h +73 -0
- cuda/cccl/headers/include/thrust/detail/config/compiler.h +38 -0
- cuda/cccl/headers/include/thrust/detail/config/config.h +43 -0
- cuda/cccl/headers/include/thrust/detail/config/cpp_dialect.h +78 -0
- cuda/cccl/headers/include/thrust/detail/config/device_system.h +55 -0
- cuda/cccl/headers/include/thrust/detail/config/host_system.h +48 -0
- cuda/cccl/headers/include/thrust/detail/config/memory_resource.h +41 -0
- cuda/cccl/headers/include/thrust/detail/config/namespace.h +162 -0
- cuda/cccl/headers/include/thrust/detail/config/simple_defines.h +48 -0
- cuda/cccl/headers/include/thrust/detail/config.h +36 -0
- cuda/cccl/headers/include/thrust/detail/contiguous_storage.h +228 -0
- cuda/cccl/headers/include/thrust/detail/contiguous_storage.inl +273 -0
- cuda/cccl/headers/include/thrust/detail/copy.h +72 -0
- cuda/cccl/headers/include/thrust/detail/copy.inl +129 -0
- cuda/cccl/headers/include/thrust/detail/copy_if.h +62 -0
- cuda/cccl/headers/include/thrust/detail/copy_if.inl +102 -0
- cuda/cccl/headers/include/thrust/detail/count.h +55 -0
- cuda/cccl/headers/include/thrust/detail/count.inl +89 -0
- cuda/cccl/headers/include/thrust/detail/device_ptr.inl +48 -0
- cuda/cccl/headers/include/thrust/detail/equal.inl +93 -0
- cuda/cccl/headers/include/thrust/detail/event_error.h +160 -0
- cuda/cccl/headers/include/thrust/detail/execute_with_allocator.h +81 -0
- cuda/cccl/headers/include/thrust/detail/execute_with_allocator_fwd.h +61 -0
- cuda/cccl/headers/include/thrust/detail/execution_policy.h +120 -0
- cuda/cccl/headers/include/thrust/detail/extrema.inl +184 -0
- cuda/cccl/headers/include/thrust/detail/fill.inl +86 -0
- cuda/cccl/headers/include/thrust/detail/find.inl +113 -0
- cuda/cccl/headers/include/thrust/detail/for_each.inl +84 -0
- cuda/cccl/headers/include/thrust/detail/function.h +49 -0
- cuda/cccl/headers/include/thrust/detail/functional/actor.h +214 -0
- cuda/cccl/headers/include/thrust/detail/functional/operators.h +386 -0
- cuda/cccl/headers/include/thrust/detail/gather.inl +173 -0
- cuda/cccl/headers/include/thrust/detail/generate.inl +86 -0
- cuda/cccl/headers/include/thrust/detail/get_iterator_value.h +62 -0
- cuda/cccl/headers/include/thrust/detail/inner_product.inl +118 -0
- cuda/cccl/headers/include/thrust/detail/internal_functional.h +328 -0
- cuda/cccl/headers/include/thrust/detail/logical.inl +113 -0
- cuda/cccl/headers/include/thrust/detail/malloc_and_free.h +77 -0
- cuda/cccl/headers/include/thrust/detail/malloc_and_free_fwd.h +45 -0
- cuda/cccl/headers/include/thrust/detail/memory_algorithms.h +209 -0
- cuda/cccl/headers/include/thrust/detail/merge.inl +276 -0
- cuda/cccl/headers/include/thrust/detail/mismatch.inl +94 -0
- cuda/cccl/headers/include/thrust/detail/overlapped_copy.h +124 -0
- cuda/cccl/headers/include/thrust/detail/partition.inl +378 -0
- cuda/cccl/headers/include/thrust/detail/pointer.h +309 -0
- cuda/cccl/headers/include/thrust/detail/preprocessor.h +652 -0
- cuda/cccl/headers/include/thrust/detail/random_bijection.h +177 -0
- cuda/cccl/headers/include/thrust/detail/range/head_flags.h +116 -0
- cuda/cccl/headers/include/thrust/detail/range/tail_flags.h +130 -0
- cuda/cccl/headers/include/thrust/detail/raw_pointer_cast.h +52 -0
- cuda/cccl/headers/include/thrust/detail/raw_reference_cast.h +192 -0
- cuda/cccl/headers/include/thrust/detail/reduce.inl +377 -0
- cuda/cccl/headers/include/thrust/detail/reference.h +494 -0
- cuda/cccl/headers/include/thrust/detail/reference_forward_declaration.h +35 -0
- cuda/cccl/headers/include/thrust/detail/remove.inl +213 -0
- cuda/cccl/headers/include/thrust/detail/replace.inl +231 -0
- cuda/cccl/headers/include/thrust/detail/reverse.inl +88 -0
- cuda/cccl/headers/include/thrust/detail/scan.inl +518 -0
- cuda/cccl/headers/include/thrust/detail/scatter.inl +157 -0
- cuda/cccl/headers/include/thrust/detail/seq.h +66 -0
- cuda/cccl/headers/include/thrust/detail/sequence.inl +109 -0
- cuda/cccl/headers/include/thrust/detail/set_operations.inl +981 -0
- cuda/cccl/headers/include/thrust/detail/shuffle.inl +86 -0
- cuda/cccl/headers/include/thrust/detail/sort.inl +373 -0
- cuda/cccl/headers/include/thrust/detail/static_assert.h +58 -0
- cuda/cccl/headers/include/thrust/detail/static_map.h +167 -0
- cuda/cccl/headers/include/thrust/detail/swap_ranges.inl +65 -0
- cuda/cccl/headers/include/thrust/detail/tabulate.inl +62 -0
- cuda/cccl/headers/include/thrust/detail/temporary_array.h +153 -0
- cuda/cccl/headers/include/thrust/detail/temporary_array.inl +120 -0
- cuda/cccl/headers/include/thrust/detail/temporary_buffer.h +81 -0
- cuda/cccl/headers/include/thrust/detail/transform_reduce.inl +69 -0
- cuda/cccl/headers/include/thrust/detail/transform_scan.inl +161 -0
- cuda/cccl/headers/include/thrust/detail/trivial_sequence.h +130 -0
- cuda/cccl/headers/include/thrust/detail/tuple_meta_transform.h +61 -0
- cuda/cccl/headers/include/thrust/detail/type_deduction.h +62 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/has_member_function.h +47 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/has_nested_type.h +43 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/is_call_possible.h +167 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/is_commutative.h +69 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/is_metafunction_defined.h +39 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/is_thrust_pointer.h +59 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/iterator/is_output_iterator.h +46 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/minimum_type.h +89 -0
- cuda/cccl/headers/include/thrust/detail/type_traits/pointer_traits.h +332 -0
- cuda/cccl/headers/include/thrust/detail/type_traits.h +136 -0
- cuda/cccl/headers/include/thrust/detail/uninitialized_copy.inl +90 -0
- cuda/cccl/headers/include/thrust/detail/uninitialized_fill.inl +86 -0
- cuda/cccl/headers/include/thrust/detail/unique.inl +373 -0
- cuda/cccl/headers/include/thrust/detail/use_default.h +34 -0
- cuda/cccl/headers/include/thrust/detail/vector_base.h +613 -0
- cuda/cccl/headers/include/thrust/detail/vector_base.inl +1210 -0
- cuda/cccl/headers/include/thrust/device_allocator.h +134 -0
- cuda/cccl/headers/include/thrust/device_delete.h +74 -0
- cuda/cccl/headers/include/thrust/device_free.h +85 -0
- cuda/cccl/headers/include/thrust/device_make_unique.h +56 -0
- cuda/cccl/headers/include/thrust/device_malloc.h +84 -0
- cuda/cccl/headers/include/thrust/device_malloc_allocator.h +190 -0
- cuda/cccl/headers/include/thrust/device_new.h +112 -0
- cuda/cccl/headers/include/thrust/device_new_allocator.h +179 -0
- cuda/cccl/headers/include/thrust/device_ptr.h +196 -0
- cuda/cccl/headers/include/thrust/device_reference.h +983 -0
- cuda/cccl/headers/include/thrust/device_vector.h +576 -0
- cuda/cccl/headers/include/thrust/distance.h +43 -0
- cuda/cccl/headers/include/thrust/equal.h +247 -0
- cuda/cccl/headers/include/thrust/execution_policy.h +251 -0
- cuda/cccl/headers/include/thrust/extrema.h +657 -0
- cuda/cccl/headers/include/thrust/fill.h +200 -0
- cuda/cccl/headers/include/thrust/find.h +382 -0
- cuda/cccl/headers/include/thrust/for_each.h +261 -0
- cuda/cccl/headers/include/thrust/functional.h +395 -0
- cuda/cccl/headers/include/thrust/gather.h +464 -0
- cuda/cccl/headers/include/thrust/generate.h +193 -0
- cuda/cccl/headers/include/thrust/host_vector.h +576 -0
- cuda/cccl/headers/include/thrust/inner_product.h +264 -0
- cuda/cccl/headers/include/thrust/iterator/constant_iterator.h +221 -0
- cuda/cccl/headers/include/thrust/iterator/counting_iterator.h +335 -0
- cuda/cccl/headers/include/thrust/iterator/detail/any_assign.h +48 -0
- cuda/cccl/headers/include/thrust/iterator/detail/any_system_tag.h +43 -0
- cuda/cccl/headers/include/thrust/iterator/detail/device_system_tag.h +38 -0
- cuda/cccl/headers/include/thrust/iterator/detail/host_system_tag.h +38 -0
- cuda/cccl/headers/include/thrust/iterator/detail/iterator_adaptor_base.h +81 -0
- cuda/cccl/headers/include/thrust/iterator/detail/iterator_category_to_system.h +60 -0
- cuda/cccl/headers/include/thrust/iterator/detail/iterator_category_to_traversal.h +65 -0
- cuda/cccl/headers/include/thrust/iterator/detail/iterator_category_with_system_and_traversal.h +57 -0
- cuda/cccl/headers/include/thrust/iterator/detail/iterator_facade_category.h +182 -0
- cuda/cccl/headers/include/thrust/iterator/detail/minimum_system.h +58 -0
- cuda/cccl/headers/include/thrust/iterator/detail/normal_iterator.h +69 -0
- cuda/cccl/headers/include/thrust/iterator/detail/retag.h +104 -0
- cuda/cccl/headers/include/thrust/iterator/detail/tagged_iterator.h +81 -0
- cuda/cccl/headers/include/thrust/iterator/detail/tuple_of_iterator_references.h +174 -0
- cuda/cccl/headers/include/thrust/iterator/discard_iterator.h +163 -0
- cuda/cccl/headers/include/thrust/iterator/iterator_adaptor.h +251 -0
- cuda/cccl/headers/include/thrust/iterator/iterator_categories.h +211 -0
- cuda/cccl/headers/include/thrust/iterator/iterator_facade.h +659 -0
- cuda/cccl/headers/include/thrust/iterator/iterator_traits.h +334 -0
- cuda/cccl/headers/include/thrust/iterator/iterator_traversal_tags.h +64 -0
- cuda/cccl/headers/include/thrust/iterator/offset_iterator.h +194 -0
- cuda/cccl/headers/include/thrust/iterator/permutation_iterator.h +204 -0
- cuda/cccl/headers/include/thrust/iterator/retag.h +72 -0
- cuda/cccl/headers/include/thrust/iterator/reverse_iterator.h +51 -0
- cuda/cccl/headers/include/thrust/iterator/shuffle_iterator.h +185 -0
- cuda/cccl/headers/include/thrust/iterator/strided_iterator.h +152 -0
- cuda/cccl/headers/include/thrust/iterator/tabulate_output_iterator.h +152 -0
- cuda/cccl/headers/include/thrust/iterator/transform_input_output_iterator.h +226 -0
- cuda/cccl/headers/include/thrust/iterator/transform_iterator.h +351 -0
- cuda/cccl/headers/include/thrust/iterator/transform_output_iterator.h +190 -0
- cuda/cccl/headers/include/thrust/iterator/zip_iterator.h +359 -0
- cuda/cccl/headers/include/thrust/logical.h +290 -0
- cuda/cccl/headers/include/thrust/memory.h +299 -0
- cuda/cccl/headers/include/thrust/merge.h +725 -0
- cuda/cccl/headers/include/thrust/mismatch.h +261 -0
- cuda/cccl/headers/include/thrust/mr/allocator.h +229 -0
- cuda/cccl/headers/include/thrust/mr/device_memory_resource.h +41 -0
- cuda/cccl/headers/include/thrust/mr/disjoint_pool.h +528 -0
- cuda/cccl/headers/include/thrust/mr/disjoint_sync_pool.h +118 -0
- cuda/cccl/headers/include/thrust/mr/disjoint_tls_pool.h +67 -0
- cuda/cccl/headers/include/thrust/mr/fancy_pointer_resource.h +67 -0
- cuda/cccl/headers/include/thrust/mr/host_memory_resource.h +38 -0
- cuda/cccl/headers/include/thrust/mr/memory_resource.h +217 -0
- cuda/cccl/headers/include/thrust/mr/new.h +100 -0
- cuda/cccl/headers/include/thrust/mr/polymorphic_adaptor.h +63 -0
- cuda/cccl/headers/include/thrust/mr/pool.h +528 -0
- cuda/cccl/headers/include/thrust/mr/pool_options.h +174 -0
- cuda/cccl/headers/include/thrust/mr/sync_pool.h +114 -0
- cuda/cccl/headers/include/thrust/mr/tls_pool.h +64 -0
- cuda/cccl/headers/include/thrust/mr/universal_memory_resource.h +29 -0
- cuda/cccl/headers/include/thrust/mr/validator.h +56 -0
- cuda/cccl/headers/include/thrust/pair.h +99 -0
- cuda/cccl/headers/include/thrust/partition.h +1391 -0
- cuda/cccl/headers/include/thrust/per_device_resource.h +98 -0
- cuda/cccl/headers/include/thrust/random/detail/discard_block_engine.inl +184 -0
- cuda/cccl/headers/include/thrust/random/detail/linear_congruential_engine.inl +155 -0
- cuda/cccl/headers/include/thrust/random/detail/linear_congruential_engine_discard.h +104 -0
- cuda/cccl/headers/include/thrust/random/detail/linear_feedback_shift_engine.inl +151 -0
- cuda/cccl/headers/include/thrust/random/detail/linear_feedback_shift_engine_wordmask.h +53 -0
- cuda/cccl/headers/include/thrust/random/detail/mod.h +101 -0
- cuda/cccl/headers/include/thrust/random/detail/normal_distribution.inl +187 -0
- cuda/cccl/headers/include/thrust/random/detail/normal_distribution_base.h +160 -0
- cuda/cccl/headers/include/thrust/random/detail/random_core_access.h +63 -0
- cuda/cccl/headers/include/thrust/random/detail/subtract_with_carry_engine.inl +201 -0
- cuda/cccl/headers/include/thrust/random/detail/uniform_int_distribution.inl +198 -0
- cuda/cccl/headers/include/thrust/random/detail/uniform_real_distribution.inl +200 -0
- cuda/cccl/headers/include/thrust/random/detail/xor_combine_engine.inl +183 -0
- cuda/cccl/headers/include/thrust/random/detail/xor_combine_engine_max.h +187 -0
- cuda/cccl/headers/include/thrust/random/discard_block_engine.h +240 -0
- cuda/cccl/headers/include/thrust/random/linear_congruential_engine.h +289 -0
- cuda/cccl/headers/include/thrust/random/linear_feedback_shift_engine.h +217 -0
- cuda/cccl/headers/include/thrust/random/normal_distribution.h +257 -0
- cuda/cccl/headers/include/thrust/random/subtract_with_carry_engine.h +247 -0
- cuda/cccl/headers/include/thrust/random/uniform_int_distribution.h +261 -0
- cuda/cccl/headers/include/thrust/random/uniform_real_distribution.h +258 -0
- cuda/cccl/headers/include/thrust/random/xor_combine_engine.h +255 -0
- cuda/cccl/headers/include/thrust/random.h +120 -0
- cuda/cccl/headers/include/thrust/reduce.h +1113 -0
- cuda/cccl/headers/include/thrust/remove.h +768 -0
- cuda/cccl/headers/include/thrust/replace.h +826 -0
- cuda/cccl/headers/include/thrust/reverse.h +215 -0
- cuda/cccl/headers/include/thrust/scan.h +1671 -0
- cuda/cccl/headers/include/thrust/scatter.h +446 -0
- cuda/cccl/headers/include/thrust/sequence.h +277 -0
- cuda/cccl/headers/include/thrust/set_operations.h +3026 -0
- cuda/cccl/headers/include/thrust/shuffle.h +182 -0
- cuda/cccl/headers/include/thrust/sort.h +1320 -0
- cuda/cccl/headers/include/thrust/swap.h +147 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/adjacent_difference.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/assign_value.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/binary_search.h +32 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/copy.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/copy_if.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/count.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/equal.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/execution_policy.h +109 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/extrema.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/fill.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/find.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/for_each.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/gather.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/generate.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/get_value.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/inner_product.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/iter_swap.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/logical.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/malloc_and_free.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/memory.inl +60 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/merge.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/mismatch.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/partition.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/per_device_resource.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/reduce.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/reduce_by_key.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/remove.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/replace.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/reverse.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/scan.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/scan_by_key.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/scatter.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/sequence.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/set_operations.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/sort.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/swap_ranges.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/tabulate.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/temporary_buffer.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/transform.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/transform_reduce.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/transform_scan.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/uninitialized_copy.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/uninitialized_fill.h +29 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/unique.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/detail/unique_by_key.h +30 -0
- cuda/cccl/headers/include/thrust/system/cpp/execution_policy.h +63 -0
- cuda/cccl/headers/include/thrust/system/cpp/memory.h +106 -0
- cuda/cccl/headers/include/thrust/system/cpp/memory_resource.h +72 -0
- cuda/cccl/headers/include/thrust/system/cpp/pointer.h +120 -0
- cuda/cccl/headers/include/thrust/system/cpp/vector.h +96 -0
- cuda/cccl/headers/include/thrust/system/cuda/config.h +126 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/adjacent_difference.h +219 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/assign_value.h +124 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/binary_search.h +29 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/cdp_dispatch.h +72 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/copy.h +273 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/copy_if.h +255 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/core/agent_launcher.h +289 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/core/triple_chevron_launch.h +191 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/core/util.h +593 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/count.h +75 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/cross_system.h +243 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/dispatch.h +233 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/equal.h +64 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/error.inl +96 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/execution_policy.h +264 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/extrema.h +476 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/fill.h +100 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/find.h +170 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/for_each.h +83 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/gather.h +91 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/generate.h +60 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/get_value.h +65 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/inner_product.h +75 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/iter_swap.h +80 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/logical.h +29 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/make_unsigned_special.h +61 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/malloc_and_free.h +121 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/memory.inl +57 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/merge.h +228 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/mismatch.h +223 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/parallel_for.h +81 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/partition.h +405 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/per_device_resource.h +72 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/reduce.h +785 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/reduce_by_key.h +1001 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/remove.h +107 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/replace.h +122 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/reverse.h +87 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/scan.h +341 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/scan_by_key.h +414 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/scatter.h +91 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/sequence.h +29 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/set_operations.h +1734 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/sort.h +469 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/swap_ranges.h +98 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/tabulate.h +61 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/temporary_buffer.h +132 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/terminate.h +53 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/transform.h +429 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/transform_reduce.h +143 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/transform_scan.h +119 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/uninitialized_copy.h +117 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/uninitialized_fill.h +105 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/unique.h +289 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/unique_by_key.h +310 -0
- cuda/cccl/headers/include/thrust/system/cuda/detail/util.h +253 -0
- cuda/cccl/headers/include/thrust/system/cuda/error.h +168 -0
- cuda/cccl/headers/include/thrust/system/cuda/execution_policy.h +15 -0
- cuda/cccl/headers/include/thrust/system/cuda/memory.h +122 -0
- cuda/cccl/headers/include/thrust/system/cuda/memory_resource.h +122 -0
- cuda/cccl/headers/include/thrust/system/cuda/pointer.h +160 -0
- cuda/cccl/headers/include/thrust/system/cuda/vector.h +108 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/adjacent_difference.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/assign_value.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/binary_search.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/copy.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/copy_if.h +52 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/count.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/equal.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/extrema.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/fill.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/find.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/for_each.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/gather.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/generate.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/get_value.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/inner_product.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/iter_swap.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/logical.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/malloc_and_free.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/merge.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/mismatch.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/partition.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/per_device_resource.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/reduce.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/reduce_by_key.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/remove.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/replace.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/reverse.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/scan.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/scan_by_key.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/scatter.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/sequence.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/set_operations.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/sort.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/swap_ranges.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/tabulate.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/temporary_buffer.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/transform.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/transform_reduce.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/transform_scan.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/uninitialized_copy.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/uninitialized_fill.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/unique.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/adl/unique_by_key.h +51 -0
- cuda/cccl/headers/include/thrust/system/detail/bad_alloc.h +61 -0
- cuda/cccl/headers/include/thrust/system/detail/errno.h +120 -0
- cuda/cccl/headers/include/thrust/system/detail/error_category.inl +302 -0
- cuda/cccl/headers/include/thrust/system/detail/error_code.inl +173 -0
- cuda/cccl/headers/include/thrust/system/detail/error_condition.inl +121 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/adjacent_difference.h +53 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/adjacent_difference.inl +79 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/binary_search.h +161 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/binary_search.inl +384 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/copy.h +45 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/copy.inl +64 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/copy_if.h +58 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/copy_if.inl +146 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/count.h +48 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/count.inl +84 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/equal.h +49 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/equal.inl +60 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/extrema.h +66 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/extrema.inl +252 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/fill.h +54 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/find.h +49 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/find.inl +137 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/for_each.h +58 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/gather.h +73 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/gather.inl +96 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/generate.h +45 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/generate.inl +63 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/inner_product.h +60 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/inner_product.inl +72 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/logical.h +59 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/memory.h +64 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/memory.inl +86 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/merge.h +99 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/merge.inl +148 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/mismatch.h +49 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/mismatch.inl +68 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/partition.h +129 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/partition.inl +207 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/per_device_resource.h +43 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reduce.h +71 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reduce.inl +100 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reduce_by_key.h +83 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reduce_by_key.inl +186 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/remove.h +86 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/remove.inl +121 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/replace.h +95 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/replace.inl +175 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reverse.h +48 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/reverse.inl +67 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scalar/binary_search.h +63 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scalar/binary_search.inl +126 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scan.h +72 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scan.inl +85 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scan_by_key.h +126 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scan_by_key.inl +232 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scatter.h +73 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/scatter.inl +85 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/select_system.h +104 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/sequence.h +70 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/set_operations.h +282 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/set_operations.inl +476 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/shuffle.h +54 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/shuffle.inl +125 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/sort.h +113 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/sort.inl +175 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/swap_ranges.h +44 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/swap_ranges.inl +76 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/tabulate.h +41 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/tabulate.inl +54 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/tag.h +47 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/temporary_buffer.h +54 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/temporary_buffer.inl +82 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/transform.h +395 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/transform_reduce.h +50 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/transform_reduce.inl +56 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/transform_scan.h +80 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/transform_scan.inl +113 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/uninitialized_copy.h +45 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/uninitialized_copy.inl +166 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/uninitialized_fill.h +45 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/uninitialized_fill.inl +115 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/unique.h +71 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/unique.inl +113 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/unique_by_key.h +81 -0
- cuda/cccl/headers/include/thrust/system/detail/generic/unique_by_key.inl +126 -0
- cuda/cccl/headers/include/thrust/system/detail/internal/decompose.h +117 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/adjacent_difference.h +70 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/assign_value.h +42 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/binary_search.h +136 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/copy.h +49 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/copy.inl +119 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/copy_backward.h +49 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/copy_if.h +71 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/count.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/equal.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/execution_policy.h +52 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/extrema.h +110 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/fill.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/find.h +62 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/for_each.h +74 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/gather.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/general_copy.h +123 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/generate.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/get_value.h +43 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/inner_product.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/insertion_sort.h +141 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/iter_swap.h +45 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/logical.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/malloc_and_free.h +50 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/merge.h +75 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/merge.inl +145 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/mismatch.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/partition.h +301 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/per_device_resource.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/reduce.h +64 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/reduce_by_key.h +98 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/remove.h +179 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/replace.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/reverse.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/scan.h +154 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/scan_by_key.h +145 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/scatter.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/sequence.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/set_operations.h +206 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/sort.h +59 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/sort.inl +116 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_merge_sort.h +55 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_merge_sort.inl +356 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_primitive_sort.h +48 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_primitive_sort.inl +124 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_radix_sort.h +48 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/stable_radix_sort.inl +586 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/swap_ranges.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/tabulate.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/temporary_buffer.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/transform.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/transform_reduce.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/transform_scan.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/trivial_copy.h +58 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/uninitialized_copy.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/uninitialized_fill.h +29 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/unique.h +115 -0
- cuda/cccl/headers/include/thrust/system/detail/sequential/unique_by_key.h +106 -0
- cuda/cccl/headers/include/thrust/system/detail/system_error.inl +108 -0
- cuda/cccl/headers/include/thrust/system/error_code.h +512 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/adjacent_difference.h +54 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/assign_value.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/binary_search.h +77 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/copy.h +50 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/copy.inl +74 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/copy_if.h +56 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/copy_if.inl +59 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/count.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/default_decomposition.h +50 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/default_decomposition.inl +65 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/equal.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/execution_policy.h +127 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/extrema.h +66 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/fill.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/find.h +53 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/for_each.h +56 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/for_each.inl +87 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/gather.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/generate.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/get_value.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/inner_product.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/iter_swap.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/logical.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/malloc_and_free.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/memory.inl +93 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/merge.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/mismatch.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/partition.h +88 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/partition.inl +102 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/per_device_resource.h +29 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/pragma_omp.h +54 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/reduce.h +54 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/reduce.inl +78 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/reduce_by_key.h +64 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/reduce_by_key.inl +65 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/reduce_intervals.h +59 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/reduce_intervals.inl +103 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/remove.h +72 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/remove.inl +87 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/replace.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/reverse.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/scan.h +73 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/scan.inl +172 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/scan_by_key.h +36 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/scatter.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/sequence.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/set_operations.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/sort.h +60 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/sort.inl +265 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/swap_ranges.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/tabulate.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/temporary_buffer.h +29 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/transform.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/transform_reduce.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/transform_scan.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/uninitialized_copy.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/uninitialized_fill.h +30 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/unique.h +60 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/unique.inl +71 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/unique_by_key.h +67 -0
- cuda/cccl/headers/include/thrust/system/omp/detail/unique_by_key.inl +75 -0
- cuda/cccl/headers/include/thrust/system/omp/execution_policy.h +62 -0
- cuda/cccl/headers/include/thrust/system/omp/memory.h +111 -0
- cuda/cccl/headers/include/thrust/system/omp/memory_resource.h +75 -0
- cuda/cccl/headers/include/thrust/system/omp/pointer.h +124 -0
- cuda/cccl/headers/include/thrust/system/omp/vector.h +99 -0
- cuda/cccl/headers/include/thrust/system/system_error.h +185 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/adjacent_difference.h +54 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/assign_value.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/binary_search.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/copy.h +50 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/copy.inl +73 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/copy_if.h +47 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/copy_if.inl +136 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/count.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/equal.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/execution_policy.h +109 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/extrema.h +66 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/fill.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/find.h +49 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/for_each.h +51 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/for_each.inl +91 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/gather.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/generate.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/get_value.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/inner_product.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/iter_swap.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/logical.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/malloc_and_free.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/memory.inl +94 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/merge.h +77 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/merge.inl +327 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/mismatch.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/partition.h +84 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/partition.inl +98 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/per_device_resource.h +29 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/reduce.h +54 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/reduce.inl +137 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/reduce_by_key.h +61 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/reduce_by_key.inl +400 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/reduce_intervals.h +140 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/remove.h +76 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/remove.inl +87 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/replace.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/reverse.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/scan.h +59 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/scan.inl +312 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/scan_by_key.h +33 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/scatter.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/sequence.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/set_operations.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/sort.h +60 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/sort.inl +295 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/swap_ranges.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/tabulate.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/temporary_buffer.h +29 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/transform.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/transform_reduce.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/transform_scan.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/uninitialized_copy.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/uninitialized_fill.h +30 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/unique.h +60 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/unique.inl +71 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/unique_by_key.h +67 -0
- cuda/cccl/headers/include/thrust/system/tbb/detail/unique_by_key.inl +75 -0
- cuda/cccl/headers/include/thrust/system/tbb/execution_policy.h +62 -0
- cuda/cccl/headers/include/thrust/system/tbb/memory.h +111 -0
- cuda/cccl/headers/include/thrust/system/tbb/memory_resource.h +75 -0
- cuda/cccl/headers/include/thrust/system/tbb/pointer.h +124 -0
- cuda/cccl/headers/include/thrust/system/tbb/vector.h +99 -0
- cuda/cccl/headers/include/thrust/system_error.h +57 -0
- cuda/cccl/headers/include/thrust/tabulate.h +125 -0
- cuda/cccl/headers/include/thrust/transform.h +1045 -0
- cuda/cccl/headers/include/thrust/transform_reduce.h +190 -0
- cuda/cccl/headers/include/thrust/transform_scan.h +442 -0
- cuda/cccl/headers/include/thrust/tuple.h +139 -0
- cuda/cccl/headers/include/thrust/type_traits/integer_sequence.h +261 -0
- cuda/cccl/headers/include/thrust/type_traits/is_contiguous_iterator.h +154 -0
- cuda/cccl/headers/include/thrust/type_traits/is_execution_policy.h +65 -0
- cuda/cccl/headers/include/thrust/type_traits/is_operator_less_or_greater_function_object.h +184 -0
- cuda/cccl/headers/include/thrust/type_traits/is_operator_plus_function_object.h +116 -0
- cuda/cccl/headers/include/thrust/type_traits/is_trivially_relocatable.h +336 -0
- cuda/cccl/headers/include/thrust/type_traits/logical_metafunctions.h +42 -0
- cuda/cccl/headers/include/thrust/type_traits/unwrap_contiguous_iterator.h +63 -0
- cuda/cccl/headers/include/thrust/uninitialized_copy.h +300 -0
- cuda/cccl/headers/include/thrust/uninitialized_fill.h +268 -0
- cuda/cccl/headers/include/thrust/unique.h +1088 -0
- cuda/cccl/headers/include/thrust/universal_allocator.h +93 -0
- cuda/cccl/headers/include/thrust/universal_ptr.h +34 -0
- cuda/cccl/headers/include/thrust/universal_vector.h +71 -0
- cuda/cccl/headers/include/thrust/version.h +93 -0
- cuda/cccl/headers/include/thrust/zip_function.h +176 -0
- cuda/cccl/headers/include_paths.py +51 -0
- cuda/cccl/parallel/__init__.py +9 -0
- cuda/cccl/parallel/experimental/__init__.py +24 -0
- cuda/cccl/py.typed +0 -0
- cuda/compute/__init__.py +79 -0
- cuda/compute/_bindings.py +79 -0
- cuda/compute/_bindings.pyi +475 -0
- cuda/compute/_bindings_impl.pyx +2273 -0
- cuda/compute/_caching.py +71 -0
- cuda/compute/_cccl_interop.py +422 -0
- cuda/compute/_utils/__init__.py +0 -0
- cuda/compute/_utils/protocols.py +132 -0
- cuda/compute/_utils/temp_storage_buffer.py +86 -0
- cuda/compute/algorithms/__init__.py +54 -0
- cuda/compute/algorithms/_histogram.py +243 -0
- cuda/compute/algorithms/_merge_sort.py +225 -0
- cuda/compute/algorithms/_radix_sort.py +312 -0
- cuda/compute/algorithms/_reduce.py +182 -0
- cuda/compute/algorithms/_scan.py +331 -0
- cuda/compute/algorithms/_segmented_reduce.py +257 -0
- cuda/compute/algorithms/_three_way_partition.py +261 -0
- cuda/compute/algorithms/_transform.py +329 -0
- cuda/compute/algorithms/_unique_by_key.py +252 -0
- cuda/compute/cccl/.gitkeep +0 -0
- cuda/compute/cu12/_bindings_impl.cp313-win_amd64.pyd +0 -0
- cuda/compute/cu12/cccl/cccl.c.parallel.dll +0 -0
- cuda/compute/cu12/cccl/cccl.c.parallel.lib +0 -0
- cuda/compute/cu13/_bindings_impl.cp313-win_amd64.pyd +0 -0
- cuda/compute/cu13/cccl/cccl.c.parallel.dll +0 -0
- cuda/compute/cu13/cccl/cccl.c.parallel.lib +0 -0
- cuda/compute/iterators/__init__.py +21 -0
- cuda/compute/iterators/_factories.py +219 -0
- cuda/compute/iterators/_iterators.py +817 -0
- cuda/compute/iterators/_zip_iterator.py +199 -0
- cuda/compute/numba_utils.py +53 -0
- cuda/compute/op.py +3 -0
- cuda/compute/struct.py +272 -0
- cuda/compute/typing.py +37 -0
- cuda/coop/__init__.py +8 -0
- cuda/coop/_caching.py +48 -0
- cuda/coop/_common.py +275 -0
- cuda/coop/_nvrtc.py +92 -0
- cuda/coop/_scan_op.py +181 -0
- cuda/coop/_types.py +937 -0
- cuda/coop/_typing.py +107 -0
- cuda/coop/block/__init__.py +39 -0
- cuda/coop/block/_block_exchange.py +251 -0
- cuda/coop/block/_block_load_store.py +215 -0
- cuda/coop/block/_block_merge_sort.py +125 -0
- cuda/coop/block/_block_radix_sort.py +214 -0
- cuda/coop/block/_block_reduce.py +294 -0
- cuda/coop/block/_block_scan.py +983 -0
- cuda/coop/warp/__init__.py +9 -0
- cuda/coop/warp/_warp_merge_sort.py +92 -0
- cuda/coop/warp/_warp_reduce.py +153 -0
- cuda/coop/warp/_warp_scan.py +78 -0
- cuda_cccl-0.3.3.dist-info/METADATA +41 -0
- cuda_cccl-0.3.3.dist-info/RECORD +1968 -0
- cuda_cccl-0.3.3.dist-info/WHEEL +5 -0
- cuda_cccl-0.3.3.dist-info/licenses/LICENSE +1 -0
|
@@ -0,0 +1,1910 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2008-2013 NVIDIA Corporation
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/*! \file binary_search.h
|
|
18
|
+
* \brief Search for values in sorted ranges.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
#pragma once
|
|
22
|
+
|
|
23
|
+
#include <thrust/detail/config.h>
|
|
24
|
+
|
|
25
|
+
#if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)
|
|
26
|
+
# pragma GCC system_header
|
|
27
|
+
#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)
|
|
28
|
+
# pragma clang system_header
|
|
29
|
+
#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)
|
|
30
|
+
# pragma system_header
|
|
31
|
+
#endif // no system header
|
|
32
|
+
#include <thrust/detail/execution_policy.h>
|
|
33
|
+
#include <thrust/pair.h>
|
|
34
|
+
|
|
35
|
+
THRUST_NAMESPACE_BEGIN
|
|
36
|
+
|
|
37
|
+
/*! \addtogroup algorithms
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
/*! \addtogroup searching
|
|
41
|
+
* \ingroup algorithms
|
|
42
|
+
* \{
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
/*! \addtogroup binary_search Binary Search
|
|
46
|
+
* \ingroup searching
|
|
47
|
+
* \{
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
//////////////////////
|
|
51
|
+
// Scalar Functions //
|
|
52
|
+
//////////////////////
|
|
53
|
+
|
|
54
|
+
/*! \p lower_bound is a version of binary search: it attempts to find
|
|
55
|
+
* the element value in an ordered range <tt>[first, last)</tt>.
|
|
56
|
+
* Specifically, it returns the first position where value could be
|
|
57
|
+
* inserted without violating the ordering. This version of
|
|
58
|
+
* \p lower_bound uses <tt>operator<</tt> for comparison and returns
|
|
59
|
+
* the furthermost iterator \c i in <tt>[first, last)</tt> such that,
|
|
60
|
+
* for every iterator \c j in <tt>[first, i)</tt>, <tt>*j < value</tt>.
|
|
61
|
+
*
|
|
62
|
+
* The algorithm's execution is parallelized as determined by \p exec.
|
|
63
|
+
*
|
|
64
|
+
* \param exec The execution policy to use for parallelization.
|
|
65
|
+
* \param first The beginning of the ordered sequence.
|
|
66
|
+
* \param last The end of the ordered sequence.
|
|
67
|
+
* \param value The value to be searched.
|
|
68
|
+
* \return The furthermost iterator \c i, such that <tt>*i < value</tt>.
|
|
69
|
+
*
|
|
70
|
+
* \tparam DerivedPolicy The name of the derived execution policy.
|
|
71
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
72
|
+
* Iterator</a>. \tparam LessThanComparable is a model of <a
|
|
73
|
+
* href="https://en.cppreference.com/w/cpp/named_req/LessThanComparable">LessThanComparable</a>.
|
|
74
|
+
*
|
|
75
|
+
* The following code snippet demonstrates how to use \p lower_bound
|
|
76
|
+
* to search for values in a ordered range using the \p thrust::device execution policy for parallelization:
|
|
77
|
+
*
|
|
78
|
+
* \code
|
|
79
|
+
* #include <thrust/binary_search.h>
|
|
80
|
+
* #include <thrust/device_vector.h>
|
|
81
|
+
* #include <thrust/execution_policy.h>
|
|
82
|
+
* ...
|
|
83
|
+
* thrust::device_vector<int> input(5);
|
|
84
|
+
*
|
|
85
|
+
* input[0] = 0;
|
|
86
|
+
* input[1] = 2;
|
|
87
|
+
* input[2] = 5;
|
|
88
|
+
* input[3] = 7;
|
|
89
|
+
* input[4] = 8;
|
|
90
|
+
*
|
|
91
|
+
* thrust::lower_bound(thrust::device, input.begin(), input.end(), 0); // returns input.begin()
|
|
92
|
+
* thrust::lower_bound(thrust::device, input.begin(), input.end(), 1); // returns input.begin() + 1
|
|
93
|
+
* thrust::lower_bound(thrust::device, input.begin(), input.end(), 2); // returns input.begin() + 1
|
|
94
|
+
* thrust::lower_bound(thrust::device, input.begin(), input.end(), 3); // returns input.begin() + 2
|
|
95
|
+
* thrust::lower_bound(thrust::device, input.begin(), input.end(), 8); // returns input.begin() + 4
|
|
96
|
+
* thrust::lower_bound(thrust::device, input.begin(), input.end(), 9); // returns input.end()
|
|
97
|
+
* \endcode
|
|
98
|
+
*
|
|
99
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/lower_bound
|
|
100
|
+
* \see \p upper_bound
|
|
101
|
+
* \see \p equal_range
|
|
102
|
+
* \see \p binary_search
|
|
103
|
+
*/
|
|
104
|
+
template <typename DerivedPolicy, typename ForwardIterator, typename LessThanComparable>
|
|
105
|
+
_CCCL_HOST_DEVICE ForwardIterator lower_bound(
|
|
106
|
+
const thrust::detail::execution_policy_base<DerivedPolicy>& exec,
|
|
107
|
+
ForwardIterator first,
|
|
108
|
+
ForwardIterator last,
|
|
109
|
+
const LessThanComparable& value);
|
|
110
|
+
|
|
111
|
+
/*! \p lower_bound is a version of binary search: it attempts to find
|
|
112
|
+
* the element value in an ordered range <tt>[first, last)</tt>.
|
|
113
|
+
* Specifically, it returns the first position where value could be
|
|
114
|
+
* inserted without violating the ordering. This version of
|
|
115
|
+
* \p lower_bound uses <tt>operator<</tt> for comparison and returns
|
|
116
|
+
* the furthermost iterator \c i in <tt>[first, last)</tt> such that,
|
|
117
|
+
* for every iterator \c j in <tt>[first, i)</tt>, <tt>*j < value</tt>.
|
|
118
|
+
*
|
|
119
|
+
* \param first The beginning of the ordered sequence.
|
|
120
|
+
* \param last The end of the ordered sequence.
|
|
121
|
+
* \param value The value to be searched.
|
|
122
|
+
* \return The furthermost iterator \c i, such that <tt>*i < value</tt>.
|
|
123
|
+
*
|
|
124
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
125
|
+
* Iterator</a>. \tparam LessThanComparable is a model of <a
|
|
126
|
+
* href="https://en.cppreference.com/w/cpp/named_req/LessThanComparable">LessThanComparable</a>.
|
|
127
|
+
*
|
|
128
|
+
* The following code snippet demonstrates how to use \p lower_bound
|
|
129
|
+
* to search for values in a ordered range.
|
|
130
|
+
*
|
|
131
|
+
* \code
|
|
132
|
+
* #include <thrust/binary_search.h>
|
|
133
|
+
* #include <thrust/device_vector.h>
|
|
134
|
+
* ...
|
|
135
|
+
* thrust::device_vector<int> input(5);
|
|
136
|
+
*
|
|
137
|
+
* input[0] = 0;
|
|
138
|
+
* input[1] = 2;
|
|
139
|
+
* input[2] = 5;
|
|
140
|
+
* input[3] = 7;
|
|
141
|
+
* input[4] = 8;
|
|
142
|
+
*
|
|
143
|
+
* thrust::lower_bound(input.begin(), input.end(), 0); // returns input.begin()
|
|
144
|
+
* thrust::lower_bound(input.begin(), input.end(), 1); // returns input.begin() + 1
|
|
145
|
+
* thrust::lower_bound(input.begin(), input.end(), 2); // returns input.begin() + 1
|
|
146
|
+
* thrust::lower_bound(input.begin(), input.end(), 3); // returns input.begin() + 2
|
|
147
|
+
* thrust::lower_bound(input.begin(), input.end(), 8); // returns input.begin() + 4
|
|
148
|
+
* thrust::lower_bound(input.begin(), input.end(), 9); // returns input.end()
|
|
149
|
+
* \endcode
|
|
150
|
+
*
|
|
151
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/lower_bound
|
|
152
|
+
* \see \p upper_bound
|
|
153
|
+
* \see \p equal_range
|
|
154
|
+
* \see \p binary_search
|
|
155
|
+
*/
|
|
156
|
+
template <class ForwardIterator, class LessThanComparable>
|
|
157
|
+
ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, const LessThanComparable& value);
|
|
158
|
+
|
|
159
|
+
/*! \p lower_bound is a version of binary search: it attempts to find
|
|
160
|
+
* the element value in an ordered range <tt>[first, last)</tt>.
|
|
161
|
+
* Specifically, it returns the first position where value could be
|
|
162
|
+
* inserted without violating the ordering. This version of
|
|
163
|
+
* \p lower_bound uses function object \c comp for comparison
|
|
164
|
+
* and returns the furthermost iterator \c i in <tt>[first, last)</tt>
|
|
165
|
+
* such that, for every iterator \c j in <tt>[first, i)</tt>,
|
|
166
|
+
* <tt>comp(*j, value)</tt> is \c true.
|
|
167
|
+
*
|
|
168
|
+
* The algorithm's execution is parallelized as determined by \p exec.
|
|
169
|
+
*
|
|
170
|
+
* \param exec The execution policy to use for parallelization.
|
|
171
|
+
* \param first The beginning of the ordered sequence.
|
|
172
|
+
* \param last The end of the ordered sequence.
|
|
173
|
+
* \param value The value to be searched.
|
|
174
|
+
* \param comp The comparison operator.
|
|
175
|
+
* \return The furthermost iterator \c i, such that <tt>comp(*i, value)</tt> is \c true.
|
|
176
|
+
*
|
|
177
|
+
* \tparam DerivedPolicy The name of the derived execution policy.
|
|
178
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
179
|
+
* Iterator</a>. \tparam T is comparable to \p ForwardIterator's \c value_type. \tparam StrictWeakOrdering is a model of
|
|
180
|
+
* <a href="https://en.cppreference.com/w/cpp/concepts/strict_weak_order">Strict Weak Ordering</a>.
|
|
181
|
+
*
|
|
182
|
+
* The following code snippet demonstrates how to use \p lower_bound
|
|
183
|
+
* to search for values in a ordered range using the \p thrust::device execution policy for parallelization:
|
|
184
|
+
*
|
|
185
|
+
* \code
|
|
186
|
+
* #include <thrust/binary_search.h>
|
|
187
|
+
* #include <thrust/device_vector.h>
|
|
188
|
+
* #include <thrust/functional.h>
|
|
189
|
+
* #include <thrust/execution_policy.h>
|
|
190
|
+
* ...
|
|
191
|
+
* thrust::device_vector<int> input(5);
|
|
192
|
+
*
|
|
193
|
+
* input[0] = 0;
|
|
194
|
+
* input[1] = 2;
|
|
195
|
+
* input[2] = 5;
|
|
196
|
+
* input[3] = 7;
|
|
197
|
+
* input[4] = 8;
|
|
198
|
+
*
|
|
199
|
+
* thrust::lower_bound(input.begin(), input.end(), 0, ::cuda::std::less<int>()); // returns input.begin()
|
|
200
|
+
* thrust::lower_bound(input.begin(), input.end(), 1, ::cuda::std::less<int>()); // returns input.begin() + 1
|
|
201
|
+
* thrust::lower_bound(input.begin(), input.end(), 2, ::cuda::std::less<int>()); // returns input.begin() + 1
|
|
202
|
+
* thrust::lower_bound(input.begin(), input.end(), 3, ::cuda::std::less<int>()); // returns input.begin() + 2
|
|
203
|
+
* thrust::lower_bound(input.begin(), input.end(), 8, ::cuda::std::less<int>()); // returns input.begin() + 4
|
|
204
|
+
* thrust::lower_bound(input.begin(), input.end(), 9, ::cuda::std::less<int>()); // returns input.end()
|
|
205
|
+
* \endcode
|
|
206
|
+
*
|
|
207
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/lower_bound
|
|
208
|
+
* \see \p upper_bound
|
|
209
|
+
* \see \p equal_range
|
|
210
|
+
* \see \p binary_search
|
|
211
|
+
*/
|
|
212
|
+
template <typename DerivedPolicy, typename ForwardIterator, typename T, typename StrictWeakOrdering>
|
|
213
|
+
_CCCL_HOST_DEVICE ForwardIterator lower_bound(
|
|
214
|
+
const thrust::detail::execution_policy_base<DerivedPolicy>& exec,
|
|
215
|
+
ForwardIterator first,
|
|
216
|
+
ForwardIterator last,
|
|
217
|
+
const T& value,
|
|
218
|
+
StrictWeakOrdering comp);
|
|
219
|
+
|
|
220
|
+
/*! \p lower_bound is a version of binary search: it attempts to find
|
|
221
|
+
* the element value in an ordered range <tt>[first, last)</tt>.
|
|
222
|
+
* Specifically, it returns the first position where value could be
|
|
223
|
+
* inserted without violating the ordering. This version of
|
|
224
|
+
* \p lower_bound uses function object \c comp for comparison
|
|
225
|
+
* and returns the furthermost iterator \c i in <tt>[first, last)</tt>
|
|
226
|
+
* such that, for every iterator \c j in <tt>[first, i)</tt>,
|
|
227
|
+
* <tt>comp(*j, value)</tt> is \c true.
|
|
228
|
+
*
|
|
229
|
+
* \param first The beginning of the ordered sequence.
|
|
230
|
+
* \param last The end of the ordered sequence.
|
|
231
|
+
* \param value The value to be searched.
|
|
232
|
+
* \param comp The comparison operator.
|
|
233
|
+
* \return The furthermost iterator \c i, such that <tt>comp(*i, value)</tt> is \c true.
|
|
234
|
+
*
|
|
235
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
236
|
+
* Iterator</a>. \tparam T is comparable to \p ForwardIterator's \c value_type. \tparam StrictWeakOrdering is a model of
|
|
237
|
+
* <a href="https://en.cppreference.com/w/cpp/concepts/strict_weak_order">Strict Weak Ordering</a>.
|
|
238
|
+
*
|
|
239
|
+
* The following code snippet demonstrates how to use \p lower_bound
|
|
240
|
+
* to search for values in a ordered range.
|
|
241
|
+
*
|
|
242
|
+
* \code
|
|
243
|
+
* #include <thrust/binary_search.h>
|
|
244
|
+
* #include <thrust/device_vector.h>
|
|
245
|
+
* #include <thrust/functional.h>
|
|
246
|
+
* ...
|
|
247
|
+
* thrust::device_vector<int> input(5);
|
|
248
|
+
*
|
|
249
|
+
* input[0] = 0;
|
|
250
|
+
* input[1] = 2;
|
|
251
|
+
* input[2] = 5;
|
|
252
|
+
* input[3] = 7;
|
|
253
|
+
* input[4] = 8;
|
|
254
|
+
*
|
|
255
|
+
* thrust::lower_bound(input.begin(), input.end(), 0, ::cuda::std::less<int>()); // returns input.begin()
|
|
256
|
+
* thrust::lower_bound(input.begin(), input.end(), 1, ::cuda::std::less<int>()); // returns input.begin() + 1
|
|
257
|
+
* thrust::lower_bound(input.begin(), input.end(), 2, ::cuda::std::less<int>()); // returns input.begin() + 1
|
|
258
|
+
* thrust::lower_bound(input.begin(), input.end(), 3, ::cuda::std::less<int>()); // returns input.begin() + 2
|
|
259
|
+
* thrust::lower_bound(input.begin(), input.end(), 8, ::cuda::std::less<int>()); // returns input.begin() + 4
|
|
260
|
+
* thrust::lower_bound(input.begin(), input.end(), 9, ::cuda::std::less<int>()); // returns input.end()
|
|
261
|
+
* \endcode
|
|
262
|
+
*
|
|
263
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/lower_bound
|
|
264
|
+
* \see \p upper_bound
|
|
265
|
+
* \see \p equal_range
|
|
266
|
+
* \see \p binary_search
|
|
267
|
+
*/
|
|
268
|
+
template <class ForwardIterator, class T, class StrictWeakOrdering>
|
|
269
|
+
ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, const T& value, StrictWeakOrdering comp);
|
|
270
|
+
|
|
271
|
+
/*! \p upper_bound is a version of binary search: it attempts to find
|
|
272
|
+
* the element value in an ordered range <tt>[first, last)</tt>.
|
|
273
|
+
* Specifically, it returns the last position where value could be
|
|
274
|
+
* inserted without violating the ordering. This version of
|
|
275
|
+
* \p upper_bound uses <tt>operator<</tt> for comparison and returns
|
|
276
|
+
* the furthermost iterator \c i in <tt>[first, last)</tt> such that,
|
|
277
|
+
* for every iterator \c j in <tt>[first, i)</tt>, <tt>value < *j</tt>
|
|
278
|
+
* is \c false.
|
|
279
|
+
*
|
|
280
|
+
* The algorithm's execution is parallelized as determined by \p exec.
|
|
281
|
+
*
|
|
282
|
+
* \param exec The execution policy to use for parallelization.
|
|
283
|
+
* \param first The beginning of the ordered sequence.
|
|
284
|
+
* \param last The end of the ordered sequence.
|
|
285
|
+
* \param value The value to be searched.
|
|
286
|
+
* \return The furthermost iterator \c i, such that <tt>value < *i</tt> is \c false.
|
|
287
|
+
*
|
|
288
|
+
* \tparam DerivedPolicy The name of the derived execution policy.
|
|
289
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
290
|
+
* Iterator</a>. \tparam LessThanComparable is a model of <a
|
|
291
|
+
* href="https://en.cppreference.com/w/cpp/named_req/LessThanComparable">LessThanComparable</a>.
|
|
292
|
+
*
|
|
293
|
+
* The following code snippet demonstrates how to use \p upper_bound
|
|
294
|
+
* to search for values in a ordered range using the \p thrust::device execution policy for parallelism:
|
|
295
|
+
*
|
|
296
|
+
* \code
|
|
297
|
+
* #include <thrust/binary_search.h>
|
|
298
|
+
* #include <thrust/device_vector.h>
|
|
299
|
+
* #include <thrust/execution_policy.h>
|
|
300
|
+
* ...
|
|
301
|
+
* thrust::device_vector<int> input(5);
|
|
302
|
+
*
|
|
303
|
+
* input[0] = 0;
|
|
304
|
+
* input[1] = 2;
|
|
305
|
+
* input[2] = 5;
|
|
306
|
+
* input[3] = 7;
|
|
307
|
+
* input[4] = 8;
|
|
308
|
+
*
|
|
309
|
+
* thrust::upper_bound(thrust::device, input.begin(), input.end(), 0); // returns input.begin() + 1
|
|
310
|
+
* thrust::upper_bound(thrust::device, input.begin(), input.end(), 1); // returns input.begin() + 1
|
|
311
|
+
* thrust::upper_bound(thrust::device, input.begin(), input.end(), 2); // returns input.begin() + 2
|
|
312
|
+
* thrust::upper_bound(thrust::device, input.begin(), input.end(), 3); // returns input.begin() + 2
|
|
313
|
+
* thrust::upper_bound(thrust::device, input.begin(), input.end(), 8); // returns input.end()
|
|
314
|
+
* thrust::upper_bound(thrust::device, input.begin(), input.end(), 9); // returns input.end()
|
|
315
|
+
* \endcode
|
|
316
|
+
*
|
|
317
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/upper_bound
|
|
318
|
+
* \see \p lower_bound
|
|
319
|
+
* \see \p equal_range
|
|
320
|
+
* \see \p binary_search
|
|
321
|
+
*/
|
|
322
|
+
template <typename DerivedPolicy, typename ForwardIterator, typename LessThanComparable>
|
|
323
|
+
_CCCL_HOST_DEVICE ForwardIterator upper_bound(
|
|
324
|
+
const thrust::detail::execution_policy_base<DerivedPolicy>& exec,
|
|
325
|
+
ForwardIterator first,
|
|
326
|
+
ForwardIterator last,
|
|
327
|
+
const LessThanComparable& value);
|
|
328
|
+
|
|
329
|
+
/*! \p upper_bound is a version of binary search: it attempts to find
|
|
330
|
+
* the element value in an ordered range <tt>[first, last)</tt>.
|
|
331
|
+
* Specifically, it returns the last position where value could be
|
|
332
|
+
* inserted without violating the ordering. This version of
|
|
333
|
+
* \p upper_bound uses <tt>operator<</tt> for comparison and returns
|
|
334
|
+
* the furthermost iterator \c i in <tt>[first, last)</tt> such that,
|
|
335
|
+
* for every iterator \c j in <tt>[first, i)</tt>, <tt>value < *j</tt>
|
|
336
|
+
* is \c false.
|
|
337
|
+
*
|
|
338
|
+
* \param first The beginning of the ordered sequence.
|
|
339
|
+
* \param last The end of the ordered sequence.
|
|
340
|
+
* \param value The value to be searched.
|
|
341
|
+
* \return The furthermost iterator \c i, such that <tt>value < *i</tt> is \c false.
|
|
342
|
+
*
|
|
343
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
344
|
+
* Iterator</a>. \tparam LessThanComparable is a model of <a
|
|
345
|
+
* href="https://en.cppreference.com/w/cpp/named_req/LessThanComparable">LessThanComparable</a>.
|
|
346
|
+
*
|
|
347
|
+
* The following code snippet demonstrates how to use \p upper_bound
|
|
348
|
+
* to search for values in a ordered range.
|
|
349
|
+
*
|
|
350
|
+
* \code
|
|
351
|
+
* #include <thrust/binary_search.h>
|
|
352
|
+
* #include <thrust/device_vector.h>
|
|
353
|
+
* ...
|
|
354
|
+
* thrust::device_vector<int> input(5);
|
|
355
|
+
*
|
|
356
|
+
* input[0] = 0;
|
|
357
|
+
* input[1] = 2;
|
|
358
|
+
* input[2] = 5;
|
|
359
|
+
* input[3] = 7;
|
|
360
|
+
* input[4] = 8;
|
|
361
|
+
*
|
|
362
|
+
* thrust::upper_bound(input.begin(), input.end(), 0); // returns input.begin() + 1
|
|
363
|
+
* thrust::upper_bound(input.begin(), input.end(), 1); // returns input.begin() + 1
|
|
364
|
+
* thrust::upper_bound(input.begin(), input.end(), 2); // returns input.begin() + 2
|
|
365
|
+
* thrust::upper_bound(input.begin(), input.end(), 3); // returns input.begin() + 2
|
|
366
|
+
* thrust::upper_bound(input.begin(), input.end(), 8); // returns input.end()
|
|
367
|
+
* thrust::upper_bound(input.begin(), input.end(), 9); // returns input.end()
|
|
368
|
+
* \endcode
|
|
369
|
+
*
|
|
370
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/upper_bound
|
|
371
|
+
* \see \p lower_bound
|
|
372
|
+
* \see \p equal_range
|
|
373
|
+
* \see \p binary_search
|
|
374
|
+
*/
|
|
375
|
+
template <class ForwardIterator, class LessThanComparable>
|
|
376
|
+
ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, const LessThanComparable& value);
|
|
377
|
+
|
|
378
|
+
/*! \p upper_bound is a version of binary search: it attempts to find
|
|
379
|
+
* the element value in an ordered range <tt>[first, last)</tt>.
|
|
380
|
+
* Specifically, it returns the last position where value could be
|
|
381
|
+
* inserted without violating the ordering. This version of
|
|
382
|
+
* \p upper_bound uses function object \c comp for comparison and returns
|
|
383
|
+
* the furthermost iterator \c i in <tt>[first, last)</tt> such that,
|
|
384
|
+
* for every iterator \c j in <tt>[first, i)</tt>, <tt>comp(value, *j)</tt>
|
|
385
|
+
* is \c false.
|
|
386
|
+
*
|
|
387
|
+
* The algorithm's execution is parallelized as determined by \p exec.
|
|
388
|
+
*
|
|
389
|
+
* \param exec The execution policy to use for parallelization.
|
|
390
|
+
* \param first The beginning of the ordered sequence.
|
|
391
|
+
* \param last The end of the ordered sequence.
|
|
392
|
+
* \param value The value to be searched.
|
|
393
|
+
* \param comp The comparison operator.
|
|
394
|
+
* \return The furthermost iterator \c i, such that <tt>comp(value, *i)</tt> is \c false.
|
|
395
|
+
*
|
|
396
|
+
* \tparam DerivedPolicy The name of the derived execution policy.
|
|
397
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
398
|
+
* Iterator</a>. \tparam T is comparable to \p ForwardIterator's \c value_type. \tparam StrictWeakOrdering is a model of
|
|
399
|
+
* <a href="https://en.cppreference.com/w/cpp/concepts/strict_weak_order">Strict Weak Ordering</a>.
|
|
400
|
+
*
|
|
401
|
+
* The following code snippet demonstrates how to use \p upper_bound
|
|
402
|
+
* to search for values in a ordered range using the \p thrust::device execution policy for parallelization:
|
|
403
|
+
*
|
|
404
|
+
* \code
|
|
405
|
+
* #include <thrust/binary_search.h>
|
|
406
|
+
* #include <thrust/device_vector.h>
|
|
407
|
+
* #include <thrust/functional.h>
|
|
408
|
+
* #include <thrust/execution_policy.h>
|
|
409
|
+
* ...
|
|
410
|
+
* thrust::device_vector<int> input(5);
|
|
411
|
+
*
|
|
412
|
+
* input[0] = 0;
|
|
413
|
+
* input[1] = 2;
|
|
414
|
+
* input[2] = 5;
|
|
415
|
+
* input[3] = 7;
|
|
416
|
+
* input[4] = 8;
|
|
417
|
+
*
|
|
418
|
+
* using ::cuda::std::less;
|
|
419
|
+
*
|
|
420
|
+
* thrust::upper_bound(thrust::device, input.begin(), input.end(), 0, less<int>()); // returns input.begin() + 1
|
|
421
|
+
* thrust::upper_bound(thrust::device, input.begin(), input.end(), 1, less<int>()); // returns input.begin() + 1
|
|
422
|
+
* thrust::upper_bound(thrust::device, input.begin(), input.end(), 2, less<int>()); // returns input.begin() + 2
|
|
423
|
+
* thrust::upper_bound(thrust::device, input.begin(), input.end(), 3, less<int>()); // returns input.begin() + 2
|
|
424
|
+
* thrust::upper_bound(thrust::device, input.begin(), input.end(), 8, less<int>()); // returns input.end()
|
|
425
|
+
* thrust::upper_bound(thrust::device, input.begin(), input.end(), 9, less<int>()); // returns input.end()
|
|
426
|
+
* \endcode
|
|
427
|
+
*
|
|
428
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/upper_bound
|
|
429
|
+
* \see \p lower_bound
|
|
430
|
+
* \see \p equal_range
|
|
431
|
+
* \see \p binary_search
|
|
432
|
+
*/
|
|
433
|
+
template <typename DerivedPolicy, typename ForwardIterator, typename T, typename StrictWeakOrdering>
|
|
434
|
+
_CCCL_HOST_DEVICE ForwardIterator upper_bound(
|
|
435
|
+
const thrust::detail::execution_policy_base<DerivedPolicy>& exec,
|
|
436
|
+
ForwardIterator first,
|
|
437
|
+
ForwardIterator last,
|
|
438
|
+
const T& value,
|
|
439
|
+
StrictWeakOrdering comp);
|
|
440
|
+
|
|
441
|
+
/*! \p upper_bound is a version of binary search: it attempts to find
|
|
442
|
+
* the element value in an ordered range <tt>[first, last)</tt>.
|
|
443
|
+
* Specifically, it returns the last position where value could be
|
|
444
|
+
* inserted without violating the ordering. This version of
|
|
445
|
+
* \p upper_bound uses function object \c comp for comparison and returns
|
|
446
|
+
* the furthermost iterator \c i in <tt>[first, last)</tt> such that,
|
|
447
|
+
* for every iterator \c j in <tt>[first, i)</tt>, <tt>comp(value, *j)</tt>
|
|
448
|
+
* is \c false.
|
|
449
|
+
*
|
|
450
|
+
* \param first The beginning of the ordered sequence.
|
|
451
|
+
* \param last The end of the ordered sequence.
|
|
452
|
+
* \param value The value to be searched.
|
|
453
|
+
* \param comp The comparison operator.
|
|
454
|
+
* \return The furthermost iterator \c i, such that <tt>comp(value, *i)</tt> is \c false.
|
|
455
|
+
*
|
|
456
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
457
|
+
* Iterator</a>. \tparam T is comparable to \p ForwardIterator's \c value_type. \tparam StrictWeakOrdering is a model of
|
|
458
|
+
* <a href="https://en.cppreference.com/w/cpp/concepts/strict_weak_order">Strict Weak Ordering</a>.
|
|
459
|
+
*
|
|
460
|
+
* The following code snippet demonstrates how to use \p upper_bound
|
|
461
|
+
* to search for values in a ordered range.
|
|
462
|
+
*
|
|
463
|
+
* \code
|
|
464
|
+
* #include <thrust/binary_search.h>
|
|
465
|
+
* #include <thrust/device_vector.h>
|
|
466
|
+
* #include <thrust/functional.h>
|
|
467
|
+
* ...
|
|
468
|
+
* thrust::device_vector<int> input(5);
|
|
469
|
+
*
|
|
470
|
+
* input[0] = 0;
|
|
471
|
+
* input[1] = 2;
|
|
472
|
+
* input[2] = 5;
|
|
473
|
+
* input[3] = 7;
|
|
474
|
+
* input[4] = 8;
|
|
475
|
+
*
|
|
476
|
+
* using ::cuda::std::less;
|
|
477
|
+
*
|
|
478
|
+
* thrust::upper_bound(input.begin(), input.end(), 0, less<int>()); // returns input.begin() + 1
|
|
479
|
+
* thrust::upper_bound(input.begin(), input.end(), 1, less<int>()); // returns input.begin() + 1
|
|
480
|
+
* thrust::upper_bound(input.begin(), input.end(), 2, less<int>()); // returns input.begin() + 2
|
|
481
|
+
* thrust::upper_bound(input.begin(), input.end(), 3, less<int>()); // returns input.begin() + 2
|
|
482
|
+
* thrust::upper_bound(input.begin(), input.end(), 8, less<int>()); // returns input.end()
|
|
483
|
+
* thrust::upper_bound(input.begin(), input.end(), 9, less<int>()); // returns input.end()
|
|
484
|
+
* \endcode
|
|
485
|
+
*
|
|
486
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/upper_bound
|
|
487
|
+
* \see \p lower_bound
|
|
488
|
+
* \see \p equal_range
|
|
489
|
+
* \see \p binary_search
|
|
490
|
+
*/
|
|
491
|
+
template <class ForwardIterator, class T, class StrictWeakOrdering>
|
|
492
|
+
ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, const T& value, StrictWeakOrdering comp);
|
|
493
|
+
|
|
494
|
+
/*! \p binary_search is a version of binary search: it attempts to find
|
|
495
|
+
* the element value in an ordered range <tt>[first, last)</tt>.
|
|
496
|
+
* It returns \c true if an element that is equivalent to \c value
|
|
497
|
+
* is present in <tt>[first, last)</tt> and \c false if no such element
|
|
498
|
+
* exists. Specifically, this version returns \c true if and only if
|
|
499
|
+
* there exists an iterator \c i in <tt>[first, last)</tt> such that
|
|
500
|
+
* <tt>*i < value</tt> and <tt>value < *i</tt> are both \c false.
|
|
501
|
+
*
|
|
502
|
+
* The algorithm's execution is parallelized as determined by \p exec.
|
|
503
|
+
*
|
|
504
|
+
* \param exec The execution policy to use for parallelization.
|
|
505
|
+
* \param first The beginning of the ordered sequence.
|
|
506
|
+
* \param last The end of the ordered sequence.
|
|
507
|
+
* \param value The value to be searched.
|
|
508
|
+
* \return \c true if an equivalent element exists in <tt>[first, last)</tt>, otherwise \c false.
|
|
509
|
+
*
|
|
510
|
+
* \tparam DerivedPolicy The name of the derived execution policy.
|
|
511
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
512
|
+
* Iterator</a>. \tparam LessThanComparable is a model of <a
|
|
513
|
+
* href="https://en.cppreference.com/w/cpp/named_req/LessThanComparable">LessThanComparable</a>.
|
|
514
|
+
*
|
|
515
|
+
* The following code snippet demonstrates how to use \p binary_search
|
|
516
|
+
* to search for values in a ordered range using the \p thrust::device execution policy for parallelization:
|
|
517
|
+
*
|
|
518
|
+
* \code
|
|
519
|
+
* #include <thrust/binary_search.h>
|
|
520
|
+
* #include <thrust/device_vector.h>
|
|
521
|
+
* #include <thrust/execution_policy.h>
|
|
522
|
+
* ...
|
|
523
|
+
* thrust::device_vector<int> input(5);
|
|
524
|
+
*
|
|
525
|
+
* input[0] = 0;
|
|
526
|
+
* input[1] = 2;
|
|
527
|
+
* input[2] = 5;
|
|
528
|
+
* input[3] = 7;
|
|
529
|
+
* input[4] = 8;
|
|
530
|
+
*
|
|
531
|
+
* thrust::binary_search(thrust::device, input.begin(), input.end(), 0); // returns true
|
|
532
|
+
* thrust::binary_search(thrust::device, input.begin(), input.end(), 1); // returns false
|
|
533
|
+
* thrust::binary_search(thrust::device, input.begin(), input.end(), 2); // returns true
|
|
534
|
+
* thrust::binary_search(thrust::device, input.begin(), input.end(), 3); // returns false
|
|
535
|
+
* thrust::binary_search(thrust::device, input.begin(), input.end(), 8); // returns true
|
|
536
|
+
* thrust::binary_search(thrust::device, input.begin(), input.end(), 9); // returns false
|
|
537
|
+
* \endcode
|
|
538
|
+
*
|
|
539
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/binary_search
|
|
540
|
+
* \see \p lower_bound
|
|
541
|
+
* \see \p upper_bound
|
|
542
|
+
* \see \p equal_range
|
|
543
|
+
*/
|
|
544
|
+
template <typename DerivedPolicy, typename ForwardIterator, typename LessThanComparable>
|
|
545
|
+
_CCCL_HOST_DEVICE bool binary_search(
|
|
546
|
+
const thrust::detail::execution_policy_base<DerivedPolicy>& exec,
|
|
547
|
+
ForwardIterator first,
|
|
548
|
+
ForwardIterator last,
|
|
549
|
+
const LessThanComparable& value);
|
|
550
|
+
|
|
551
|
+
/*! \p binary_search is a version of binary search: it attempts to find
|
|
552
|
+
* the element value in an ordered range <tt>[first, last)</tt>.
|
|
553
|
+
* It returns \c true if an element that is equivalent to \c value
|
|
554
|
+
* is present in <tt>[first, last)</tt> and \c false if no such element
|
|
555
|
+
* exists. Specifically, this version returns \c true if and only if
|
|
556
|
+
* there exists an iterator \c i in <tt>[first, last)</tt> such that
|
|
557
|
+
* <tt>*i < value</tt> and <tt>value < *i</tt> are both \c false.
|
|
558
|
+
*
|
|
559
|
+
* \param first The beginning of the ordered sequence.
|
|
560
|
+
* \param last The end of the ordered sequence.
|
|
561
|
+
* \param value The value to be searched.
|
|
562
|
+
* \return \c true if an equivalent element exists in <tt>[first, last)</tt>, otherwise \c false.
|
|
563
|
+
*
|
|
564
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
565
|
+
* Iterator</a>. \tparam LessThanComparable is a model of <a
|
|
566
|
+
* href="https://en.cppreference.com/w/cpp/named_req/LessThanComparable">LessThanComparable</a>.
|
|
567
|
+
*
|
|
568
|
+
* The following code snippet demonstrates how to use \p binary_search
|
|
569
|
+
* to search for values in a ordered range.
|
|
570
|
+
*
|
|
571
|
+
* \code
|
|
572
|
+
* #include <thrust/binary_search.h>
|
|
573
|
+
* #include <thrust/device_vector.h>
|
|
574
|
+
* ...
|
|
575
|
+
* thrust::device_vector<int> input(5);
|
|
576
|
+
*
|
|
577
|
+
* input[0] = 0;
|
|
578
|
+
* input[1] = 2;
|
|
579
|
+
* input[2] = 5;
|
|
580
|
+
* input[3] = 7;
|
|
581
|
+
* input[4] = 8;
|
|
582
|
+
*
|
|
583
|
+
* thrust::binary_search(input.begin(), input.end(), 0); // returns true
|
|
584
|
+
* thrust::binary_search(input.begin(), input.end(), 1); // returns false
|
|
585
|
+
* thrust::binary_search(input.begin(), input.end(), 2); // returns true
|
|
586
|
+
* thrust::binary_search(input.begin(), input.end(), 3); // returns false
|
|
587
|
+
* thrust::binary_search(input.begin(), input.end(), 8); // returns true
|
|
588
|
+
* thrust::binary_search(input.begin(), input.end(), 9); // returns false
|
|
589
|
+
* \endcode
|
|
590
|
+
*
|
|
591
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/binary_search
|
|
592
|
+
* \see \p lower_bound
|
|
593
|
+
* \see \p upper_bound
|
|
594
|
+
* \see \p equal_range
|
|
595
|
+
*/
|
|
596
|
+
template <class ForwardIterator, class LessThanComparable>
|
|
597
|
+
bool binary_search(ForwardIterator first, ForwardIterator last, const LessThanComparable& value);
|
|
598
|
+
|
|
599
|
+
/*! \p binary_search is a version of binary search: it attempts to find
|
|
600
|
+
* the element value in an ordered range <tt>[first, last)</tt>.
|
|
601
|
+
* It returns \c true if an element that is equivalent to \c value
|
|
602
|
+
* is present in <tt>[first, last)</tt> and \c false if no such element
|
|
603
|
+
* exists. Specifically, this version returns \c true if and only if
|
|
604
|
+
* there exists an iterator \c i in <tt>[first, last)</tt> such that
|
|
605
|
+
* <tt>comp(*i, value)</tt> and <tt>comp(value, *i)</tt> are both \c false.
|
|
606
|
+
*
|
|
607
|
+
* The algorithm's execution is parallelized as determined by \p exec.
|
|
608
|
+
*
|
|
609
|
+
* \param exec The execution policy to use for parallelization.
|
|
610
|
+
* \param first The beginning of the ordered sequence.
|
|
611
|
+
* \param last The end of the ordered sequence.
|
|
612
|
+
* \param value The value to be searched.
|
|
613
|
+
* \param comp The comparison operator.
|
|
614
|
+
* \return \c true if an equivalent element exists in <tt>[first, last)</tt>, otherwise \c false.
|
|
615
|
+
*
|
|
616
|
+
* \tparam DerivedPolicy The name of the derived execution policy.
|
|
617
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
618
|
+
* Iterator</a>. \tparam T is comparable to \p ForwardIterator's \c value_type. \tparam StrictWeakOrdering is a model of
|
|
619
|
+
* <a href="https://en.cppreference.com/w/cpp/concepts/strict_weak_order">Strict Weak Ordering</a>.
|
|
620
|
+
*
|
|
621
|
+
* The following code snippet demonstrates how to use \p binary_search
|
|
622
|
+
* to search for values in a ordered range using the \p thrust::device execution policy for parallelization:
|
|
623
|
+
*
|
|
624
|
+
* \code
|
|
625
|
+
* #include <thrust/binary_search.h>
|
|
626
|
+
* #include <thrust/device_vector.h>
|
|
627
|
+
* #include <thrust/functional.h>
|
|
628
|
+
* #include <thrust/execution_policy.h>
|
|
629
|
+
* ...
|
|
630
|
+
* thrust::device_vector<int> input(5);
|
|
631
|
+
*
|
|
632
|
+
* input[0] = 0;
|
|
633
|
+
* input[1] = 2;
|
|
634
|
+
* input[2] = 5;
|
|
635
|
+
* input[3] = 7;
|
|
636
|
+
* input[4] = 8;
|
|
637
|
+
*
|
|
638
|
+
* using ::cuda::std::less;
|
|
639
|
+
*
|
|
640
|
+
* thrust::binary_search(thrust::device, input.begin(), input.end(), 0, less<int>()); // returns true
|
|
641
|
+
* thrust::binary_search(thrust::device, input.begin(), input.end(), 1, less<int>()); // returns false
|
|
642
|
+
* thrust::binary_search(thrust::device, input.begin(), input.end(), 2, less<int>()); // returns true
|
|
643
|
+
* thrust::binary_search(thrust::device, input.begin(), input.end(), 3, less<int>()); // returns false
|
|
644
|
+
* thrust::binary_search(thrust::device, input.begin(), input.end(), 8, less<int>()); // returns true
|
|
645
|
+
* thrust::binary_search(thrust::device, input.begin(), input.end(), 9, less<int>()); // returns false
|
|
646
|
+
* \endcode
|
|
647
|
+
*
|
|
648
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/binary_search
|
|
649
|
+
* \see \p lower_bound
|
|
650
|
+
* \see \p upper_bound
|
|
651
|
+
* \see \p equal_range
|
|
652
|
+
*/
|
|
653
|
+
template <typename DerivedPolicy, typename ForwardIterator, typename T, typename StrictWeakOrdering>
|
|
654
|
+
_CCCL_HOST_DEVICE bool binary_search(
|
|
655
|
+
const thrust::detail::execution_policy_base<DerivedPolicy>& exec,
|
|
656
|
+
ForwardIterator first,
|
|
657
|
+
ForwardIterator last,
|
|
658
|
+
const T& value,
|
|
659
|
+
StrictWeakOrdering comp);
|
|
660
|
+
|
|
661
|
+
/*! \p binary_search is a version of binary search: it attempts to find
|
|
662
|
+
* the element value in an ordered range <tt>[first, last)</tt>.
|
|
663
|
+
* It returns \c true if an element that is equivalent to \c value
|
|
664
|
+
* is present in <tt>[first, last)</tt> and \c false if no such element
|
|
665
|
+
* exists. Specifically, this version returns \c true if and only if
|
|
666
|
+
* there exists an iterator \c i in <tt>[first, last)</tt> such that
|
|
667
|
+
* <tt>comp(*i, value)</tt> and <tt>comp(value, *i)</tt> are both \c false.
|
|
668
|
+
*
|
|
669
|
+
* \param first The beginning of the ordered sequence.
|
|
670
|
+
* \param last The end of the ordered sequence.
|
|
671
|
+
* \param value The value to be searched.
|
|
672
|
+
* \param comp The comparison operator.
|
|
673
|
+
* \return \c true if an equivalent element exists in <tt>[first, last)</tt>, otherwise \c false.
|
|
674
|
+
*
|
|
675
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
676
|
+
* Iterator</a>. \tparam T is comparable to \p ForwardIterator's \c value_type. \tparam StrictWeakOrdering is a model of
|
|
677
|
+
* <a href="https://en.cppreference.com/w/cpp/concepts/strict_weak_order">Strict Weak Ordering</a>.
|
|
678
|
+
*
|
|
679
|
+
* The following code snippet demonstrates how to use \p binary_search
|
|
680
|
+
* to search for values in a ordered range.
|
|
681
|
+
*
|
|
682
|
+
* \code
|
|
683
|
+
* #include <thrust/binary_search.h>
|
|
684
|
+
* #include <thrust/device_vector.h>
|
|
685
|
+
* #include <thrust/functional.h>
|
|
686
|
+
* ...
|
|
687
|
+
* thrust::device_vector<int> input(5);
|
|
688
|
+
*
|
|
689
|
+
* input[0] = 0;
|
|
690
|
+
* input[1] = 2;
|
|
691
|
+
* input[2] = 5;
|
|
692
|
+
* input[3] = 7;
|
|
693
|
+
* input[4] = 8;
|
|
694
|
+
*
|
|
695
|
+
* using ::cuda::std::less;
|
|
696
|
+
*
|
|
697
|
+
* thrust::binary_search(input.begin(), input.end(), 0, less<int>()); // returns true
|
|
698
|
+
* thrust::binary_search(input.begin(), input.end(), 1, less<int>()); // returns false
|
|
699
|
+
* thrust::binary_search(input.begin(), input.end(), 2, less<int>()); // returns true
|
|
700
|
+
* thrust::binary_search(input.begin(), input.end(), 3, less<int>()); // returns false
|
|
701
|
+
* thrust::binary_search(input.begin(), input.end(), 8, less<int>()); // returns true
|
|
702
|
+
* thrust::binary_search(input.begin(), input.end(), 9, less<int>()); // returns false
|
|
703
|
+
* \endcode
|
|
704
|
+
*
|
|
705
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/binary_search
|
|
706
|
+
* \see \p lower_bound
|
|
707
|
+
* \see \p upper_bound
|
|
708
|
+
* \see \p equal_range
|
|
709
|
+
*/
|
|
710
|
+
template <class ForwardIterator, class T, class StrictWeakOrdering>
|
|
711
|
+
bool binary_search(ForwardIterator first, ForwardIterator last, const T& value, StrictWeakOrdering comp);
|
|
712
|
+
|
|
713
|
+
/*! \p equal_range is a version of binary search: it attempts to find
|
|
714
|
+
* the element value in an ordered range <tt>[first, last)</tt>. The
|
|
715
|
+
* value returned by \p equal_range is essentially a combination of
|
|
716
|
+
* the values returned by \p lower_bound and \p upper_bound: it returns
|
|
717
|
+
* a \p pair of iterators \c i and \c j such that \c i is the first
|
|
718
|
+
* position where value could be inserted without violating the
|
|
719
|
+
* ordering and \c j is the last position where value could be inserted
|
|
720
|
+
* without violating the ordering. It follows that every element in the
|
|
721
|
+
* range <tt>[i, j)</tt> is equivalent to value, and that
|
|
722
|
+
* <tt>[i, j)</tt> is the largest subrange of <tt>[first, last)</tt> that
|
|
723
|
+
* has this property.
|
|
724
|
+
*
|
|
725
|
+
* This version of \p equal_range returns a \p pair of iterators
|
|
726
|
+
* <tt>[i, j)</tt>, where \c i is the furthermost iterator in
|
|
727
|
+
* <tt>[first, last)</tt> such that, for every iterator \c k in
|
|
728
|
+
* <tt>[first, i)</tt>, <tt>*k < value</tt>. \c j is the furthermost
|
|
729
|
+
* iterator in <tt>[first, last)</tt> such that, for every iterator
|
|
730
|
+
* \c k in <tt>[first, j)</tt>, <tt>value < *k</tt> is \c false.
|
|
731
|
+
* For every iterator \c k in <tt>[i, j)</tt>, neither
|
|
732
|
+
* <tt>value < *k</tt> nor <tt>*k < value</tt> is \c true.
|
|
733
|
+
*
|
|
734
|
+
* The algorithm's execution is parallelized as determined by \p exec.
|
|
735
|
+
*
|
|
736
|
+
* \param exec The execution policy to use for parallelization.
|
|
737
|
+
* \param first The beginning of the ordered sequence.
|
|
738
|
+
* \param last The end of the ordered sequence.
|
|
739
|
+
* \param value The value to be searched.
|
|
740
|
+
* \return A \p pair of iterators <tt>[i, j)</tt> that define the range of equivalent elements.
|
|
741
|
+
*
|
|
742
|
+
* \tparam DerivedPolicy The name of the derived execution policy.
|
|
743
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
744
|
+
* Iterator</a>. \tparam LessThanComparable is a model of <a
|
|
745
|
+
* href="https://en.cppreference.com/w/cpp/named_req/LessThanComparable">LessThanComparable</a>.
|
|
746
|
+
*
|
|
747
|
+
* The following code snippet demonstrates how to use \p equal_range
|
|
748
|
+
* to search for values in a ordered range using the \p thrust::device execution policy for parallelization:
|
|
749
|
+
*
|
|
750
|
+
* \code
|
|
751
|
+
* #include <thrust/binary_search.h>
|
|
752
|
+
* #include <thrust/device_vector.h>
|
|
753
|
+
* #include <thrust/execution_policy.h>
|
|
754
|
+
* ...
|
|
755
|
+
* thrust::device_vector<int> input(5);
|
|
756
|
+
*
|
|
757
|
+
* input[0] = 0;
|
|
758
|
+
* input[1] = 2;
|
|
759
|
+
* input[2] = 5;
|
|
760
|
+
* input[3] = 7;
|
|
761
|
+
* input[4] = 8;
|
|
762
|
+
*
|
|
763
|
+
* thrust::equal_range(thrust::device, input.begin(), input.end(), 0); // returns [input.begin(), input.begin() + 1)
|
|
764
|
+
* thrust::equal_range(thrust::device, input.begin(), input.end(), 1); // returns [input.begin() + 1, input.begin() +
|
|
765
|
+
* 1) thrust::equal_range(thrust::device, input.begin(), input.end(), 2); // returns [input.begin() + 1, input.begin() +
|
|
766
|
+
* 2) thrust::equal_range(thrust::device, input.begin(), input.end(), 3); // returns [input.begin() + 2, input.begin() +
|
|
767
|
+
* 2) thrust::equal_range(thrust::device, input.begin(), input.end(), 8); // returns [input.begin() + 4, input.end())
|
|
768
|
+
* thrust::equal_range(thrust::device, input.begin(), input.end(), 9); // returns [input.end(), input.end())
|
|
769
|
+
* \endcode
|
|
770
|
+
*
|
|
771
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/equal_range
|
|
772
|
+
* \see \p lower_bound
|
|
773
|
+
* \see \p upper_bound
|
|
774
|
+
* \see \p binary_search
|
|
775
|
+
*/
|
|
776
|
+
template <typename DerivedPolicy, typename ForwardIterator, typename LessThanComparable>
|
|
777
|
+
_CCCL_HOST_DEVICE thrust::pair<ForwardIterator, ForwardIterator> equal_range(
|
|
778
|
+
const thrust::detail::execution_policy_base<DerivedPolicy>& exec,
|
|
779
|
+
ForwardIterator first,
|
|
780
|
+
ForwardIterator last,
|
|
781
|
+
const LessThanComparable& value);
|
|
782
|
+
|
|
783
|
+
/*! \p equal_range is a version of binary search: it attempts to find
|
|
784
|
+
* the element value in an ordered range <tt>[first, last)</tt>. The
|
|
785
|
+
* value returned by \p equal_range is essentially a combination of
|
|
786
|
+
* the values returned by \p lower_bound and \p upper_bound: it returns
|
|
787
|
+
* a \p pair of iterators \c i and \c j such that \c i is the first
|
|
788
|
+
* position where value could be inserted without violating the
|
|
789
|
+
* ordering and \c j is the last position where value could be inserted
|
|
790
|
+
* without violating the ordering. It follows that every element in the
|
|
791
|
+
* range <tt>[i, j)</tt> is equivalent to value, and that
|
|
792
|
+
* <tt>[i, j)</tt> is the largest subrange of <tt>[first, last)</tt> that
|
|
793
|
+
* has this property.
|
|
794
|
+
*
|
|
795
|
+
* This version of \p equal_range returns a \p pair of iterators
|
|
796
|
+
* <tt>[i, j)</tt>, where \c i is the furthermost iterator in
|
|
797
|
+
* <tt>[first, last)</tt> such that, for every iterator \c k in
|
|
798
|
+
* <tt>[first, i)</tt>, <tt>*k < value</tt>. \c j is the furthermost
|
|
799
|
+
* iterator in <tt>[first, last)</tt> such that, for every iterator
|
|
800
|
+
* \c k in <tt>[first, j)</tt>, <tt>value < *k</tt> is \c false.
|
|
801
|
+
* For every iterator \c k in <tt>[i, j)</tt>, neither
|
|
802
|
+
* <tt>value < *k</tt> nor <tt>*k < value</tt> is \c true.
|
|
803
|
+
*
|
|
804
|
+
* \param first The beginning of the ordered sequence.
|
|
805
|
+
* \param last The end of the ordered sequence.
|
|
806
|
+
* \param value The value to be searched.
|
|
807
|
+
* \return A \p pair of iterators <tt>[i, j)</tt> that define the range of equivalent elements.
|
|
808
|
+
*
|
|
809
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
810
|
+
* Iterator</a>. \tparam LessThanComparable is a model of <a
|
|
811
|
+
* href="https://en.cppreference.com/w/cpp/named_req/LessThanComparable">LessThanComparable</a>.
|
|
812
|
+
*
|
|
813
|
+
* The following code snippet demonstrates how to use \p equal_range
|
|
814
|
+
* to search for values in a ordered range.
|
|
815
|
+
*
|
|
816
|
+
* \code
|
|
817
|
+
* #include <thrust/binary_search.h>
|
|
818
|
+
* #include <thrust/device_vector.h>
|
|
819
|
+
* ...
|
|
820
|
+
* thrust::device_vector<int> input(5);
|
|
821
|
+
*
|
|
822
|
+
* input[0] = 0;
|
|
823
|
+
* input[1] = 2;
|
|
824
|
+
* input[2] = 5;
|
|
825
|
+
* input[3] = 7;
|
|
826
|
+
* input[4] = 8;
|
|
827
|
+
*
|
|
828
|
+
* thrust::equal_range(input.begin(), input.end(), 0); // returns [input.begin(), input.begin() + 1)
|
|
829
|
+
* thrust::equal_range(input.begin(), input.end(), 1); // returns [input.begin() + 1, input.begin() + 1)
|
|
830
|
+
* thrust::equal_range(input.begin(), input.end(), 2); // returns [input.begin() + 1, input.begin() + 2)
|
|
831
|
+
* thrust::equal_range(input.begin(), input.end(), 3); // returns [input.begin() + 2, input.begin() + 2)
|
|
832
|
+
* thrust::equal_range(input.begin(), input.end(), 8); // returns [input.begin() + 4, input.end())
|
|
833
|
+
* thrust::equal_range(input.begin(), input.end(), 9); // returns [input.end(), input.end())
|
|
834
|
+
* \endcode
|
|
835
|
+
*
|
|
836
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/equal_range
|
|
837
|
+
* \see \p lower_bound
|
|
838
|
+
* \see \p upper_bound
|
|
839
|
+
* \see \p binary_search
|
|
840
|
+
*/
|
|
841
|
+
template <class ForwardIterator, class LessThanComparable>
|
|
842
|
+
thrust::pair<ForwardIterator, ForwardIterator>
|
|
843
|
+
equal_range(ForwardIterator first, ForwardIterator last, const LessThanComparable& value);
|
|
844
|
+
|
|
845
|
+
/*! \p equal_range is a version of binary search: it attempts to find
|
|
846
|
+
* the element value in an ordered range <tt>[first, last)</tt>. The
|
|
847
|
+
* value returned by \p equal_range is essentially a combination of
|
|
848
|
+
* the values returned by \p lower_bound and \p upper_bound: it returns
|
|
849
|
+
* a \p pair of iterators \c i and \c j such that \c i is the first
|
|
850
|
+
* position where value could be inserted without violating the
|
|
851
|
+
* ordering and \c j is the last position where value could be inserted
|
|
852
|
+
* without violating the ordering. It follows that every element in the
|
|
853
|
+
* range <tt>[i, j)</tt> is equivalent to value, and that
|
|
854
|
+
* <tt>[i, j)</tt> is the largest subrange of <tt>[first, last)</tt> that
|
|
855
|
+
* has this property.
|
|
856
|
+
*
|
|
857
|
+
* This version of \p equal_range returns a \p pair of iterators
|
|
858
|
+
* <tt>[i, j)</tt>. \c i is the furthermost iterator in
|
|
859
|
+
* <tt>[first, last)</tt> such that, for every iterator \c k in
|
|
860
|
+
* <tt>[first, i)</tt>, <tt>comp(*k, value)</tt> is \c true.
|
|
861
|
+
* \c j is the furthermost iterator in <tt>[first, last)</tt> such
|
|
862
|
+
* that, for every iterator \c k in <tt>[first, last)</tt>,
|
|
863
|
+
* <tt>comp(value, *k)</tt> is \c false. For every iterator \c k
|
|
864
|
+
* in <tt>[i, j)</tt>, neither <tt>comp(value, *k)</tt> nor
|
|
865
|
+
* <tt>comp(*k, value)</tt> is \c true.
|
|
866
|
+
*
|
|
867
|
+
* The algorithm's execution is parallelized as determined by \p exec.
|
|
868
|
+
*
|
|
869
|
+
* \param exec The execution policy to use for parallelization.
|
|
870
|
+
* \param first The beginning of the ordered sequence.
|
|
871
|
+
* \param last The end of the ordered sequence.
|
|
872
|
+
* \param value The value to be searched.
|
|
873
|
+
* \param comp The comparison operator.
|
|
874
|
+
* \return A \p pair of iterators <tt>[i, j)</tt> that define the range of equivalent elements.
|
|
875
|
+
*
|
|
876
|
+
* \tparam DerivedPolicy The name of the derived execution policy.
|
|
877
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
878
|
+
* Iterator</a>. \tparam T is comparable to \p ForwardIterator's \c value_type. \tparam StrictWeakOrdering is a model of
|
|
879
|
+
* <a href="https://en.cppreference.com/w/cpp/concepts/strict_weak_order">Strict Weak Ordering</a>.
|
|
880
|
+
*
|
|
881
|
+
* The following code snippet demonstrates how to use \p equal_range
|
|
882
|
+
* to search for values in a ordered range using the \p thrust::device execution policy for parallelization:
|
|
883
|
+
*
|
|
884
|
+
* \code
|
|
885
|
+
* #include <thrust/binary_search.h>
|
|
886
|
+
* #include <thrust/device_vector.h>
|
|
887
|
+
* #include <thrust/functional.h>
|
|
888
|
+
* #include <thrust/execution_policy.h>
|
|
889
|
+
* ...
|
|
890
|
+
* thrust::device_vector<int> input(5);
|
|
891
|
+
*
|
|
892
|
+
* input[0] = 0;
|
|
893
|
+
* input[1] = 2;
|
|
894
|
+
* input[2] = 5;
|
|
895
|
+
* input[3] = 7;
|
|
896
|
+
* input[4] = 8;
|
|
897
|
+
*
|
|
898
|
+
* using ::cuda::std::less;
|
|
899
|
+
*
|
|
900
|
+
* thrust::equal_range(thrust::device, input.begin(), input.end(), 0, less<int>());
|
|
901
|
+
* // returns [input.begin(), input.begin() + 1)
|
|
902
|
+
* thrust::equal_range(thrust::device, input.begin(), input.end(), 1, less<int>());
|
|
903
|
+
* // returns [input.begin() + 1, input.begin() + 1)
|
|
904
|
+
* thrust::equal_range(thrust::device, input.begin(), input.end(), 2, less<int>());
|
|
905
|
+
* // returns [input.begin() + 1, input.begin() + 2)
|
|
906
|
+
* thrust::equal_range(thrust::device, input.begin(), input.end(), 3, less<int>());
|
|
907
|
+
* // returns [input.begin() + 2, input.begin() + 2)
|
|
908
|
+
* thrust::equal_range(thrust::device, input.begin(), input.end(), 8, less<int>());
|
|
909
|
+
* // returns [input.begin() + 4, input.end())
|
|
910
|
+
* thrust::equal_range(thrust::device, input.begin(), input.end(), 9, less<int>());
|
|
911
|
+
* // returns [input.end(), input.end())
|
|
912
|
+
* \endcode
|
|
913
|
+
*
|
|
914
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/equal_range
|
|
915
|
+
* \see \p lower_bound
|
|
916
|
+
* \see \p upper_bound
|
|
917
|
+
* \see \p binary_search
|
|
918
|
+
*/
|
|
919
|
+
template <typename DerivedPolicy, typename ForwardIterator, typename T, typename StrictWeakOrdering>
|
|
920
|
+
_CCCL_HOST_DEVICE thrust::pair<ForwardIterator, ForwardIterator> equal_range(
|
|
921
|
+
const thrust::detail::execution_policy_base<DerivedPolicy>& exec,
|
|
922
|
+
ForwardIterator first,
|
|
923
|
+
ForwardIterator last,
|
|
924
|
+
const T& value,
|
|
925
|
+
StrictWeakOrdering comp);
|
|
926
|
+
|
|
927
|
+
/*! \p equal_range is a version of binary search: it attempts to find
|
|
928
|
+
* the element value in an ordered range <tt>[first, last)</tt>. The
|
|
929
|
+
* value returned by \p equal_range is essentially a combination of
|
|
930
|
+
* the values returned by \p lower_bound and \p upper_bound: it returns
|
|
931
|
+
* a \p pair of iterators \c i and \c j such that \c i is the first
|
|
932
|
+
* position where value could be inserted without violating the
|
|
933
|
+
* ordering and \c j is the last position where value could be inserted
|
|
934
|
+
* without violating the ordering. It follows that every element in the
|
|
935
|
+
* range <tt>[i, j)</tt> is equivalent to value, and that
|
|
936
|
+
* <tt>[i, j)</tt> is the largest subrange of <tt>[first, last)</tt> that
|
|
937
|
+
* has this property.
|
|
938
|
+
*
|
|
939
|
+
* This version of \p equal_range returns a \p pair of iterators
|
|
940
|
+
* <tt>[i, j)</tt>. \c i is the furthermost iterator in
|
|
941
|
+
* <tt>[first, last)</tt> such that, for every iterator \c k in
|
|
942
|
+
* <tt>[first, i)</tt>, <tt>comp(*k, value)</tt> is \c true.
|
|
943
|
+
* \c j is the furthermost iterator in <tt>[first, last)</tt> such
|
|
944
|
+
* that, for every iterator \c k in <tt>[first, last)</tt>,
|
|
945
|
+
* <tt>comp(value, *k)</tt> is \c false. For every iterator \c k
|
|
946
|
+
* in <tt>[i, j)</tt>, neither <tt>comp(value, *k)</tt> nor
|
|
947
|
+
* <tt>comp(*k, value)</tt> is \c true.
|
|
948
|
+
*
|
|
949
|
+
* \param first The beginning of the ordered sequence.
|
|
950
|
+
* \param last The end of the ordered sequence.
|
|
951
|
+
* \param value The value to be searched.
|
|
952
|
+
* \param comp The comparison operator.
|
|
953
|
+
* \return A \p pair of iterators <tt>[i, j)</tt> that define the range of equivalent elements.
|
|
954
|
+
*
|
|
955
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
956
|
+
* Iterator</a>. \tparam T is comparable to \p ForwardIterator's \c value_type. \tparam StrictWeakOrdering is a model of
|
|
957
|
+
* <a href="https://en.cppreference.com/w/cpp/concepts/strict_weak_order">Strict Weak Ordering</a>.
|
|
958
|
+
*
|
|
959
|
+
* The following code snippet demonstrates how to use \p equal_range
|
|
960
|
+
* to search for values in a ordered range.
|
|
961
|
+
*
|
|
962
|
+
* \code
|
|
963
|
+
* #include <thrust/binary_search.h>
|
|
964
|
+
* #include <thrust/device_vector.h>
|
|
965
|
+
* #include <thrust/functional.h>
|
|
966
|
+
* ...
|
|
967
|
+
* thrust::device_vector<int> input(5);
|
|
968
|
+
*
|
|
969
|
+
* input[0] = 0;
|
|
970
|
+
* input[1] = 2;
|
|
971
|
+
* input[2] = 5;
|
|
972
|
+
* input[3] = 7;
|
|
973
|
+
* input[4] = 8;
|
|
974
|
+
*
|
|
975
|
+
* using ::cuda::std::less;
|
|
976
|
+
*
|
|
977
|
+
* thrust::equal_range(input.begin(), input.end(), 0, less<int>());
|
|
978
|
+
* // returns [input.begin(), input.begin() + 1)
|
|
979
|
+
* thrust::equal_range(input.begin(), input.end(), 1, less<int>());
|
|
980
|
+
* // returns [input.begin() + 1, input.begin() + 1)
|
|
981
|
+
* thrust::equal_range(input.begin(), input.end(), 2, less<int>());
|
|
982
|
+
* // returns [input.begin() * + 1, input.begin() + 2)
|
|
983
|
+
* thrust::equal_range(input.begin(), input.end(), 3, less<int>());
|
|
984
|
+
* // returns [input.begin() + 2, input.begin() + 2)
|
|
985
|
+
* thrust::equal_range(input.begin(), input.end(), 8, less<int>());
|
|
986
|
+
* // returns [input.begin() + 4, input.end())
|
|
987
|
+
* thrust::equal_range(input.begin(), input.end(), 9, less<int>());
|
|
988
|
+
* // returns [input.end(), input.end())
|
|
989
|
+
* \endcode
|
|
990
|
+
*
|
|
991
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/equal_range
|
|
992
|
+
* \see \p lower_bound
|
|
993
|
+
* \see \p upper_bound
|
|
994
|
+
* \see \p binary_search
|
|
995
|
+
*/
|
|
996
|
+
template <class ForwardIterator, class T, class StrictWeakOrdering>
|
|
997
|
+
thrust::pair<ForwardIterator, ForwardIterator>
|
|
998
|
+
equal_range(ForwardIterator first, ForwardIterator last, const T& value, StrictWeakOrdering comp);
|
|
999
|
+
|
|
1000
|
+
/*! \addtogroup vectorized_binary_search Vectorized Searches
|
|
1001
|
+
* \ingroup binary_search
|
|
1002
|
+
* \{
|
|
1003
|
+
*/
|
|
1004
|
+
|
|
1005
|
+
//////////////////////
|
|
1006
|
+
// Vector Functions //
|
|
1007
|
+
//////////////////////
|
|
1008
|
+
|
|
1009
|
+
/*! \p lower_bound is a vectorized version of binary search: for each
|
|
1010
|
+
* iterator \c v in <tt>[values_first, values_last)</tt> it attempts to
|
|
1011
|
+
* find the value <tt>*v</tt> in an ordered range <tt>[first, last)</tt>.
|
|
1012
|
+
* Specifically, it returns the index of first position where value could
|
|
1013
|
+
* be inserted without violating the ordering.
|
|
1014
|
+
*
|
|
1015
|
+
* The algorithm's execution is parallelized as determined by \p exec.
|
|
1016
|
+
*
|
|
1017
|
+
* \param exec The execution policy to use for parallelization.
|
|
1018
|
+
* \param first The beginning of the ordered sequence.
|
|
1019
|
+
* \param last The end of the ordered sequence.
|
|
1020
|
+
* \param values_first The beginning of the search values sequence.
|
|
1021
|
+
* \param values_last The end of the search values sequence.
|
|
1022
|
+
* \param result The beginning of the output sequence.
|
|
1023
|
+
*
|
|
1024
|
+
* \tparam DerivedPolicy The name of the derived execution policy.
|
|
1025
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
1026
|
+
* Iterator</a>. \tparam InputIterator is a model of <a
|
|
1027
|
+
* href="https://en.cppreference.com/w/cpp/iterator/input_iterator">Input Iterator</a>. and \c InputIterator's \c
|
|
1028
|
+
* value_type is <a href="https://en.cppreference.com/w/cpp/named_req/LessThanComparable">LessThanComparable</a>.
|
|
1029
|
+
* \tparam OutputIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/output_iterator">Output
|
|
1030
|
+
* Iterator</a>. and \c ForwardIterator's difference_type is convertible to \c OutputIterator's \c value_type.
|
|
1031
|
+
*
|
|
1032
|
+
* \pre The ranges <tt>[first,last)</tt> and <tt>[result, result + (last - first))</tt> shall not overlap.
|
|
1033
|
+
*
|
|
1034
|
+
* The following code snippet demonstrates how to use \p lower_bound
|
|
1035
|
+
* to search for multiple values in a ordered range using the \p thrust::device execution policy for
|
|
1036
|
+
* parallelization:
|
|
1037
|
+
*
|
|
1038
|
+
* \code
|
|
1039
|
+
* #include <thrust/binary_search.h>
|
|
1040
|
+
* #include <thrust/device_vector.h>
|
|
1041
|
+
* #include <thrust/execution_policy.h>
|
|
1042
|
+
* ...
|
|
1043
|
+
* thrust::device_vector<int> input(5);
|
|
1044
|
+
*
|
|
1045
|
+
* input[0] = 0;
|
|
1046
|
+
* input[1] = 2;
|
|
1047
|
+
* input[2] = 5;
|
|
1048
|
+
* input[3] = 7;
|
|
1049
|
+
* input[4] = 8;
|
|
1050
|
+
*
|
|
1051
|
+
* thrust::device_vector<int> values(6);
|
|
1052
|
+
* values[0] = 0;
|
|
1053
|
+
* values[1] = 1;
|
|
1054
|
+
* values[2] = 2;
|
|
1055
|
+
* values[3] = 3;
|
|
1056
|
+
* values[4] = 8;
|
|
1057
|
+
* values[5] = 9;
|
|
1058
|
+
*
|
|
1059
|
+
* thrust::device_vector<unsigned int> output(6);
|
|
1060
|
+
*
|
|
1061
|
+
* thrust::lower_bound(thrust::device,
|
|
1062
|
+
* input.begin(), input.end(),
|
|
1063
|
+
* values.begin(), values.end(),
|
|
1064
|
+
* output.begin());
|
|
1065
|
+
*
|
|
1066
|
+
* // output is now [0, 1, 1, 2, 4, 5]
|
|
1067
|
+
* \endcode
|
|
1068
|
+
*
|
|
1069
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/lower_bound
|
|
1070
|
+
* \see \p upper_bound
|
|
1071
|
+
* \see \p equal_range
|
|
1072
|
+
* \see \p binary_search
|
|
1073
|
+
*/
|
|
1074
|
+
template <typename DerivedPolicy, typename ForwardIterator, typename InputIterator, typename OutputIterator>
|
|
1075
|
+
_CCCL_HOST_DEVICE OutputIterator lower_bound(
|
|
1076
|
+
const thrust::detail::execution_policy_base<DerivedPolicy>& exec,
|
|
1077
|
+
ForwardIterator first,
|
|
1078
|
+
ForwardIterator last,
|
|
1079
|
+
InputIterator values_first,
|
|
1080
|
+
InputIterator values_last,
|
|
1081
|
+
OutputIterator result);
|
|
1082
|
+
|
|
1083
|
+
/*! \p lower_bound is a vectorized version of binary search: for each
|
|
1084
|
+
* iterator \c v in <tt>[values_first, values_last)</tt> it attempts to
|
|
1085
|
+
* find the value <tt>*v</tt> in an ordered range <tt>[first, last)</tt>.
|
|
1086
|
+
* Specifically, it returns the index of first position where value could
|
|
1087
|
+
* be inserted without violating the ordering.
|
|
1088
|
+
*
|
|
1089
|
+
* \param first The beginning of the ordered sequence.
|
|
1090
|
+
* \param last The end of the ordered sequence.
|
|
1091
|
+
* \param values_first The beginning of the search values sequence.
|
|
1092
|
+
* \param values_last The end of the search values sequence.
|
|
1093
|
+
* \param result The beginning of the output sequence.
|
|
1094
|
+
*
|
|
1095
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
1096
|
+
* Iterator</a>. \tparam InputIterator is a model of <a
|
|
1097
|
+
* href="https://en.cppreference.com/w/cpp/iterator/input_iterator">Input Iterator</a>. and \c InputIterator's \c
|
|
1098
|
+
* value_type is <a href="https://en.cppreference.com/w/cpp/named_req/LessThanComparable">LessThanComparable</a>.
|
|
1099
|
+
* \tparam OutputIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/output_iterator">Output
|
|
1100
|
+
* Iterator</a>. and \c ForwardIterator's difference_type is convertible to \c OutputIterator's \c value_type.
|
|
1101
|
+
*
|
|
1102
|
+
* \pre The ranges <tt>[first,last)</tt> and <tt>[result, result + (last - first))</tt> shall not overlap.
|
|
1103
|
+
*
|
|
1104
|
+
* The following code snippet demonstrates how to use \p lower_bound
|
|
1105
|
+
* to search for multiple values in a ordered range.
|
|
1106
|
+
*
|
|
1107
|
+
* \code
|
|
1108
|
+
* #include <thrust/binary_search.h>
|
|
1109
|
+
* #include <thrust/device_vector.h>
|
|
1110
|
+
* ...
|
|
1111
|
+
* thrust::device_vector<int> input(5);
|
|
1112
|
+
*
|
|
1113
|
+
* input[0] = 0;
|
|
1114
|
+
* input[1] = 2;
|
|
1115
|
+
* input[2] = 5;
|
|
1116
|
+
* input[3] = 7;
|
|
1117
|
+
* input[4] = 8;
|
|
1118
|
+
*
|
|
1119
|
+
* thrust::device_vector<int> values(6);
|
|
1120
|
+
* values[0] = 0;
|
|
1121
|
+
* values[1] = 1;
|
|
1122
|
+
* values[2] = 2;
|
|
1123
|
+
* values[3] = 3;
|
|
1124
|
+
* values[4] = 8;
|
|
1125
|
+
* values[5] = 9;
|
|
1126
|
+
*
|
|
1127
|
+
* thrust::device_vector<unsigned int> output(6);
|
|
1128
|
+
*
|
|
1129
|
+
* thrust::lower_bound(input.begin(), input.end(),
|
|
1130
|
+
* values.begin(), values.end(),
|
|
1131
|
+
* output.begin());
|
|
1132
|
+
*
|
|
1133
|
+
* // output is now [0, 1, 1, 2, 4, 5]
|
|
1134
|
+
* \endcode
|
|
1135
|
+
*
|
|
1136
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/lower_bound
|
|
1137
|
+
* \see \p upper_bound
|
|
1138
|
+
* \see \p equal_range
|
|
1139
|
+
* \see \p binary_search
|
|
1140
|
+
*/
|
|
1141
|
+
template <class ForwardIterator, class InputIterator, class OutputIterator>
|
|
1142
|
+
OutputIterator lower_bound(
|
|
1143
|
+
ForwardIterator first,
|
|
1144
|
+
ForwardIterator last,
|
|
1145
|
+
InputIterator values_first,
|
|
1146
|
+
InputIterator values_last,
|
|
1147
|
+
OutputIterator result);
|
|
1148
|
+
|
|
1149
|
+
/*! \p lower_bound is a vectorized version of binary search: for each
|
|
1150
|
+
* iterator \c v in <tt>[values_first, values_last)</tt> it attempts to
|
|
1151
|
+
* find the value <tt>*v</tt> in an ordered range <tt>[first, last)</tt>.
|
|
1152
|
+
* Specifically, it returns the index of first position where value could
|
|
1153
|
+
* be inserted without violating the ordering. This version of
|
|
1154
|
+
* \p lower_bound uses function object \c comp for comparison.
|
|
1155
|
+
*
|
|
1156
|
+
* The algorithm's execution is parallelized as determined by \p exec.
|
|
1157
|
+
*
|
|
1158
|
+
* \param exec The execution policy to use for parallelization.
|
|
1159
|
+
* \param first The beginning of the ordered sequence.
|
|
1160
|
+
* \param last The end of the ordered sequence.
|
|
1161
|
+
* \param values_first The beginning of the search values sequence.
|
|
1162
|
+
* \param values_last The end of the search values sequence.
|
|
1163
|
+
* \param result The beginning of the output sequence.
|
|
1164
|
+
* \param comp The comparison operator.
|
|
1165
|
+
*
|
|
1166
|
+
* \tparam DerivedPolicy The name of the derived execution policy.
|
|
1167
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
1168
|
+
* Iterator</a>. \tparam InputIterator is a model of <a
|
|
1169
|
+
* href="https://en.cppreference.com/w/cpp/iterator/input_iterator">Input Iterator</a>. and \c InputIterator's \c
|
|
1170
|
+
* value_type is comparable to \p ForwardIterator's \c value_type. \tparam OutputIterator is a model of <a
|
|
1171
|
+
* href="https://en.cppreference.com/w/cpp/iterator/output_iterator">Output Iterator</a>. and \c ForwardIterator's
|
|
1172
|
+
* difference_type is convertible to \c OutputIterator's \c value_type. \tparam StrictWeakOrdering is a model of <a
|
|
1173
|
+
* href="https://en.cppreference.com/w/cpp/concepts/strict_weak_order">Strict Weak Ordering</a>.
|
|
1174
|
+
*
|
|
1175
|
+
* \pre The ranges <tt>[first,last)</tt> and <tt>[result, result + (last - first))</tt> shall not overlap.
|
|
1176
|
+
*
|
|
1177
|
+
* The following code snippet demonstrates how to use \p lower_bound
|
|
1178
|
+
* to search for multiple values in a ordered range.
|
|
1179
|
+
*
|
|
1180
|
+
* \code
|
|
1181
|
+
* #include <thrust/binary_search.h>
|
|
1182
|
+
* #include <thrust/device_vector.h>
|
|
1183
|
+
* #include <thrust/functional.h>
|
|
1184
|
+
* #include <thrust/execution_policy.h>
|
|
1185
|
+
* ...
|
|
1186
|
+
* thrust::device_vector<int> input(5);
|
|
1187
|
+
*
|
|
1188
|
+
* input[0] = 0;
|
|
1189
|
+
* input[1] = 2;
|
|
1190
|
+
* input[2] = 5;
|
|
1191
|
+
* input[3] = 7;
|
|
1192
|
+
* input[4] = 8;
|
|
1193
|
+
*
|
|
1194
|
+
* thrust::device_vector<int> values(6);
|
|
1195
|
+
* values[0] = 0;
|
|
1196
|
+
* values[1] = 1;
|
|
1197
|
+
* values[2] = 2;
|
|
1198
|
+
* values[3] = 3;
|
|
1199
|
+
* values[4] = 8;
|
|
1200
|
+
* values[5] = 9;
|
|
1201
|
+
*
|
|
1202
|
+
* thrust::device_vector<unsigned int> output(6);
|
|
1203
|
+
*
|
|
1204
|
+
* thrust::lower_bound(input.begin(), input.end(),
|
|
1205
|
+
* values.begin(), values.end(),
|
|
1206
|
+
* output.begin(),
|
|
1207
|
+
* ::cuda::std::less<int>());
|
|
1208
|
+
*
|
|
1209
|
+
* // output is now [0, 1, 1, 2, 4, 5]
|
|
1210
|
+
* \endcode
|
|
1211
|
+
*
|
|
1212
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/lower_bound
|
|
1213
|
+
* \see \p upper_bound
|
|
1214
|
+
* \see \p equal_range
|
|
1215
|
+
* \see \p binary_search
|
|
1216
|
+
*/
|
|
1217
|
+
template <typename DerivedPolicy,
|
|
1218
|
+
typename ForwardIterator,
|
|
1219
|
+
typename InputIterator,
|
|
1220
|
+
typename OutputIterator,
|
|
1221
|
+
typename StrictWeakOrdering>
|
|
1222
|
+
_CCCL_HOST_DEVICE OutputIterator lower_bound(
|
|
1223
|
+
const thrust::detail::execution_policy_base<DerivedPolicy>& exec,
|
|
1224
|
+
ForwardIterator first,
|
|
1225
|
+
ForwardIterator last,
|
|
1226
|
+
InputIterator values_first,
|
|
1227
|
+
InputIterator values_last,
|
|
1228
|
+
OutputIterator result,
|
|
1229
|
+
StrictWeakOrdering comp);
|
|
1230
|
+
|
|
1231
|
+
/*! \p lower_bound is a vectorized version of binary search: for each
|
|
1232
|
+
* iterator \c v in <tt>[values_first, values_last)</tt> it attempts to
|
|
1233
|
+
* find the value <tt>*v</tt> in an ordered range <tt>[first, last)</tt>.
|
|
1234
|
+
* Specifically, it returns the index of first position where value could
|
|
1235
|
+
* be inserted without violating the ordering. This version of
|
|
1236
|
+
* \p lower_bound uses function object \c comp for comparison.
|
|
1237
|
+
*
|
|
1238
|
+
* \param first The beginning of the ordered sequence.
|
|
1239
|
+
* \param last The end of the ordered sequence.
|
|
1240
|
+
* \param values_first The beginning of the search values sequence.
|
|
1241
|
+
* \param values_last The end of the search values sequence.
|
|
1242
|
+
* \param result The beginning of the output sequence.
|
|
1243
|
+
* \param comp The comparison operator.
|
|
1244
|
+
*
|
|
1245
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
1246
|
+
* Iterator</a>. \tparam InputIterator is a model of <a
|
|
1247
|
+
* href="https://en.cppreference.com/w/cpp/iterator/input_iterator">Input Iterator</a>. and \c InputIterator's \c
|
|
1248
|
+
* value_type is comparable to \p ForwardIterator's \c value_type. \tparam OutputIterator is a model of <a
|
|
1249
|
+
* href="https://en.cppreference.com/w/cpp/iterator/output_iterator">Output Iterator</a>. and \c ForwardIterator's
|
|
1250
|
+
* difference_type is convertible to \c OutputIterator's \c value_type. \tparam StrictWeakOrdering is a model of <a
|
|
1251
|
+
* href="https://en.cppreference.com/w/cpp/concepts/strict_weak_order">Strict Weak Ordering</a>.
|
|
1252
|
+
*
|
|
1253
|
+
* \pre The ranges <tt>[first,last)</tt> and <tt>[result, result + (last - first))</tt> shall not overlap.
|
|
1254
|
+
*
|
|
1255
|
+
* The following code snippet demonstrates how to use \p lower_bound
|
|
1256
|
+
* to search for multiple values in a ordered range.
|
|
1257
|
+
*
|
|
1258
|
+
* \code
|
|
1259
|
+
* #include <thrust/binary_search.h>
|
|
1260
|
+
* #include <thrust/device_vector.h>
|
|
1261
|
+
* #include <thrust/functional.h>
|
|
1262
|
+
* ...
|
|
1263
|
+
* thrust::device_vector<int> input(5);
|
|
1264
|
+
*
|
|
1265
|
+
* input[0] = 0;
|
|
1266
|
+
* input[1] = 2;
|
|
1267
|
+
* input[2] = 5;
|
|
1268
|
+
* input[3] = 7;
|
|
1269
|
+
* input[4] = 8;
|
|
1270
|
+
*
|
|
1271
|
+
* thrust::device_vector<int> values(6);
|
|
1272
|
+
* values[0] = 0;
|
|
1273
|
+
* values[1] = 1;
|
|
1274
|
+
* values[2] = 2;
|
|
1275
|
+
* values[3] = 3;
|
|
1276
|
+
* values[4] = 8;
|
|
1277
|
+
* values[5] = 9;
|
|
1278
|
+
*
|
|
1279
|
+
* thrust::device_vector<unsigned int> output(6);
|
|
1280
|
+
*
|
|
1281
|
+
* thrust::lower_bound(input.begin(), input.end(),
|
|
1282
|
+
* values.begin(), values.end(),
|
|
1283
|
+
* output.begin(),
|
|
1284
|
+
* ::cuda::std::less<int>());
|
|
1285
|
+
*
|
|
1286
|
+
* // output is now [0, 1, 1, 2, 4, 5]
|
|
1287
|
+
* \endcode
|
|
1288
|
+
*
|
|
1289
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/lower_bound
|
|
1290
|
+
* \see \p upper_bound
|
|
1291
|
+
* \see \p equal_range
|
|
1292
|
+
* \see \p binary_search
|
|
1293
|
+
*/
|
|
1294
|
+
template <class ForwardIterator, class InputIterator, class OutputIterator, class StrictWeakOrdering>
|
|
1295
|
+
OutputIterator lower_bound(
|
|
1296
|
+
ForwardIterator first,
|
|
1297
|
+
ForwardIterator last,
|
|
1298
|
+
InputIterator values_first,
|
|
1299
|
+
InputIterator values_last,
|
|
1300
|
+
OutputIterator result,
|
|
1301
|
+
StrictWeakOrdering comp);
|
|
1302
|
+
|
|
1303
|
+
/*! \p upper_bound is a vectorized version of binary search: for each
|
|
1304
|
+
* iterator \c v in <tt>[values_first, values_last)</tt> it attempts to
|
|
1305
|
+
* find the value <tt>*v</tt> in an ordered range <tt>[first, last)</tt>.
|
|
1306
|
+
* Specifically, it returns the index of last position where value could
|
|
1307
|
+
* be inserted without violating the ordering.
|
|
1308
|
+
*
|
|
1309
|
+
* The algorithm's execution is parallelized as determined by \p exec.
|
|
1310
|
+
*
|
|
1311
|
+
* \param exec The execution policy to use for parallelization.
|
|
1312
|
+
* \param first The beginning of the ordered sequence.
|
|
1313
|
+
* \param last The end of the ordered sequence.
|
|
1314
|
+
* \param values_first The beginning of the search values sequence.
|
|
1315
|
+
* \param values_last The end of the search values sequence.
|
|
1316
|
+
* \param result The beginning of the output sequence.
|
|
1317
|
+
*
|
|
1318
|
+
* \tparam DerivedPolicy The name of the derived execution policy.
|
|
1319
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
1320
|
+
* Iterator</a>. \tparam InputIterator is a model of <a
|
|
1321
|
+
* href="https://en.cppreference.com/w/cpp/iterator/input_iterator">Input Iterator</a>. and \c InputIterator's \c
|
|
1322
|
+
* value_type is <a href="https://en.cppreference.com/w/cpp/named_req/LessThanComparable">LessThanComparable</a>.
|
|
1323
|
+
* \tparam OutputIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/output_iterator">Output
|
|
1324
|
+
* Iterator</a>. and \c ForwardIterator's difference_type is convertible to \c OutputIterator's \c value_type.
|
|
1325
|
+
*
|
|
1326
|
+
* \pre The ranges <tt>[first,last)</tt> and <tt>[result, result + (last - first))</tt> shall not overlap.
|
|
1327
|
+
*
|
|
1328
|
+
* The following code snippet demonstrates how to use \p upper_bound
|
|
1329
|
+
* to search for multiple values in a ordered range using the \p thrust::device execution policy for
|
|
1330
|
+
* parallelization:
|
|
1331
|
+
*
|
|
1332
|
+
* \code
|
|
1333
|
+
* #include <thrust/binary_search.h>
|
|
1334
|
+
* #include <thrust/device_vector.h>
|
|
1335
|
+
* #include <thrust/execution_policy.h>
|
|
1336
|
+
* ...
|
|
1337
|
+
* thrust::device_vector<int> input(5);
|
|
1338
|
+
*
|
|
1339
|
+
* input[0] = 0;
|
|
1340
|
+
* input[1] = 2;
|
|
1341
|
+
* input[2] = 5;
|
|
1342
|
+
* input[3] = 7;
|
|
1343
|
+
* input[4] = 8;
|
|
1344
|
+
*
|
|
1345
|
+
* thrust::device_vector<int> values(6);
|
|
1346
|
+
* values[0] = 0;
|
|
1347
|
+
* values[1] = 1;
|
|
1348
|
+
* values[2] = 2;
|
|
1349
|
+
* values[3] = 3;
|
|
1350
|
+
* values[4] = 8;
|
|
1351
|
+
* values[5] = 9;
|
|
1352
|
+
*
|
|
1353
|
+
* thrust::device_vector<unsigned int> output(6);
|
|
1354
|
+
*
|
|
1355
|
+
* thrust::upper_bound(thrust::device,
|
|
1356
|
+
* input.begin(), input.end(),
|
|
1357
|
+
* values.begin(), values.end(),
|
|
1358
|
+
* output.begin());
|
|
1359
|
+
*
|
|
1360
|
+
* // output is now [1, 1, 2, 2, 5, 5]
|
|
1361
|
+
* \endcode
|
|
1362
|
+
*
|
|
1363
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/upper_bound
|
|
1364
|
+
* \see \p upper_bound
|
|
1365
|
+
* \see \p equal_range
|
|
1366
|
+
* \see \p binary_search
|
|
1367
|
+
*/
|
|
1368
|
+
template <typename DerivedPolicy, typename ForwardIterator, typename InputIterator, typename OutputIterator>
|
|
1369
|
+
_CCCL_HOST_DEVICE OutputIterator upper_bound(
|
|
1370
|
+
const thrust::detail::execution_policy_base<DerivedPolicy>& exec,
|
|
1371
|
+
ForwardIterator first,
|
|
1372
|
+
ForwardIterator last,
|
|
1373
|
+
InputIterator values_first,
|
|
1374
|
+
InputIterator values_last,
|
|
1375
|
+
OutputIterator result);
|
|
1376
|
+
|
|
1377
|
+
/*! \p upper_bound is a vectorized version of binary search: for each
|
|
1378
|
+
* iterator \c v in <tt>[values_first, values_last)</tt> it attempts to
|
|
1379
|
+
* find the value <tt>*v</tt> in an ordered range <tt>[first, last)</tt>.
|
|
1380
|
+
* Specifically, it returns the index of last position where value could
|
|
1381
|
+
* be inserted without violating the ordering.
|
|
1382
|
+
*
|
|
1383
|
+
* \param first The beginning of the ordered sequence.
|
|
1384
|
+
* \param last The end of the ordered sequence.
|
|
1385
|
+
* \param values_first The beginning of the search values sequence.
|
|
1386
|
+
* \param values_last The end of the search values sequence.
|
|
1387
|
+
* \param result The beginning of the output sequence.
|
|
1388
|
+
*
|
|
1389
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
1390
|
+
* Iterator</a>. \tparam InputIterator is a model of <a
|
|
1391
|
+
* href="https://en.cppreference.com/w/cpp/iterator/input_iterator">Input Iterator</a>. and \c InputIterator's \c
|
|
1392
|
+
* value_type is <a href="https://en.cppreference.com/w/cpp/named_req/LessThanComparable">LessThanComparable</a>.
|
|
1393
|
+
* \tparam OutputIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/output_iterator">Output
|
|
1394
|
+
* Iterator</a>. and \c ForwardIterator's difference_type is convertible to \c OutputIterator's \c value_type.
|
|
1395
|
+
*
|
|
1396
|
+
* \pre The ranges <tt>[first,last)</tt> and <tt>[result, result + (last - first))</tt> shall not overlap.
|
|
1397
|
+
*
|
|
1398
|
+
* The following code snippet demonstrates how to use \p upper_bound
|
|
1399
|
+
* to search for multiple values in a ordered range.
|
|
1400
|
+
*
|
|
1401
|
+
* \code
|
|
1402
|
+
* #include <thrust/binary_search.h>
|
|
1403
|
+
* #include <thrust/device_vector.h>
|
|
1404
|
+
* ...
|
|
1405
|
+
* thrust::device_vector<int> input(5);
|
|
1406
|
+
*
|
|
1407
|
+
* input[0] = 0;
|
|
1408
|
+
* input[1] = 2;
|
|
1409
|
+
* input[2] = 5;
|
|
1410
|
+
* input[3] = 7;
|
|
1411
|
+
* input[4] = 8;
|
|
1412
|
+
*
|
|
1413
|
+
* thrust::device_vector<int> values(6);
|
|
1414
|
+
* values[0] = 0;
|
|
1415
|
+
* values[1] = 1;
|
|
1416
|
+
* values[2] = 2;
|
|
1417
|
+
* values[3] = 3;
|
|
1418
|
+
* values[4] = 8;
|
|
1419
|
+
* values[5] = 9;
|
|
1420
|
+
*
|
|
1421
|
+
* thrust::device_vector<unsigned int> output(6);
|
|
1422
|
+
*
|
|
1423
|
+
* thrust::upper_bound(input.begin(), input.end(),
|
|
1424
|
+
* values.begin(), values.end(),
|
|
1425
|
+
* output.begin());
|
|
1426
|
+
*
|
|
1427
|
+
* // output is now [1, 1, 2, 2, 5, 5]
|
|
1428
|
+
* \endcode
|
|
1429
|
+
*
|
|
1430
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/upper_bound
|
|
1431
|
+
* \see \p upper_bound
|
|
1432
|
+
* \see \p equal_range
|
|
1433
|
+
* \see \p binary_search
|
|
1434
|
+
*/
|
|
1435
|
+
template <class ForwardIterator, class InputIterator, class OutputIterator>
|
|
1436
|
+
OutputIterator upper_bound(
|
|
1437
|
+
ForwardIterator first,
|
|
1438
|
+
ForwardIterator last,
|
|
1439
|
+
InputIterator values_first,
|
|
1440
|
+
InputIterator values_last,
|
|
1441
|
+
OutputIterator result);
|
|
1442
|
+
|
|
1443
|
+
/*! \p upper_bound is a vectorized version of binary search: for each
|
|
1444
|
+
* iterator \c v in <tt>[values_first, values_last)</tt> it attempts to
|
|
1445
|
+
* find the value <tt>*v</tt> in an ordered range <tt>[first, last)</tt>.
|
|
1446
|
+
* Specifically, it returns the index of first position where value could
|
|
1447
|
+
* be inserted without violating the ordering. This version of
|
|
1448
|
+
* \p upper_bound uses function object \c comp for comparison.
|
|
1449
|
+
*
|
|
1450
|
+
* The algorithm's execution is parallelized as determined by \p exec.
|
|
1451
|
+
*
|
|
1452
|
+
* \param exec The execution policy to use for parallelization.
|
|
1453
|
+
* \param first The beginning of the ordered sequence.
|
|
1454
|
+
* \param last The end of the ordered sequence.
|
|
1455
|
+
* \param values_first The beginning of the search values sequence.
|
|
1456
|
+
* \param values_last The end of the search values sequence.
|
|
1457
|
+
* \param result The beginning of the output sequence.
|
|
1458
|
+
* \param comp The comparison operator.
|
|
1459
|
+
*
|
|
1460
|
+
* \tparam DerivedPolicy The name of the derived execution policy.
|
|
1461
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
1462
|
+
* Iterator</a>. \tparam InputIterator is a model of <a
|
|
1463
|
+
* href="https://en.cppreference.com/w/cpp/iterator/input_iterator">Input Iterator</a>. and \c InputIterator's \c
|
|
1464
|
+
* value_type is comparable to \p ForwardIterator's \c value_type. \tparam OutputIterator is a model of <a
|
|
1465
|
+
* href="https://en.cppreference.com/w/cpp/iterator/output_iterator">Output Iterator</a>. and \c ForwardIterator's
|
|
1466
|
+
* difference_type is convertible to \c OutputIterator's \c value_type. \tparam StrictWeakOrdering is a model of <a
|
|
1467
|
+
* href="https://en.cppreference.com/w/cpp/concepts/strict_weak_order">Strict Weak Ordering</a>.
|
|
1468
|
+
*
|
|
1469
|
+
* \pre The ranges <tt>[first,last)</tt> and <tt>[result, result + (last - first))</tt> shall not overlap.
|
|
1470
|
+
*
|
|
1471
|
+
* The following code snippet demonstrates how to use \p upper_bound
|
|
1472
|
+
* to search for multiple values in a ordered range using the \p thrust::device execution policy for
|
|
1473
|
+
* parallelization:
|
|
1474
|
+
*
|
|
1475
|
+
* \code
|
|
1476
|
+
* #include <thrust/binary_search.h>
|
|
1477
|
+
* #include <thrust/device_vector.h>
|
|
1478
|
+
* #include <thrust/functional.h>
|
|
1479
|
+
* #include <thrust/execution_policy.h>
|
|
1480
|
+
* ...
|
|
1481
|
+
* thrust::device_vector<int> input(5);
|
|
1482
|
+
*
|
|
1483
|
+
* input[0] = 0;
|
|
1484
|
+
* input[1] = 2;
|
|
1485
|
+
* input[2] = 5;
|
|
1486
|
+
* input[3] = 7;
|
|
1487
|
+
* input[4] = 8;
|
|
1488
|
+
*
|
|
1489
|
+
* thrust::device_vector<int> values(6);
|
|
1490
|
+
* values[0] = 0;
|
|
1491
|
+
* values[1] = 1;
|
|
1492
|
+
* values[2] = 2;
|
|
1493
|
+
* values[3] = 3;
|
|
1494
|
+
* values[4] = 8;
|
|
1495
|
+
* values[5] = 9;
|
|
1496
|
+
*
|
|
1497
|
+
* thrust::device_vector<unsigned int> output(6);
|
|
1498
|
+
*
|
|
1499
|
+
* thrust::upper_bound(thrust::device,
|
|
1500
|
+
* input.begin(), input.end(),
|
|
1501
|
+
* values.begin(), values.end(),
|
|
1502
|
+
* output.begin(),
|
|
1503
|
+
* ::cuda::std::less<int>());
|
|
1504
|
+
*
|
|
1505
|
+
* // output is now [1, 1, 2, 2, 5, 5]
|
|
1506
|
+
* \endcode
|
|
1507
|
+
*
|
|
1508
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/upper_bound
|
|
1509
|
+
* \see \p lower_bound
|
|
1510
|
+
* \see \p equal_range
|
|
1511
|
+
* \see \p binary_search
|
|
1512
|
+
*/
|
|
1513
|
+
template <typename DerivedPolicy,
|
|
1514
|
+
typename ForwardIterator,
|
|
1515
|
+
typename InputIterator,
|
|
1516
|
+
typename OutputIterator,
|
|
1517
|
+
typename StrictWeakOrdering>
|
|
1518
|
+
_CCCL_HOST_DEVICE OutputIterator upper_bound(
|
|
1519
|
+
const thrust::detail::execution_policy_base<DerivedPolicy>& exec,
|
|
1520
|
+
ForwardIterator first,
|
|
1521
|
+
ForwardIterator last,
|
|
1522
|
+
InputIterator values_first,
|
|
1523
|
+
InputIterator values_last,
|
|
1524
|
+
OutputIterator result,
|
|
1525
|
+
StrictWeakOrdering comp);
|
|
1526
|
+
|
|
1527
|
+
/*! \p upper_bound is a vectorized version of binary search: for each
|
|
1528
|
+
* iterator \c v in <tt>[values_first, values_last)</tt> it attempts to
|
|
1529
|
+
* find the value <tt>*v</tt> in an ordered range <tt>[first, last)</tt>.
|
|
1530
|
+
* Specifically, it returns the index of first position where value could
|
|
1531
|
+
* be inserted without violating the ordering. This version of
|
|
1532
|
+
* \p upper_bound uses function object \c comp for comparison.
|
|
1533
|
+
*
|
|
1534
|
+
* \param first The beginning of the ordered sequence.
|
|
1535
|
+
* \param last The end of the ordered sequence.
|
|
1536
|
+
* \param values_first The beginning of the search values sequence.
|
|
1537
|
+
* \param values_last The end of the search values sequence.
|
|
1538
|
+
* \param result The beginning of the output sequence.
|
|
1539
|
+
* \param comp The comparison operator.
|
|
1540
|
+
*
|
|
1541
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
1542
|
+
* Iterator</a>. \tparam InputIterator is a model of <a
|
|
1543
|
+
* href="https://en.cppreference.com/w/cpp/iterator/input_iterator">Input Iterator</a>. and \c InputIterator's \c
|
|
1544
|
+
* value_type is comparable to \p ForwardIterator's \c value_type. \tparam OutputIterator is a model of <a
|
|
1545
|
+
* href="https://en.cppreference.com/w/cpp/iterator/output_iterator">Output Iterator</a>. and \c ForwardIterator's
|
|
1546
|
+
* difference_type is convertible to \c OutputIterator's \c value_type. \tparam StrictWeakOrdering is a model of <a
|
|
1547
|
+
* href="https://en.cppreference.com/w/cpp/concepts/strict_weak_order">Strict Weak Ordering</a>.
|
|
1548
|
+
*
|
|
1549
|
+
* \pre The ranges <tt>[first,last)</tt> and <tt>[result, result + (last - first))</tt> shall not overlap.
|
|
1550
|
+
*
|
|
1551
|
+
* The following code snippet demonstrates how to use \p upper_bound
|
|
1552
|
+
* to search for multiple values in a ordered range.
|
|
1553
|
+
*
|
|
1554
|
+
* \code
|
|
1555
|
+
* #include <thrust/binary_search.h>
|
|
1556
|
+
* #include <thrust/device_vector.h>
|
|
1557
|
+
* #include <thrust/functional.h>
|
|
1558
|
+
* ...
|
|
1559
|
+
* thrust::device_vector<int> input(5);
|
|
1560
|
+
*
|
|
1561
|
+
* input[0] = 0;
|
|
1562
|
+
* input[1] = 2;
|
|
1563
|
+
* input[2] = 5;
|
|
1564
|
+
* input[3] = 7;
|
|
1565
|
+
* input[4] = 8;
|
|
1566
|
+
*
|
|
1567
|
+
* thrust::device_vector<int> values(6);
|
|
1568
|
+
* values[0] = 0;
|
|
1569
|
+
* values[1] = 1;
|
|
1570
|
+
* values[2] = 2;
|
|
1571
|
+
* values[3] = 3;
|
|
1572
|
+
* values[4] = 8;
|
|
1573
|
+
* values[5] = 9;
|
|
1574
|
+
*
|
|
1575
|
+
* thrust::device_vector<unsigned int> output(6);
|
|
1576
|
+
*
|
|
1577
|
+
* thrust::upper_bound(input.begin(), input.end(),
|
|
1578
|
+
* values.begin(), values.end(),
|
|
1579
|
+
* output.begin(),
|
|
1580
|
+
* ::cuda::std::less<int>());
|
|
1581
|
+
*
|
|
1582
|
+
* // output is now [1, 1, 2, 2, 5, 5]
|
|
1583
|
+
* \endcode
|
|
1584
|
+
*
|
|
1585
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/upper_bound
|
|
1586
|
+
* \see \p lower_bound
|
|
1587
|
+
* \see \p equal_range
|
|
1588
|
+
* \see \p binary_search
|
|
1589
|
+
*/
|
|
1590
|
+
template <class ForwardIterator, class InputIterator, class OutputIterator, class StrictWeakOrdering>
|
|
1591
|
+
OutputIterator upper_bound(
|
|
1592
|
+
ForwardIterator first,
|
|
1593
|
+
ForwardIterator last,
|
|
1594
|
+
InputIterator values_first,
|
|
1595
|
+
InputIterator values_last,
|
|
1596
|
+
OutputIterator result,
|
|
1597
|
+
StrictWeakOrdering comp);
|
|
1598
|
+
|
|
1599
|
+
/*! \p binary_search is a vectorized version of binary search: for each
|
|
1600
|
+
* iterator \c v in <tt>[values_first, values_last)</tt> it attempts to
|
|
1601
|
+
* find the value <tt>*v</tt> in an ordered range <tt>[first, last)</tt>.
|
|
1602
|
+
* It returns \c true if an element that is equivalent to \c value
|
|
1603
|
+
* is present in <tt>[first, last)</tt> and \c false if no such element
|
|
1604
|
+
* exists.
|
|
1605
|
+
*
|
|
1606
|
+
* The algorithm's execution is parallelized as determined by \p exec.
|
|
1607
|
+
*
|
|
1608
|
+
* \param exec The execution policy to use for parallelization.
|
|
1609
|
+
* \param first The beginning of the ordered sequence.
|
|
1610
|
+
* \param last The end of the ordered sequence.
|
|
1611
|
+
* \param values_first The beginning of the search values sequence.
|
|
1612
|
+
* \param values_last The end of the search values sequence.
|
|
1613
|
+
* \param result The beginning of the output sequence.
|
|
1614
|
+
*
|
|
1615
|
+
* \tparam DerivedPolicy The name of the derived execution policy.
|
|
1616
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
1617
|
+
* Iterator</a>. \tparam InputIterator is a model of <a
|
|
1618
|
+
* href="https://en.cppreference.com/w/cpp/iterator/input_iterator">Input Iterator</a>. and \c InputIterator's \c
|
|
1619
|
+
* value_type is <a href="https://en.cppreference.com/w/cpp/named_req/LessThanComparable">LessThanComparable</a>.
|
|
1620
|
+
* \tparam OutputIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/output_iterator">Output
|
|
1621
|
+
* Iterator</a>. and bool is convertible to \c OutputIterator's \c value_type.
|
|
1622
|
+
*
|
|
1623
|
+
* \pre The ranges <tt>[first,last)</tt> and <tt>[result, result + (last - first))</tt> shall not overlap.
|
|
1624
|
+
*
|
|
1625
|
+
* The following code snippet demonstrates how to use \p binary_search
|
|
1626
|
+
* to search for multiple values in a ordered range using the \p thrust::device execution policy for
|
|
1627
|
+
* parallelization:
|
|
1628
|
+
*
|
|
1629
|
+
* \code
|
|
1630
|
+
* #include <thrust/binary_search.h>
|
|
1631
|
+
* #include <thrust/device_vector.h>
|
|
1632
|
+
* #include <thrust/execution_policy.h>
|
|
1633
|
+
* ...
|
|
1634
|
+
* thrust::device_vector<int> input(5);
|
|
1635
|
+
*
|
|
1636
|
+
* input[0] = 0;
|
|
1637
|
+
* input[1] = 2;
|
|
1638
|
+
* input[2] = 5;
|
|
1639
|
+
* input[3] = 7;
|
|
1640
|
+
* input[4] = 8;
|
|
1641
|
+
*
|
|
1642
|
+
* thrust::device_vector<int> values(6);
|
|
1643
|
+
* values[0] = 0;
|
|
1644
|
+
* values[1] = 1;
|
|
1645
|
+
* values[2] = 2;
|
|
1646
|
+
* values[3] = 3;
|
|
1647
|
+
* values[4] = 8;
|
|
1648
|
+
* values[5] = 9;
|
|
1649
|
+
*
|
|
1650
|
+
* thrust::device_vector<bool> output(6);
|
|
1651
|
+
*
|
|
1652
|
+
* thrust::binary_search(thrust::device,
|
|
1653
|
+
* input.begin(), input.end(),
|
|
1654
|
+
* values.begin(), values.end(),
|
|
1655
|
+
* output.begin());
|
|
1656
|
+
*
|
|
1657
|
+
* // output is now [true, false, true, false, true, false]
|
|
1658
|
+
* \endcode
|
|
1659
|
+
*
|
|
1660
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/binary_search
|
|
1661
|
+
* \see \p lower_bound
|
|
1662
|
+
* \see \p upper_bound
|
|
1663
|
+
* \see \p equal_range
|
|
1664
|
+
*/
|
|
1665
|
+
template <typename DerivedPolicy, typename ForwardIterator, typename InputIterator, typename OutputIterator>
|
|
1666
|
+
_CCCL_HOST_DEVICE OutputIterator binary_search(
|
|
1667
|
+
const thrust::detail::execution_policy_base<DerivedPolicy>& exec,
|
|
1668
|
+
ForwardIterator first,
|
|
1669
|
+
ForwardIterator last,
|
|
1670
|
+
InputIterator values_first,
|
|
1671
|
+
InputIterator values_last,
|
|
1672
|
+
OutputIterator result);
|
|
1673
|
+
|
|
1674
|
+
/*! \p binary_search is a vectorized version of binary search: for each
|
|
1675
|
+
* iterator \c v in <tt>[values_first, values_last)</tt> it attempts to
|
|
1676
|
+
* find the value <tt>*v</tt> in an ordered range <tt>[first, last)</tt>.
|
|
1677
|
+
* It returns \c true if an element that is equivalent to \c value
|
|
1678
|
+
* is present in <tt>[first, last)</tt> and \c false if no such element
|
|
1679
|
+
* exists.
|
|
1680
|
+
*
|
|
1681
|
+
* \param first The beginning of the ordered sequence.
|
|
1682
|
+
* \param last The end of the ordered sequence.
|
|
1683
|
+
* \param values_first The beginning of the search values sequence.
|
|
1684
|
+
* \param values_last The end of the search values sequence.
|
|
1685
|
+
* \param result The beginning of the output sequence.
|
|
1686
|
+
*
|
|
1687
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
1688
|
+
* Iterator</a>. \tparam InputIterator is a model of <a
|
|
1689
|
+
* href="https://en.cppreference.com/w/cpp/iterator/input_iterator">Input Iterator</a>. and \c InputIterator's \c
|
|
1690
|
+
* value_type is <a href="https://en.cppreference.com/w/cpp/named_req/LessThanComparable">LessThanComparable</a>.
|
|
1691
|
+
* \tparam OutputIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/output_iterator">Output
|
|
1692
|
+
* Iterator</a>. and bool is convertible to \c OutputIterator's \c value_type.
|
|
1693
|
+
*
|
|
1694
|
+
* \pre The ranges <tt>[first,last)</tt> and <tt>[result, result + (last - first))</tt> shall not overlap.
|
|
1695
|
+
*
|
|
1696
|
+
* The following code snippet demonstrates how to use \p binary_search
|
|
1697
|
+
* to search for multiple values in a ordered range.
|
|
1698
|
+
*
|
|
1699
|
+
* \code
|
|
1700
|
+
* #include <thrust/binary_search.h>
|
|
1701
|
+
* #include <thrust/device_vector.h>
|
|
1702
|
+
* ...
|
|
1703
|
+
* thrust::device_vector<int> input(5);
|
|
1704
|
+
*
|
|
1705
|
+
* input[0] = 0;
|
|
1706
|
+
* input[1] = 2;
|
|
1707
|
+
* input[2] = 5;
|
|
1708
|
+
* input[3] = 7;
|
|
1709
|
+
* input[4] = 8;
|
|
1710
|
+
*
|
|
1711
|
+
* thrust::device_vector<int> values(6);
|
|
1712
|
+
* values[0] = 0;
|
|
1713
|
+
* values[1] = 1;
|
|
1714
|
+
* values[2] = 2;
|
|
1715
|
+
* values[3] = 3;
|
|
1716
|
+
* values[4] = 8;
|
|
1717
|
+
* values[5] = 9;
|
|
1718
|
+
*
|
|
1719
|
+
* thrust::device_vector<bool> output(6);
|
|
1720
|
+
*
|
|
1721
|
+
* thrust::binary_search(input.begin(), input.end(),
|
|
1722
|
+
* values.begin(), values.end(),
|
|
1723
|
+
* output.begin());
|
|
1724
|
+
*
|
|
1725
|
+
* // output is now [true, false, true, false, true, false]
|
|
1726
|
+
* \endcode
|
|
1727
|
+
*
|
|
1728
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/binary_search
|
|
1729
|
+
* \see \p lower_bound
|
|
1730
|
+
* \see \p upper_bound
|
|
1731
|
+
* \see \p equal_range
|
|
1732
|
+
*/
|
|
1733
|
+
template <class ForwardIterator, class InputIterator, class OutputIterator>
|
|
1734
|
+
OutputIterator binary_search(
|
|
1735
|
+
ForwardIterator first,
|
|
1736
|
+
ForwardIterator last,
|
|
1737
|
+
InputIterator values_first,
|
|
1738
|
+
InputIterator values_last,
|
|
1739
|
+
OutputIterator result);
|
|
1740
|
+
|
|
1741
|
+
/*! \p binary_search is a vectorized version of binary search: for each
|
|
1742
|
+
* iterator \c v in <tt>[values_first, values_last)</tt> it attempts to
|
|
1743
|
+
* find the value <tt>*v</tt> in an ordered range <tt>[first, last)</tt>.
|
|
1744
|
+
* It returns \c true if an element that is equivalent to \c value
|
|
1745
|
+
* is present in <tt>[first, last)</tt> and \c false if no such element
|
|
1746
|
+
* exists. This version of \p binary_search uses function object
|
|
1747
|
+
* \c comp for comparison.
|
|
1748
|
+
*
|
|
1749
|
+
* The algorithm's execution is parallelized as determined by \p exec.
|
|
1750
|
+
*
|
|
1751
|
+
* \param exec The execution policy to use for parallelization.
|
|
1752
|
+
* \param first The beginning of the ordered sequence.
|
|
1753
|
+
* \param last The end of the ordered sequence.
|
|
1754
|
+
* \param values_first The beginning of the search values sequence.
|
|
1755
|
+
* \param values_last The end of the search values sequence.
|
|
1756
|
+
* \param result The beginning of the output sequence.
|
|
1757
|
+
* \param comp The comparison operator.
|
|
1758
|
+
*
|
|
1759
|
+
* \tparam DerivedPolicy The name of the derived execution policy.
|
|
1760
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
1761
|
+
* Iterator</a>. \tparam InputIterator is a model of <a
|
|
1762
|
+
* href="https://en.cppreference.com/w/cpp/iterator/input_iterator">Input Iterator</a>. and \c InputIterator's \c
|
|
1763
|
+
* value_type is <a href="https://en.cppreference.com/w/cpp/named_req/LessThanComparable">LessThanComparable</a>.
|
|
1764
|
+
* \tparam OutputIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/output_iterator">Output
|
|
1765
|
+
* Iterator</a>. and bool is convertible to \c OutputIterator's \c value_type. \tparam StrictWeakOrdering is a model of
|
|
1766
|
+
* <a href="https://en.cppreference.com/w/cpp/concepts/strict_weak_order">Strict Weak Ordering</a>.
|
|
1767
|
+
*
|
|
1768
|
+
* \pre The ranges <tt>[first,last)</tt> and <tt>[result, result + (last - first))</tt> shall not overlap.
|
|
1769
|
+
*
|
|
1770
|
+
* The following code snippet demonstrates how to use \p binary_search
|
|
1771
|
+
* to search for multiple values in a ordered range using the \p thrust::device execution policy for
|
|
1772
|
+
* parallelization:
|
|
1773
|
+
*
|
|
1774
|
+
* \code
|
|
1775
|
+
* #include <thrust/binary_search.h>
|
|
1776
|
+
* #include <thrust/device_vector.h>
|
|
1777
|
+
* #include <thrust/functional.h>
|
|
1778
|
+
* #include <thrust/execution_policy.h>
|
|
1779
|
+
* ...
|
|
1780
|
+
* thrust::device_vector<int> input(5);
|
|
1781
|
+
*
|
|
1782
|
+
* input[0] = 0;
|
|
1783
|
+
* input[1] = 2;
|
|
1784
|
+
* input[2] = 5;
|
|
1785
|
+
* input[3] = 7;
|
|
1786
|
+
* input[4] = 8;
|
|
1787
|
+
*
|
|
1788
|
+
* thrust::device_vector<int> values(6);
|
|
1789
|
+
* values[0] = 0;
|
|
1790
|
+
* values[1] = 1;
|
|
1791
|
+
* values[2] = 2;
|
|
1792
|
+
* values[3] = 3;
|
|
1793
|
+
* values[4] = 8;
|
|
1794
|
+
* values[5] = 9;
|
|
1795
|
+
*
|
|
1796
|
+
* thrust::device_vector<bool> output(6);
|
|
1797
|
+
*
|
|
1798
|
+
* thrust::binary_search(thrust::device,
|
|
1799
|
+
* input.begin(), input.end(),
|
|
1800
|
+
* values.begin(), values.end(),
|
|
1801
|
+
* output.begin(),
|
|
1802
|
+
* ::cuda::std::less<T>());
|
|
1803
|
+
*
|
|
1804
|
+
* // output is now [true, false, true, false, true, false]
|
|
1805
|
+
* \endcode
|
|
1806
|
+
*
|
|
1807
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/binary_search
|
|
1808
|
+
* \see \p lower_bound
|
|
1809
|
+
* \see \p upper_bound
|
|
1810
|
+
* \see \p equal_range
|
|
1811
|
+
*/
|
|
1812
|
+
template <typename DerivedPolicy,
|
|
1813
|
+
typename ForwardIterator,
|
|
1814
|
+
typename InputIterator,
|
|
1815
|
+
typename OutputIterator,
|
|
1816
|
+
typename StrictWeakOrdering>
|
|
1817
|
+
_CCCL_HOST_DEVICE OutputIterator binary_search(
|
|
1818
|
+
const thrust::detail::execution_policy_base<DerivedPolicy>& exec,
|
|
1819
|
+
ForwardIterator first,
|
|
1820
|
+
ForwardIterator last,
|
|
1821
|
+
InputIterator values_first,
|
|
1822
|
+
InputIterator values_last,
|
|
1823
|
+
OutputIterator result,
|
|
1824
|
+
StrictWeakOrdering comp);
|
|
1825
|
+
|
|
1826
|
+
/*! \p binary_search is a vectorized version of binary search: for each
|
|
1827
|
+
* iterator \c v in <tt>[values_first, values_last)</tt> it attempts to
|
|
1828
|
+
* find the value <tt>*v</tt> in an ordered range <tt>[first, last)</tt>.
|
|
1829
|
+
* It returns \c true if an element that is equivalent to \c value
|
|
1830
|
+
* is present in <tt>[first, last)</tt> and \c false if no such element
|
|
1831
|
+
* exists. This version of \p binary_search uses function object
|
|
1832
|
+
* \c comp for comparison.
|
|
1833
|
+
*
|
|
1834
|
+
* \param first The beginning of the ordered sequence.
|
|
1835
|
+
* \param last The end of the ordered sequence.
|
|
1836
|
+
* \param values_first The beginning of the search values sequence.
|
|
1837
|
+
* \param values_last The end of the search values sequence.
|
|
1838
|
+
* \param result The beginning of the output sequence.
|
|
1839
|
+
* \param comp The comparison operator.
|
|
1840
|
+
*
|
|
1841
|
+
* \tparam ForwardIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/forward_iterator">Forward
|
|
1842
|
+
* Iterator</a>. \tparam InputIterator is a model of <a
|
|
1843
|
+
* href="https://en.cppreference.com/w/cpp/iterator/input_iterator">Input Iterator</a>. and \c InputIterator's \c
|
|
1844
|
+
* value_type is <a href="https://en.cppreference.com/w/cpp/named_req/LessThanComparable">LessThanComparable</a>.
|
|
1845
|
+
* \tparam OutputIterator is a model of <a href="https://en.cppreference.com/w/cpp/iterator/output_iterator">Output
|
|
1846
|
+
* Iterator</a>. and bool is convertible to \c OutputIterator's \c value_type. \tparam StrictWeakOrdering is a model of
|
|
1847
|
+
* <a href="https://en.cppreference.com/w/cpp/concepts/strict_weak_order">Strict Weak Ordering</a>.
|
|
1848
|
+
*
|
|
1849
|
+
* \pre The ranges <tt>[first,last)</tt> and <tt>[result, result + (last - first))</tt> shall not overlap.
|
|
1850
|
+
*
|
|
1851
|
+
* The following code snippet demonstrates how to use \p binary_search
|
|
1852
|
+
* to search for multiple values in a ordered range.
|
|
1853
|
+
*
|
|
1854
|
+
* \code
|
|
1855
|
+
* #include <thrust/binary_search.h>
|
|
1856
|
+
* #include <thrust/device_vector.h>
|
|
1857
|
+
* #include <thrust/functional.h>
|
|
1858
|
+
* ...
|
|
1859
|
+
* thrust::device_vector<int> input(5);
|
|
1860
|
+
*
|
|
1861
|
+
* input[0] = 0;
|
|
1862
|
+
* input[1] = 2;
|
|
1863
|
+
* input[2] = 5;
|
|
1864
|
+
* input[3] = 7;
|
|
1865
|
+
* input[4] = 8;
|
|
1866
|
+
*
|
|
1867
|
+
* thrust::device_vector<int> values(6);
|
|
1868
|
+
* values[0] = 0;
|
|
1869
|
+
* values[1] = 1;
|
|
1870
|
+
* values[2] = 2;
|
|
1871
|
+
* values[3] = 3;
|
|
1872
|
+
* values[4] = 8;
|
|
1873
|
+
* values[5] = 9;
|
|
1874
|
+
*
|
|
1875
|
+
* thrust::device_vector<bool> output(6);
|
|
1876
|
+
*
|
|
1877
|
+
* thrust::binary_search(input.begin(), input.end(),
|
|
1878
|
+
* values.begin(), values.end(),
|
|
1879
|
+
* output.begin(),
|
|
1880
|
+
* ::cuda::std::less<T>());
|
|
1881
|
+
*
|
|
1882
|
+
* // output is now [true, false, true, false, true, false]
|
|
1883
|
+
* \endcode
|
|
1884
|
+
*
|
|
1885
|
+
* \see https://en.cppreference.com/w/cpp/algorithm/binary_search
|
|
1886
|
+
* \see \p lower_bound
|
|
1887
|
+
* \see \p upper_bound
|
|
1888
|
+
* \see \p equal_range
|
|
1889
|
+
*/
|
|
1890
|
+
template <class ForwardIterator, class InputIterator, class OutputIterator, class StrictWeakOrdering>
|
|
1891
|
+
OutputIterator binary_search(
|
|
1892
|
+
ForwardIterator first,
|
|
1893
|
+
ForwardIterator last,
|
|
1894
|
+
InputIterator values_first,
|
|
1895
|
+
InputIterator values_last,
|
|
1896
|
+
OutputIterator result,
|
|
1897
|
+
StrictWeakOrdering comp);
|
|
1898
|
+
|
|
1899
|
+
/*! \} // end vectorized_binary_search
|
|
1900
|
+
*/
|
|
1901
|
+
|
|
1902
|
+
/*! \} // end binary_search
|
|
1903
|
+
*/
|
|
1904
|
+
|
|
1905
|
+
/*! \} // end searching
|
|
1906
|
+
*/
|
|
1907
|
+
|
|
1908
|
+
THRUST_NAMESPACE_END
|
|
1909
|
+
|
|
1910
|
+
#include <thrust/detail/binary_search.inl>
|