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