cuda-cccl 0.3.0__cp311-cp311-manylinux_2_24_aarch64.whl → 0.3.2__cp311-cp311-manylinux_2_24_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of cuda-cccl might be problematic. Click here for more details.

Files changed (294) hide show
  1. cuda/cccl/cooperative/__init__.py +7 -1
  2. cuda/cccl/cooperative/experimental/__init__.py +21 -5
  3. cuda/cccl/headers/include/cub/agent/agent_adjacent_difference.cuh +2 -5
  4. cuda/cccl/headers/include/cub/agent/agent_batch_memcpy.cuh +2 -5
  5. cuda/cccl/headers/include/cub/agent/agent_for.cuh +2 -5
  6. cuda/cccl/headers/include/cub/agent/agent_histogram.cuh +354 -572
  7. cuda/cccl/headers/include/cub/agent/agent_merge.cuh +23 -21
  8. cuda/cccl/headers/include/cub/agent/agent_merge_sort.cuh +21 -3
  9. cuda/cccl/headers/include/cub/agent/agent_radix_sort_downsweep.cuh +2 -5
  10. cuda/cccl/headers/include/cub/agent/agent_radix_sort_histogram.cuh +2 -5
  11. cuda/cccl/headers/include/cub/agent/agent_radix_sort_onesweep.cuh +2 -5
  12. cuda/cccl/headers/include/cub/agent/agent_radix_sort_upsweep.cuh +2 -5
  13. cuda/cccl/headers/include/cub/agent/agent_rle.cuh +2 -5
  14. cuda/cccl/headers/include/cub/agent/agent_scan.cuh +5 -1
  15. cuda/cccl/headers/include/cub/agent/agent_scan_by_key.cuh +2 -5
  16. cuda/cccl/headers/include/cub/agent/agent_segmented_radix_sort.cuh +2 -5
  17. cuda/cccl/headers/include/cub/agent/agent_select_if.cuh +2 -5
  18. cuda/cccl/headers/include/cub/agent/agent_sub_warp_merge_sort.cuh +2 -5
  19. cuda/cccl/headers/include/cub/agent/agent_three_way_partition.cuh +2 -5
  20. cuda/cccl/headers/include/cub/agent/agent_unique_by_key.cuh +22 -5
  21. cuda/cccl/headers/include/cub/block/block_adjacent_difference.cuh +6 -8
  22. cuda/cccl/headers/include/cub/block/block_discontinuity.cuh +24 -14
  23. cuda/cccl/headers/include/cub/block/block_exchange.cuh +5 -0
  24. cuda/cccl/headers/include/cub/block/block_histogram.cuh +4 -0
  25. cuda/cccl/headers/include/cub/block/block_load.cuh +4 -0
  26. cuda/cccl/headers/include/cub/block/block_radix_rank.cuh +4 -2
  27. cuda/cccl/headers/include/cub/block/block_radix_sort.cuh +4 -2
  28. cuda/cccl/headers/include/cub/block/block_reduce.cuh +1 -0
  29. cuda/cccl/headers/include/cub/block/block_scan.cuh +12 -2
  30. cuda/cccl/headers/include/cub/block/block_store.cuh +3 -2
  31. cuda/cccl/headers/include/cub/detail/device_memory_resource.cuh +1 -0
  32. cuda/cccl/headers/include/cub/detail/mdspan_utils.cuh +34 -30
  33. cuda/cccl/headers/include/cub/detail/ptx-json-parser.h +1 -1
  34. cuda/cccl/headers/include/cub/device/device_for.cuh +118 -40
  35. cuda/cccl/headers/include/cub/device/device_reduce.cuh +6 -7
  36. cuda/cccl/headers/include/cub/device/device_segmented_reduce.cuh +170 -260
  37. cuda/cccl/headers/include/cub/device/device_transform.cuh +122 -91
  38. cuda/cccl/headers/include/cub/device/dispatch/dispatch_merge.cuh +6 -7
  39. cuda/cccl/headers/include/cub/device/dispatch/dispatch_radix_sort.cuh +2 -11
  40. cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce.cuh +12 -29
  41. cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce_deterministic.cuh +2 -7
  42. cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce_nondeterministic.cuh +0 -1
  43. cuda/cccl/headers/include/cub/device/dispatch/dispatch_segmented_sort.cuh +2 -3
  44. cuda/cccl/headers/include/cub/device/dispatch/dispatch_streaming_reduce.cuh +4 -5
  45. cuda/cccl/headers/include/cub/device/dispatch/dispatch_streaming_reduce_by_key.cuh +0 -1
  46. cuda/cccl/headers/include/cub/device/dispatch/dispatch_topk.cuh +3 -5
  47. cuda/cccl/headers/include/cub/device/dispatch/dispatch_transform.cuh +13 -5
  48. cuda/cccl/headers/include/cub/device/dispatch/kernels/for_each.cuh +72 -37
  49. cuda/cccl/headers/include/cub/device/dispatch/kernels/reduce.cuh +2 -5
  50. cuda/cccl/headers/include/cub/device/dispatch/kernels/scan.cuh +2 -5
  51. cuda/cccl/headers/include/cub/device/dispatch/kernels/segmented_reduce.cuh +2 -5
  52. cuda/cccl/headers/include/cub/device/dispatch/kernels/transform.cuh +22 -27
  53. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_adjacent_difference.cuh +2 -5
  54. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_batch_memcpy.cuh +2 -5
  55. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_for.cuh +2 -5
  56. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_histogram.cuh +2 -5
  57. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_merge.cuh +2 -5
  58. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_merge_sort.cuh +8 -0
  59. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_radix_sort.cuh +2 -5
  60. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_reduce_by_key.cuh +2 -5
  61. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_run_length_encode.cuh +2 -5
  62. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_scan.cuh +2 -5
  63. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_scan_by_key.cuh +2 -5
  64. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_segmented_sort.cuh +2 -5
  65. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_three_way_partition.cuh +2 -5
  66. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_transform.cuh +61 -70
  67. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_unique_by_key.cuh +10 -0
  68. cuda/cccl/headers/include/cub/thread/thread_reduce.cuh +24 -17
  69. cuda/cccl/headers/include/cub/warp/specializations/warp_reduce_shfl.cuh +3 -2
  70. cuda/cccl/headers/include/cub/warp/specializations/warp_reduce_smem.cuh +3 -2
  71. cuda/cccl/headers/include/cub/warp/specializations/warp_scan_shfl.cuh +2 -2
  72. cuda/cccl/headers/include/cub/warp/warp_load.cuh +6 -6
  73. cuda/cccl/headers/include/cub/warp/warp_reduce.cuh +7 -2
  74. cuda/cccl/headers/include/cub/warp/warp_scan.cuh +7 -3
  75. cuda/cccl/headers/include/cub/warp/warp_store.cuh +1 -0
  76. cuda/cccl/headers/include/cuda/__algorithm/common.h +1 -1
  77. cuda/cccl/headers/include/cuda/__algorithm/copy.h +1 -1
  78. cuda/cccl/headers/include/cuda/__algorithm/fill.h +1 -1
  79. cuda/cccl/headers/include/cuda/__barrier/barrier_block_scope.h +19 -0
  80. cuda/cccl/headers/include/cuda/__cccl_config +1 -0
  81. cuda/cccl/headers/include/cuda/__cmath/fast_modulo_division.h +3 -74
  82. cuda/cccl/headers/include/cuda/__cmath/mul_hi.h +146 -0
  83. cuda/cccl/headers/include/cuda/__complex/get_real_imag.h +0 -4
  84. cuda/cccl/headers/include/cuda/__device/all_devices.h +46 -143
  85. cuda/cccl/headers/include/cuda/__device/arch_id.h +176 -0
  86. cuda/cccl/headers/include/cuda/__device/arch_traits.h +247 -323
  87. cuda/cccl/headers/include/cuda/__device/attributes.h +174 -123
  88. cuda/cccl/headers/include/cuda/__device/compute_capability.h +171 -0
  89. cuda/cccl/headers/include/cuda/__device/device_ref.h +27 -49
  90. cuda/cccl/headers/include/cuda/__device/physical_device.h +100 -96
  91. cuda/cccl/headers/include/cuda/__driver/driver_api.h +105 -3
  92. cuda/cccl/headers/include/cuda/__event/event.h +27 -26
  93. cuda/cccl/headers/include/cuda/__event/event_ref.h +5 -5
  94. cuda/cccl/headers/include/cuda/__event/timed_event.h +10 -7
  95. cuda/cccl/headers/include/cuda/__fwd/devices.h +44 -0
  96. cuda/cccl/headers/include/cuda/__fwd/zip_iterator.h +9 -0
  97. cuda/cccl/headers/include/cuda/__iterator/constant_iterator.h +46 -31
  98. cuda/cccl/headers/include/cuda/__iterator/strided_iterator.h +79 -47
  99. cuda/cccl/headers/include/cuda/__iterator/tabulate_output_iterator.h +59 -36
  100. cuda/cccl/headers/include/cuda/__iterator/transform_input_output_iterator.h +79 -49
  101. cuda/cccl/headers/include/cuda/__iterator/transform_iterator.h +74 -48
  102. cuda/cccl/headers/include/cuda/__iterator/transform_output_iterator.h +80 -55
  103. cuda/cccl/headers/include/cuda/__iterator/zip_common.h +148 -0
  104. cuda/cccl/headers/include/cuda/__iterator/zip_iterator.h +21 -137
  105. cuda/cccl/headers/include/cuda/__iterator/zip_transform_iterator.h +592 -0
  106. cuda/cccl/headers/include/cuda/__mdspan/host_device_accessor.h +127 -60
  107. cuda/cccl/headers/include/cuda/__mdspan/host_device_mdspan.h +178 -3
  108. cuda/cccl/headers/include/cuda/__mdspan/restrict_accessor.h +38 -8
  109. cuda/cccl/headers/include/cuda/__mdspan/restrict_mdspan.h +67 -1
  110. cuda/cccl/headers/include/cuda/__memory/ptr_in_range.h +93 -0
  111. cuda/cccl/headers/include/cuda/__memory_resource/get_memory_resource.h +4 -4
  112. cuda/cccl/headers/include/cuda/__memory_resource/properties.h +44 -0
  113. cuda/cccl/headers/include/cuda/__memory_resource/resource.h +1 -1
  114. cuda/cccl/headers/include/cuda/__memory_resource/resource_ref.h +4 -6
  115. cuda/cccl/headers/include/cuda/__nvtx/nvtx3.h +2 -1
  116. cuda/cccl/headers/include/cuda/__runtime/ensure_current_context.h +9 -7
  117. cuda/cccl/headers/include/cuda/__stream/stream.h +8 -8
  118. cuda/cccl/headers/include/cuda/__stream/stream_ref.h +18 -16
  119. cuda/cccl/headers/include/cuda/__utility/basic_any.h +1 -1
  120. cuda/cccl/headers/include/cuda/__utility/in_range.h +65 -0
  121. cuda/cccl/headers/include/cuda/algorithm +1 -1
  122. cuda/cccl/headers/include/cuda/cmath +1 -0
  123. cuda/cccl/headers/include/cuda/devices +13 -0
  124. cuda/cccl/headers/include/cuda/iterator +1 -0
  125. cuda/cccl/headers/include/cuda/memory +1 -0
  126. cuda/cccl/headers/include/cuda/std/__algorithm/equal_range.h +2 -2
  127. cuda/cccl/headers/include/cuda/std/__algorithm/find.h +1 -1
  128. cuda/cccl/headers/include/cuda/std/__algorithm/includes.h +2 -4
  129. cuda/cccl/headers/include/cuda/std/__algorithm/lower_bound.h +1 -1
  130. cuda/cccl/headers/include/cuda/std/__algorithm/make_projected.h +7 -15
  131. cuda/cccl/headers/include/cuda/std/__algorithm/min_element.h +1 -1
  132. cuda/cccl/headers/include/cuda/std/__algorithm/minmax_element.h +1 -2
  133. cuda/cccl/headers/include/cuda/std/__algorithm/partial_sort_copy.h +2 -2
  134. cuda/cccl/headers/include/cuda/std/__algorithm/upper_bound.h +1 -1
  135. cuda/cccl/headers/include/cuda/std/__bit/countl.h +8 -1
  136. cuda/cccl/headers/include/cuda/std/__bit/countr.h +2 -2
  137. cuda/cccl/headers/include/cuda/std/__bit/reference.h +11 -11
  138. cuda/cccl/headers/include/cuda/std/__cccl/algorithm_wrapper.h +36 -0
  139. cuda/cccl/headers/include/cuda/std/__cccl/builtin.h +46 -49
  140. cuda/cccl/headers/include/cuda/std/__cccl/execution_space.h +6 -0
  141. cuda/cccl/headers/include/cuda/std/__cccl/host_std_lib.h +52 -0
  142. cuda/cccl/headers/include/cuda/std/__cccl/memory_wrapper.h +36 -0
  143. cuda/cccl/headers/include/cuda/std/__cccl/numeric_wrapper.h +36 -0
  144. cuda/cccl/headers/include/cuda/std/__chrono/duration.h +16 -16
  145. cuda/cccl/headers/include/cuda/std/__chrono/steady_clock.h +5 -5
  146. cuda/cccl/headers/include/cuda/std/__chrono/system_clock.h +5 -5
  147. cuda/cccl/headers/include/cuda/std/__cmath/isnan.h +3 -2
  148. cuda/cccl/headers/include/cuda/std/__complex/complex.h +3 -2
  149. cuda/cccl/headers/include/cuda/std/__complex/literals.h +14 -34
  150. cuda/cccl/headers/include/cuda/std/__complex/nvbf16.h +2 -1
  151. cuda/cccl/headers/include/cuda/std/__complex/nvfp16.h +4 -3
  152. cuda/cccl/headers/include/cuda/std/__concepts/invocable.h +2 -2
  153. cuda/cccl/headers/include/cuda/std/__cstdlib/malloc.h +3 -2
  154. cuda/cccl/headers/include/cuda/std/__floating_point/fp.h +1 -1
  155. cuda/cccl/headers/include/cuda/std/__functional/bind.h +10 -13
  156. cuda/cccl/headers/include/cuda/std/__functional/function.h +5 -8
  157. cuda/cccl/headers/include/cuda/std/__functional/invoke.h +71 -335
  158. cuda/cccl/headers/include/cuda/std/__functional/mem_fn.h +1 -2
  159. cuda/cccl/headers/include/cuda/std/__functional/reference_wrapper.h +3 -3
  160. cuda/cccl/headers/include/cuda/std/__functional/weak_result_type.h +0 -6
  161. cuda/cccl/headers/include/cuda/std/__fwd/allocator.h +13 -0
  162. cuda/cccl/headers/include/cuda/std/__fwd/char_traits.h +13 -0
  163. cuda/cccl/headers/include/cuda/std/__fwd/complex.h +13 -4
  164. cuda/cccl/headers/include/cuda/std/__fwd/mdspan.h +23 -0
  165. cuda/cccl/headers/include/cuda/std/__fwd/pair.h +13 -0
  166. cuda/cccl/headers/include/cuda/std/__fwd/string.h +22 -0
  167. cuda/cccl/headers/include/cuda/std/__fwd/string_view.h +14 -0
  168. cuda/cccl/headers/include/cuda/std/__internal/features.h +0 -5
  169. cuda/cccl/headers/include/cuda/std/__internal/namespaces.h +21 -0
  170. cuda/cccl/headers/include/cuda/std/__iterator/iterator_traits.h +5 -5
  171. cuda/cccl/headers/include/cuda/std/__mdspan/extents.h +7 -1
  172. cuda/cccl/headers/include/cuda/std/__mdspan/mdspan.h +53 -39
  173. cuda/cccl/headers/include/cuda/std/__memory/allocator.h +3 -3
  174. cuda/cccl/headers/include/cuda/std/__memory/construct_at.h +1 -3
  175. cuda/cccl/headers/include/cuda/std/__optional/optional_base.h +1 -0
  176. cuda/cccl/headers/include/cuda/std/__ranges/compressed_movable_box.h +892 -0
  177. cuda/cccl/headers/include/cuda/std/__ranges/movable_box.h +2 -2
  178. cuda/cccl/headers/include/cuda/std/__tuple_dir/make_tuple_types.h +23 -1
  179. cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_like.h +4 -0
  180. cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_like_ext.h +4 -0
  181. cuda/cccl/headers/include/cuda/std/__type_traits/is_primary_template.h +7 -5
  182. cuda/cccl/headers/include/cuda/std/__type_traits/result_of.h +1 -1
  183. cuda/cccl/headers/include/cuda/std/__utility/pair.h +0 -5
  184. cuda/cccl/headers/include/cuda/std/bitset +1 -1
  185. cuda/cccl/headers/include/cuda/std/detail/libcxx/include/__config +15 -12
  186. cuda/cccl/headers/include/cuda/std/detail/libcxx/include/variant +11 -9
  187. cuda/cccl/headers/include/cuda/std/inplace_vector +4 -4
  188. cuda/cccl/headers/include/cuda/std/numbers +5 -0
  189. cuda/cccl/headers/include/cuda/std/string_view +155 -13
  190. cuda/cccl/headers/include/cuda/std/version +1 -4
  191. cuda/cccl/headers/include/cuda/stream_ref +5 -0
  192. cuda/cccl/headers/include/cuda/utility +1 -0
  193. cuda/cccl/headers/include/nv/target +7 -2
  194. cuda/cccl/headers/include/thrust/allocate_unique.h +1 -1
  195. cuda/cccl/headers/include/thrust/detail/allocator/allocator_traits.h +309 -33
  196. cuda/cccl/headers/include/thrust/detail/allocator/copy_construct_range.h +151 -4
  197. cuda/cccl/headers/include/thrust/detail/allocator/destroy_range.h +60 -3
  198. cuda/cccl/headers/include/thrust/detail/allocator/fill_construct_range.h +45 -3
  199. cuda/cccl/headers/include/thrust/detail/allocator/malloc_allocator.h +31 -6
  200. cuda/cccl/headers/include/thrust/detail/allocator/tagged_allocator.h +29 -16
  201. cuda/cccl/headers/include/thrust/detail/allocator/temporary_allocator.h +41 -4
  202. cuda/cccl/headers/include/thrust/detail/allocator/value_initialize_range.h +42 -4
  203. cuda/cccl/headers/include/thrust/detail/complex/ccosh.h +3 -3
  204. cuda/cccl/headers/include/thrust/detail/integer_math.h +3 -20
  205. cuda/cccl/headers/include/thrust/detail/internal_functional.h +1 -1
  206. cuda/cccl/headers/include/thrust/detail/memory_algorithms.h +1 -1
  207. cuda/cccl/headers/include/thrust/detail/temporary_array.h +1 -1
  208. cuda/cccl/headers/include/thrust/detail/type_traits.h +1 -1
  209. cuda/cccl/headers/include/thrust/device_delete.h +18 -3
  210. cuda/cccl/headers/include/thrust/device_free.h +16 -3
  211. cuda/cccl/headers/include/thrust/device_new.h +29 -8
  212. cuda/cccl/headers/include/thrust/host_vector.h +1 -1
  213. cuda/cccl/headers/include/thrust/iterator/iterator_traits.h +11 -0
  214. cuda/cccl/headers/include/thrust/iterator/tabulate_output_iterator.h +5 -2
  215. cuda/cccl/headers/include/thrust/mr/disjoint_pool.h +1 -1
  216. cuda/cccl/headers/include/thrust/mr/pool.h +1 -1
  217. cuda/cccl/headers/include/thrust/system/cuda/detail/copy.h +33 -0
  218. cuda/cccl/headers/include/thrust/system/cuda/detail/find.h +13 -115
  219. cuda/cccl/headers/include/thrust/system/cuda/detail/mismatch.h +8 -2
  220. cuda/cccl/headers/include/thrust/type_traits/is_contiguous_iterator.h +7 -7
  221. cuda/cccl/parallel/experimental/__init__.py +21 -74
  222. cuda/compute/__init__.py +79 -0
  223. cuda/{cccl/parallel/experimental → compute}/_bindings.pyi +43 -1
  224. cuda/{cccl/parallel/experimental → compute}/_bindings_impl.pyx +157 -8
  225. cuda/{cccl/parallel/experimental → compute}/algorithms/_histogram.py +2 -2
  226. cuda/{cccl/parallel/experimental → compute}/algorithms/_merge_sort.py +2 -2
  227. cuda/{cccl/parallel/experimental → compute}/algorithms/_radix_sort.py +3 -3
  228. cuda/{cccl/parallel/experimental → compute}/algorithms/_reduce.py +2 -2
  229. cuda/{cccl/parallel/experimental → compute}/algorithms/_scan.py +112 -40
  230. cuda/{cccl/parallel/experimental → compute}/algorithms/_segmented_reduce.py +2 -2
  231. cuda/{cccl/parallel/experimental → compute}/algorithms/_three_way_partition.py +2 -2
  232. cuda/{cccl/parallel/experimental → compute}/algorithms/_transform.py +36 -15
  233. cuda/{cccl/parallel/experimental → compute}/algorithms/_unique_by_key.py +2 -2
  234. cuda/compute/cu12/_bindings_impl.cpython-311-aarch64-linux-gnu.so +0 -0
  235. cuda/{cccl/parallel/experimental → compute}/cu12/cccl/libcccl.c.parallel.so +0 -0
  236. cuda/compute/cu13/_bindings_impl.cpython-311-aarch64-linux-gnu.so +0 -0
  237. cuda/{cccl/parallel/experimental → compute}/cu13/cccl/libcccl.c.parallel.so +0 -0
  238. cuda/{cccl/parallel/experimental → compute}/iterators/__init__.py +2 -0
  239. cuda/{cccl/parallel/experimental → compute}/iterators/_factories.py +36 -8
  240. cuda/{cccl/parallel/experimental → compute}/iterators/_iterators.py +206 -1
  241. cuda/{cccl/parallel/experimental → compute}/numba_utils.py +2 -2
  242. cuda/{cccl/parallel/experimental → compute}/struct.py +2 -2
  243. cuda/{cccl/parallel/experimental → compute}/typing.py +2 -0
  244. cuda/coop/__init__.py +8 -0
  245. cuda/{cccl/cooperative/experimental → coop}/_nvrtc.py +3 -2
  246. cuda/{cccl/cooperative/experimental → coop}/_scan_op.py +3 -3
  247. cuda/{cccl/cooperative/experimental → coop}/_types.py +2 -2
  248. cuda/{cccl/cooperative/experimental → coop}/_typing.py +1 -1
  249. cuda/{cccl/cooperative/experimental → coop}/block/__init__.py +6 -6
  250. cuda/{cccl/cooperative/experimental → coop}/block/_block_exchange.py +4 -4
  251. cuda/{cccl/cooperative/experimental → coop}/block/_block_load_store.py +6 -6
  252. cuda/{cccl/cooperative/experimental → coop}/block/_block_merge_sort.py +4 -4
  253. cuda/{cccl/cooperative/experimental → coop}/block/_block_radix_sort.py +6 -6
  254. cuda/{cccl/cooperative/experimental → coop}/block/_block_reduce.py +6 -6
  255. cuda/{cccl/cooperative/experimental → coop}/block/_block_scan.py +7 -7
  256. cuda/coop/warp/__init__.py +9 -0
  257. cuda/{cccl/cooperative/experimental → coop}/warp/_warp_merge_sort.py +3 -3
  258. cuda/{cccl/cooperative/experimental → coop}/warp/_warp_reduce.py +6 -6
  259. cuda/{cccl/cooperative/experimental → coop}/warp/_warp_scan.py +4 -4
  260. {cuda_cccl-0.3.0.dist-info → cuda_cccl-0.3.2.dist-info}/METADATA +1 -1
  261. {cuda_cccl-0.3.0.dist-info → cuda_cccl-0.3.2.dist-info}/RECORD +275 -276
  262. cuda/cccl/cooperative/experimental/warp/__init__.py +0 -9
  263. cuda/cccl/headers/include/cub/device/dispatch/dispatch_advance_iterators.cuh +0 -111
  264. cuda/cccl/headers/include/thrust/detail/algorithm_wrapper.h +0 -37
  265. cuda/cccl/headers/include/thrust/detail/allocator/allocator_traits.inl +0 -371
  266. cuda/cccl/headers/include/thrust/detail/allocator/copy_construct_range.inl +0 -242
  267. cuda/cccl/headers/include/thrust/detail/allocator/destroy_range.inl +0 -137
  268. cuda/cccl/headers/include/thrust/detail/allocator/fill_construct_range.inl +0 -99
  269. cuda/cccl/headers/include/thrust/detail/allocator/malloc_allocator.inl +0 -68
  270. cuda/cccl/headers/include/thrust/detail/allocator/tagged_allocator.inl +0 -86
  271. cuda/cccl/headers/include/thrust/detail/allocator/temporary_allocator.inl +0 -79
  272. cuda/cccl/headers/include/thrust/detail/allocator/value_initialize_range.inl +0 -98
  273. cuda/cccl/headers/include/thrust/detail/device_delete.inl +0 -52
  274. cuda/cccl/headers/include/thrust/detail/device_free.inl +0 -47
  275. cuda/cccl/headers/include/thrust/detail/device_new.inl +0 -61
  276. cuda/cccl/headers/include/thrust/detail/memory_wrapper.h +0 -40
  277. cuda/cccl/headers/include/thrust/detail/numeric_wrapper.h +0 -37
  278. cuda/cccl/parallel/experimental/.gitignore +0 -4
  279. cuda/cccl/parallel/experimental/cu12/_bindings_impl.cpython-311-aarch64-linux-gnu.so +0 -0
  280. cuda/cccl/parallel/experimental/cu13/_bindings_impl.cpython-311-aarch64-linux-gnu.so +0 -0
  281. /cuda/{cccl/parallel/experimental → compute}/_bindings.py +0 -0
  282. /cuda/{cccl/parallel/experimental → compute}/_caching.py +0 -0
  283. /cuda/{cccl/parallel/experimental → compute}/_cccl_interop.py +0 -0
  284. /cuda/{cccl/parallel/experimental → compute}/_utils/__init__.py +0 -0
  285. /cuda/{cccl/parallel/experimental → compute}/_utils/protocols.py +0 -0
  286. /cuda/{cccl/parallel/experimental → compute}/_utils/temp_storage_buffer.py +0 -0
  287. /cuda/{cccl/parallel/experimental → compute}/algorithms/__init__.py +0 -0
  288. /cuda/{cccl/parallel/experimental → compute}/cccl/.gitkeep +0 -0
  289. /cuda/{cccl/parallel/experimental → compute}/iterators/_zip_iterator.py +0 -0
  290. /cuda/{cccl/parallel/experimental → compute}/op.py +0 -0
  291. /cuda/{cccl/cooperative/experimental → coop}/_caching.py +0 -0
  292. /cuda/{cccl/cooperative/experimental → coop}/_common.py +0 -0
  293. {cuda_cccl-0.3.0.dist-info → cuda_cccl-0.3.2.dist-info}/WHEEL +0 -0
  294. {cuda_cccl-0.3.0.dist-info → cuda_cccl-0.3.2.dist-info}/licenses/LICENSE +0 -0
@@ -1,9 +0,0 @@
1
- # Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. ALL RIGHTS RESERVED.
2
- #
3
- # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
4
-
5
- from cuda.cccl.cooperative.experimental.warp._warp_merge_sort import merge_sort_keys
6
- from cuda.cccl.cooperative.experimental.warp._warp_reduce import reduce, sum
7
- from cuda.cccl.cooperative.experimental.warp._warp_scan import exclusive_sum
8
-
9
- __all__ = ["exclusive_sum", "reduce", "sum", "merge_sort_keys"]
@@ -1,111 +0,0 @@
1
- // SPDX-FileCopyrightText: Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved.
2
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
3
-
4
- #pragma once
5
-
6
- #include <cub/config.cuh>
7
-
8
- #if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)
9
- # pragma GCC system_header
10
- #elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)
11
- # pragma clang system_header
12
- #elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)
13
- # pragma system_header
14
- #endif // no system header
15
-
16
- #include <cuda/std/__type_traits/integral_constant.h>
17
- #include <cuda/std/__type_traits/void_t.h>
18
- #include <cuda/std/__utility/declval.h>
19
-
20
- CUB_NAMESPACE_BEGIN
21
-
22
- namespace detail
23
- {
24
- template <typename T, typename U, typename = void>
25
- struct has_plus_operator : ::cuda::std::false_type
26
- {};
27
-
28
- template <typename T, typename U>
29
- struct has_plus_operator<T, U, ::cuda::std::void_t<decltype(::cuda::std::declval<T>() + ::cuda::std::declval<U>())>>
30
- : ::cuda::std::true_type
31
- {};
32
-
33
- template <typename T, typename U>
34
- constexpr bool has_plus_operator_v = has_plus_operator<T, U>::value;
35
-
36
- // Helper function that advances a given iterator only if it supports being advanced by the given offset
37
- template <typename IteratorT, typename OffsetT>
38
- CUB_RUNTIME_FUNCTION _CCCL_VISIBILITY_HIDDEN _CCCL_FORCEINLINE IteratorT
39
- advance_iterators_if_supported(IteratorT iter, [[maybe_unused]] OffsetT offset)
40
- {
41
- if constexpr (has_plus_operator_v<IteratorT, OffsetT>)
42
- {
43
- // If operator+ is valid, advance the iterator.
44
- return iter + offset;
45
- }
46
- else
47
- {
48
- // Otherwise, return iter unmodified.
49
- return iter;
50
- }
51
- }
52
-
53
- template <typename T, typename U, typename = void>
54
- struct has_add_assign_operator : ::cuda::std::false_type
55
- {};
56
-
57
- template <typename T, typename U>
58
- struct has_add_assign_operator<T,
59
- U,
60
- ::cuda::std::void_t<decltype(::cuda::std::declval<T&>() += ::cuda::std::declval<U>())>>
61
- : ::cuda::std::true_type
62
- {};
63
-
64
- template <typename T, typename U>
65
- constexpr bool has_add_assign_operator_v = has_add_assign_operator<T, U>::value;
66
-
67
- // Helper function that advances a given iterator only if it supports being advanced by the given offset
68
- template <typename IteratorT, typename OffsetT>
69
- CUB_RUNTIME_FUNCTION _CCCL_VISIBILITY_HIDDEN _CCCL_FORCEINLINE void
70
- advance_iterators_inplace_if_supported(IteratorT& iter, [[maybe_unused]] OffsetT offset)
71
- {
72
- if constexpr (has_add_assign_operator_v<IteratorT, OffsetT>)
73
- {
74
- // If operator+ is valid, advance the iterator.
75
- iter += offset;
76
- }
77
- }
78
-
79
- // Helper function that checks whether all of the given iterators support the + operator with the given offset
80
- template <typename OffsetT, typename... Iterators>
81
- CUB_RUNTIME_FUNCTION _CCCL_VISIBILITY_HIDDEN _CCCL_FORCEINLINE bool
82
- all_iterators_support_plus_operator(OffsetT /*offset*/, Iterators... /*iters*/)
83
- {
84
- if constexpr ((has_plus_operator_v<Iterators, OffsetT> && ...))
85
- {
86
- return true;
87
- }
88
- else
89
- {
90
- return false;
91
- }
92
- }
93
-
94
- // Helper function that checks whether all of the given iterators support the + operator with the given offset
95
- template <typename OffsetT, typename... Iterators>
96
- CUB_RUNTIME_FUNCTION _CCCL_VISIBILITY_HIDDEN _CCCL_FORCEINLINE bool
97
- all_iterators_support_add_assign_operator(OffsetT /*offset*/, Iterators... /*iters*/)
98
- {
99
- if constexpr ((has_add_assign_operator_v<Iterators, OffsetT> && ...))
100
- {
101
- return true;
102
- }
103
- else
104
- {
105
- return false;
106
- }
107
- }
108
-
109
- } // namespace detail
110
-
111
- CUB_NAMESPACE_END
@@ -1,37 +0,0 @@
1
- /*
2
- * Copyright 2020 NVIDIA Corporation
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
-
17
- #pragma once
18
-
19
- #include <thrust/detail/config.h>
20
-
21
- #if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)
22
- # pragma GCC system_header
23
- #elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)
24
- # pragma clang system_header
25
- #elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)
26
- # pragma system_header
27
- #endif // no system header
28
-
29
- // When a compiler uses Thrust as part of its implementation of Standard C++
30
- // algorithms, a cycle of included files may result when Thrust code tries to
31
- // use a standard algorithm. Having a macro that is defined only when Thrust
32
- // is including an algorithms-related header gives the compiler a chance to
33
- // detect and break the cycle of includes.
34
-
35
- #define THRUST_INCLUDING_ALGORITHMS_HEADER
36
- #include <algorithm>
37
- #undef THRUST_INCLUDING_ALGORITHMS_HEADER
@@ -1,371 +0,0 @@
1
- /*
2
- * Copyright 2008-2018 NVIDIA Corporation
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
-
17
- #pragma once
18
-
19
- #include <thrust/detail/config.h>
20
-
21
- #if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)
22
- # pragma GCC system_header
23
- #elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)
24
- # pragma clang system_header
25
- #elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)
26
- # pragma system_header
27
- #endif // no system header
28
- #include <thrust/detail/allocator/allocator_traits.h>
29
- #include <thrust/detail/memory_wrapper.h>
30
- #include <thrust/detail/type_deduction.h>
31
- #include <thrust/detail/type_traits/is_call_possible.h>
32
-
33
- #include <cuda/std/limits>
34
-
35
- #include <new>
36
-
37
- THRUST_NAMESPACE_BEGIN
38
- namespace detail
39
- {
40
-
41
- // std::allocator's member functions are deprecated in C++17 and removed in
42
- // C++20, so we can't just use the generic implementation for allocator_traits
43
- // that calls the allocator's member functions.
44
- // Instead, specialize allocator_traits for std::allocator and defer to
45
- // std::allocator_traits<std::allocator> and let the STL do whatever it needs
46
- // to for the current c++ version. Manually forward the calls to suppress
47
- // host/device warnings.
48
- template <typename T>
49
- struct allocator_traits<std::allocator<T>> : public std::allocator_traits<std::allocator<T>>
50
- {
51
- private:
52
- using superclass = std::allocator_traits<std::allocator<T>>;
53
-
54
- public:
55
- using allocator_type = typename superclass::allocator_type;
56
- using value_type = typename superclass::value_type;
57
- using pointer = typename superclass::pointer;
58
- using const_pointer = typename superclass::const_pointer;
59
- using void_pointer = typename superclass::void_pointer;
60
- using const_void_pointer = typename superclass::const_void_pointer;
61
- using difference_type = typename superclass::difference_type;
62
- using size_type = typename superclass::size_type;
63
- using propagate_on_container_swap = typename superclass::propagate_on_container_swap;
64
- using propagate_on_container_copy_assignment = typename superclass::propagate_on_container_copy_assignment;
65
- using propagate_on_container_move_assignment = typename superclass::propagate_on_container_move_assignment;
66
-
67
- // std::allocator_traits added this in C++17, but thrust::allocator_traits defines
68
- // it unconditionally.
69
- using is_always_equal =
70
- typename eval_if<allocator_traits_detail::has_is_always_equal<allocator_type>::value,
71
- allocator_traits_detail::nested_is_always_equal<allocator_type>,
72
- ::cuda::std::is_empty<allocator_type>>::type;
73
-
74
- // std::allocator_traits doesn't provide these, but
75
- // thrust::detail::allocator_traits does. These used to be part of the
76
- // std::allocator API but were deprecated in C++17.
77
- using reference = typename thrust::detail::pointer_traits<pointer>::reference;
78
- using const_reference = typename thrust::detail::pointer_traits<const_pointer>::reference;
79
-
80
- template <typename U>
81
- using rebind_alloc = std::allocator<U>;
82
- template <typename U>
83
- using rebind_traits = allocator_traits<std::allocator<U>>;
84
-
85
- _CCCL_EXEC_CHECK_DISABLE
86
- _CCCL_HOST_DEVICE static pointer allocate(allocator_type& a, size_type n)
87
- {
88
- return superclass::allocate(a, n);
89
- }
90
-
91
- _CCCL_EXEC_CHECK_DISABLE
92
- _CCCL_HOST_DEVICE static pointer allocate(allocator_type& a, size_type n, const_void_pointer hint)
93
- {
94
- return superclass::allocate(a, n, hint);
95
- }
96
-
97
- _CCCL_EXEC_CHECK_DISABLE
98
- _CCCL_HOST_DEVICE static void deallocate(allocator_type& a, pointer p, size_type n) noexcept
99
- {
100
- superclass::deallocate(a, p, n);
101
- }
102
-
103
- _CCCL_EXEC_CHECK_DISABLE
104
- template <typename U, typename... Args>
105
- _CCCL_HOST_DEVICE static void construct(allocator_type& a, U* p, Args&&... args)
106
- {
107
- superclass::construct(a, p, THRUST_FWD(args)...);
108
- }
109
-
110
- _CCCL_EXEC_CHECK_DISABLE
111
- template <typename U>
112
- _CCCL_HOST_DEVICE static void destroy(allocator_type& a, U* p) noexcept
113
- {
114
- superclass::destroy(a, p);
115
- }
116
-
117
- _CCCL_EXEC_CHECK_DISABLE
118
- _CCCL_HOST_DEVICE static size_type max_size(const allocator_type& a)
119
- {
120
- return superclass::max_size(a);
121
- }
122
- };
123
-
124
- namespace allocator_traits_detail
125
- {
126
-
127
- __THRUST_DEFINE_IS_CALL_POSSIBLE(has_member_allocate_with_hint_impl, allocate)
128
-
129
- template <typename Alloc>
130
- class has_member_allocate_with_hint
131
- {
132
- using pointer = typename allocator_traits<Alloc>::pointer;
133
- using size_type = typename allocator_traits<Alloc>::size_type;
134
- using const_void_pointer = typename allocator_traits<Alloc>::const_void_pointer;
135
-
136
- public:
137
- using type = typename has_member_allocate_with_hint_impl<Alloc, pointer(size_type, const_void_pointer)>::type;
138
- static const bool value = type::value;
139
- };
140
-
141
- template <typename Alloc>
142
- _CCCL_HOST_DEVICE ::cuda::std::enable_if_t<has_member_allocate_with_hint<Alloc>::value,
143
- typename allocator_traits<Alloc>::pointer>
144
- allocate(Alloc& a,
145
- typename allocator_traits<Alloc>::size_type n,
146
- typename allocator_traits<Alloc>::const_void_pointer hint)
147
- {
148
- return a.allocate(n, hint);
149
- }
150
-
151
- template <typename Alloc>
152
- _CCCL_HOST_DEVICE ::cuda::std::enable_if_t<!has_member_allocate_with_hint<Alloc>::value,
153
- typename allocator_traits<Alloc>::pointer>
154
- allocate(Alloc& a, typename allocator_traits<Alloc>::size_type n, typename allocator_traits<Alloc>::const_void_pointer)
155
- {
156
- return a.allocate(n);
157
- }
158
-
159
- __THRUST_DEFINE_IS_CALL_POSSIBLE(has_member_construct1_impl, construct)
160
-
161
- template <typename Alloc, typename T>
162
- struct has_member_construct1 : has_member_construct1_impl<Alloc, void(T*)>
163
- {};
164
-
165
- _CCCL_EXEC_CHECK_DISABLE
166
- template <typename Alloc, typename T>
167
- inline _CCCL_HOST_DEVICE ::cuda::std::enable_if_t<has_member_construct1<Alloc, T>::value> construct(Alloc& a, T* p)
168
- {
169
- a.construct(p);
170
- }
171
-
172
- _CCCL_EXEC_CHECK_DISABLE
173
- template <typename Alloc, typename T>
174
- inline _CCCL_HOST_DEVICE ::cuda::std::enable_if_t<!has_member_construct1<Alloc, T>::value> construct(Alloc&, T* p)
175
- {
176
- ::new (static_cast<void*>(p)) T();
177
- }
178
-
179
- __THRUST_DEFINE_IS_CALL_POSSIBLE(has_member_construct2_impl, construct)
180
-
181
- template <typename Alloc, typename T, typename Arg1>
182
- struct has_member_construct2 : has_member_construct2_impl<Alloc, void(T*, const Arg1&)>
183
- {};
184
-
185
- _CCCL_EXEC_CHECK_DISABLE
186
- template <typename Alloc, typename T, typename Arg1>
187
- inline _CCCL_HOST_DEVICE ::cuda::std::enable_if_t<has_member_construct2<Alloc, T, Arg1>::value>
188
- construct(Alloc& a, T* p, const Arg1& arg1)
189
- {
190
- a.construct(p, arg1);
191
- }
192
-
193
- _CCCL_EXEC_CHECK_DISABLE
194
- template <typename Alloc, typename T, typename Arg1>
195
- inline _CCCL_HOST_DEVICE ::cuda::std::enable_if_t<!has_member_construct2<Alloc, T, Arg1>::value>
196
- construct(Alloc&, T* p, const Arg1& arg1)
197
- {
198
- ::new (static_cast<void*>(p)) T(arg1);
199
- }
200
-
201
- __THRUST_DEFINE_IS_CALL_POSSIBLE(has_member_constructN_impl, construct)
202
-
203
- template <typename Alloc, typename T, typename... Args>
204
- struct has_member_constructN : has_member_constructN_impl<Alloc, void(T*, Args...)>
205
- {};
206
-
207
- _CCCL_EXEC_CHECK_DISABLE
208
- template <typename Alloc, typename T, typename... Args>
209
- inline _CCCL_HOST_DEVICE ::cuda::std::enable_if_t<has_member_constructN<Alloc, T, Args...>::value>
210
- construct(Alloc& a, T* p, Args&&... args)
211
- {
212
- a.construct(p, THRUST_FWD(args)...);
213
- }
214
-
215
- _CCCL_EXEC_CHECK_DISABLE
216
- template <typename Alloc, typename T, typename... Args>
217
- inline _CCCL_HOST_DEVICE ::cuda::std::enable_if_t<!has_member_constructN<Alloc, T, Args...>::value>
218
- construct(Alloc&, T* p, Args&&... args)
219
- {
220
- ::new (static_cast<void*>(p)) T(THRUST_FWD(args)...);
221
- }
222
-
223
- __THRUST_DEFINE_IS_CALL_POSSIBLE(has_member_destroy_impl, destroy)
224
-
225
- template <typename Alloc, typename T>
226
- struct has_member_destroy : has_member_destroy_impl<Alloc, void(T*)>
227
- {};
228
-
229
- _CCCL_EXEC_CHECK_DISABLE
230
- template <typename Alloc, typename T>
231
- inline _CCCL_HOST_DEVICE ::cuda::std::enable_if_t<has_member_destroy<Alloc, T>::value> destroy(Alloc& a, T* p)
232
- {
233
- a.destroy(p);
234
- }
235
-
236
- _CCCL_EXEC_CHECK_DISABLE
237
- template <typename Alloc, typename T>
238
- inline _CCCL_HOST_DEVICE ::cuda::std::enable_if_t<!has_member_destroy<Alloc, T>::value> destroy(Alloc&, T* p)
239
- {
240
- p->~T();
241
- }
242
-
243
- __THRUST_DEFINE_IS_CALL_POSSIBLE(has_member_max_size_impl, max_size)
244
-
245
- template <typename Alloc>
246
- class has_member_max_size
247
- {
248
- using size_type = typename allocator_traits<Alloc>::size_type;
249
-
250
- public:
251
- using type = typename has_member_max_size_impl<Alloc, size_type()>::type;
252
- static const bool value = type::value;
253
- };
254
-
255
- template <typename Alloc>
256
- _CCCL_HOST_DEVICE ::cuda::std::enable_if_t<has_member_max_size<Alloc>::value, typename allocator_traits<Alloc>::size_type>
257
- max_size(const Alloc& a)
258
- {
259
- return a.max_size();
260
- }
261
-
262
- template <typename Alloc>
263
- _CCCL_HOST_DEVICE ::cuda::std::enable_if_t<!has_member_max_size<Alloc>::value,
264
- typename allocator_traits<Alloc>::size_type>
265
- max_size(const Alloc&)
266
- {
267
- using size_type = typename allocator_traits<Alloc>::size_type;
268
- return ::cuda::std::numeric_limits<size_type>::max();
269
- }
270
-
271
- template <typename Alloc>
272
- _CCCL_HOST_DEVICE ::cuda::std::enable_if_t<has_member_system<Alloc>::value, typename allocator_system<Alloc>::type&>
273
- system(Alloc& a)
274
- {
275
- // return the allocator's system
276
- return a.system();
277
- }
278
-
279
- template <typename Alloc>
280
- _CCCL_HOST_DEVICE ::cuda::std::enable_if_t<!has_member_system<Alloc>::value, typename allocator_system<Alloc>::type>
281
- system(Alloc&)
282
- {
283
- // return a copy of a value-initialized system
284
- return typename allocator_system<Alloc>::type();
285
- }
286
-
287
- } // namespace allocator_traits_detail
288
-
289
- template <typename Alloc>
290
- _CCCL_HOST_DEVICE typename allocator_traits<Alloc>::pointer
291
- allocator_traits<Alloc>::allocate(Alloc& a, typename allocator_traits<Alloc>::size_type n)
292
- {
293
- struct workaround_warnings
294
- {
295
- _CCCL_EXEC_CHECK_DISABLE
296
- static _CCCL_HOST_DEVICE typename allocator_traits<Alloc>::pointer
297
- allocate(Alloc& a, typename allocator_traits<Alloc>::size_type n)
298
- {
299
- return a.allocate(n);
300
- }
301
- };
302
-
303
- return workaround_warnings::allocate(a, n);
304
- }
305
-
306
- template <typename Alloc>
307
- _CCCL_HOST_DEVICE typename allocator_traits<Alloc>::pointer allocator_traits<Alloc>::allocate(
308
- Alloc& a, typename allocator_traits<Alloc>::size_type n, typename allocator_traits<Alloc>::const_void_pointer hint)
309
- {
310
- return allocator_traits_detail::allocate(a, n, hint);
311
- }
312
-
313
- template <typename Alloc>
314
- _CCCL_HOST_DEVICE void allocator_traits<Alloc>::deallocate(
315
- Alloc& a, typename allocator_traits<Alloc>::pointer p, typename allocator_traits<Alloc>::size_type n) noexcept
316
- {
317
- struct workaround_warnings
318
- {
319
- _CCCL_EXEC_CHECK_DISABLE
320
- static _CCCL_HOST_DEVICE void deallocate(
321
- Alloc& a, typename allocator_traits<Alloc>::pointer p, typename allocator_traits<Alloc>::size_type n) noexcept
322
- {
323
- return a.deallocate(p, n);
324
- }
325
- };
326
-
327
- return workaround_warnings::deallocate(a, p, n);
328
- }
329
-
330
- template <typename Alloc>
331
- template <typename T>
332
- _CCCL_HOST_DEVICE void allocator_traits<Alloc>::construct(allocator_type& a, T* p)
333
- {
334
- return allocator_traits_detail::construct(a, p);
335
- }
336
-
337
- template <typename Alloc>
338
- template <typename T, typename Arg1>
339
- _CCCL_HOST_DEVICE void allocator_traits<Alloc>::construct(allocator_type& a, T* p, const Arg1& arg1)
340
- {
341
- return allocator_traits_detail::construct(a, p, arg1);
342
- }
343
-
344
- template <typename Alloc>
345
- template <typename T, typename... Args>
346
- _CCCL_HOST_DEVICE void allocator_traits<Alloc>::construct(allocator_type& a, T* p, Args&&... args)
347
- {
348
- return allocator_traits_detail::construct(a, p, THRUST_FWD(args)...);
349
- }
350
-
351
- template <typename Alloc>
352
- template <typename T>
353
- _CCCL_HOST_DEVICE void allocator_traits<Alloc>::destroy(allocator_type& a, T* p) noexcept
354
- {
355
- return allocator_traits_detail::destroy(a, p);
356
- }
357
-
358
- template <typename Alloc>
359
- _CCCL_HOST_DEVICE typename allocator_traits<Alloc>::size_type allocator_traits<Alloc>::max_size(const allocator_type& a)
360
- {
361
- return allocator_traits_detail::max_size(a);
362
- }
363
-
364
- template <typename Alloc>
365
- _CCCL_HOST_DEVICE typename allocator_system<Alloc>::get_result_type allocator_system<Alloc>::get(Alloc& a)
366
- {
367
- return allocator_traits_detail::system(a);
368
- }
369
-
370
- } // namespace detail
371
- THRUST_NAMESPACE_END