cuda-cccl 0.3.1__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.
- cuda/cccl/headers/include/cub/agent/agent_histogram.cuh +354 -572
- cuda/cccl/headers/include/cub/block/block_adjacent_difference.cuh +6 -8
- cuda/cccl/headers/include/cub/block/block_discontinuity.cuh +24 -14
- cuda/cccl/headers/include/cub/block/block_exchange.cuh +5 -0
- cuda/cccl/headers/include/cub/block/block_histogram.cuh +4 -0
- cuda/cccl/headers/include/cub/block/block_load.cuh +4 -0
- cuda/cccl/headers/include/cub/block/block_radix_rank.cuh +1 -0
- cuda/cccl/headers/include/cub/block/block_reduce.cuh +1 -0
- cuda/cccl/headers/include/cub/block/block_scan.cuh +12 -2
- cuda/cccl/headers/include/cub/block/block_store.cuh +3 -2
- cuda/cccl/headers/include/cub/detail/mdspan_utils.cuh +34 -30
- cuda/cccl/headers/include/cub/detail/ptx-json-parser.h +1 -1
- cuda/cccl/headers/include/cub/device/device_for.cuh +118 -40
- cuda/cccl/headers/include/cub/device/device_reduce.cuh +6 -7
- cuda/cccl/headers/include/cub/device/device_segmented_reduce.cuh +12 -13
- cuda/cccl/headers/include/cub/device/device_transform.cuh +122 -91
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_merge.cuh +2 -3
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce.cuh +4 -3
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce_deterministic.cuh +1 -1
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_streaming_reduce.cuh +4 -5
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_streaming_reduce_by_key.cuh +0 -1
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_topk.cuh +3 -5
- cuda/cccl/headers/include/cub/device/dispatch/dispatch_transform.cuh +13 -5
- cuda/cccl/headers/include/cub/device/dispatch/kernels/for_each.cuh +72 -37
- cuda/cccl/headers/include/cub/device/dispatch/kernels/transform.cuh +22 -27
- cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_transform.cuh +61 -70
- cuda/cccl/headers/include/cub/thread/thread_reduce.cuh +24 -17
- cuda/cccl/headers/include/cub/warp/warp_load.cuh +6 -6
- cuda/cccl/headers/include/cub/warp/warp_reduce.cuh +7 -2
- cuda/cccl/headers/include/cub/warp/warp_scan.cuh +7 -3
- cuda/cccl/headers/include/cub/warp/warp_store.cuh +1 -0
- cuda/cccl/headers/include/cuda/__barrier/barrier_block_scope.h +19 -0
- cuda/cccl/headers/include/cuda/__cccl_config +1 -0
- cuda/cccl/headers/include/cuda/__cmath/fast_modulo_division.h +3 -74
- cuda/cccl/headers/include/cuda/__cmath/mul_hi.h +146 -0
- cuda/cccl/headers/include/cuda/__complex/get_real_imag.h +0 -4
- cuda/cccl/headers/include/cuda/__device/arch_id.h +176 -0
- cuda/cccl/headers/include/cuda/__device/arch_traits.h +239 -317
- cuda/cccl/headers/include/cuda/__device/attributes.h +4 -3
- cuda/cccl/headers/include/cuda/__device/compute_capability.h +171 -0
- cuda/cccl/headers/include/cuda/__device/device_ref.h +0 -10
- cuda/cccl/headers/include/cuda/__device/physical_device.h +1 -26
- cuda/cccl/headers/include/cuda/__event/event.h +26 -26
- cuda/cccl/headers/include/cuda/__event/event_ref.h +5 -5
- cuda/cccl/headers/include/cuda/__event/timed_event.h +9 -7
- cuda/cccl/headers/include/cuda/__fwd/devices.h +4 -4
- cuda/cccl/headers/include/cuda/__iterator/constant_iterator.h +46 -31
- cuda/cccl/headers/include/cuda/__iterator/strided_iterator.h +79 -47
- cuda/cccl/headers/include/cuda/__iterator/tabulate_output_iterator.h +59 -36
- cuda/cccl/headers/include/cuda/__iterator/transform_input_output_iterator.h +79 -49
- cuda/cccl/headers/include/cuda/__iterator/transform_iterator.h +74 -48
- cuda/cccl/headers/include/cuda/__iterator/transform_output_iterator.h +80 -55
- cuda/cccl/headers/include/cuda/__iterator/zip_common.h +2 -12
- cuda/cccl/headers/include/cuda/__iterator/zip_iterator.h +15 -19
- cuda/cccl/headers/include/cuda/__iterator/zip_transform_iterator.h +59 -60
- cuda/cccl/headers/include/cuda/__mdspan/host_device_accessor.h +127 -60
- cuda/cccl/headers/include/cuda/__mdspan/host_device_mdspan.h +178 -3
- cuda/cccl/headers/include/cuda/__mdspan/restrict_accessor.h +38 -8
- cuda/cccl/headers/include/cuda/__mdspan/restrict_mdspan.h +67 -1
- cuda/cccl/headers/include/cuda/__memory/ptr_in_range.h +93 -0
- cuda/cccl/headers/include/cuda/__memory_resource/get_memory_resource.h +4 -4
- cuda/cccl/headers/include/cuda/__memory_resource/properties.h +44 -0
- cuda/cccl/headers/include/cuda/__memory_resource/resource.h +1 -1
- cuda/cccl/headers/include/cuda/__memory_resource/resource_ref.h +4 -6
- cuda/cccl/headers/include/cuda/__nvtx/nvtx3.h +2 -1
- cuda/cccl/headers/include/cuda/__runtime/ensure_current_context.h +5 -4
- cuda/cccl/headers/include/cuda/__stream/stream.h +8 -8
- cuda/cccl/headers/include/cuda/__stream/stream_ref.h +17 -16
- cuda/cccl/headers/include/cuda/__utility/in_range.h +65 -0
- cuda/cccl/headers/include/cuda/cmath +1 -0
- cuda/cccl/headers/include/cuda/devices +3 -0
- cuda/cccl/headers/include/cuda/memory +1 -0
- cuda/cccl/headers/include/cuda/std/__algorithm/equal_range.h +2 -2
- cuda/cccl/headers/include/cuda/std/__algorithm/find.h +1 -1
- cuda/cccl/headers/include/cuda/std/__algorithm/includes.h +2 -4
- cuda/cccl/headers/include/cuda/std/__algorithm/lower_bound.h +1 -1
- cuda/cccl/headers/include/cuda/std/__algorithm/make_projected.h +7 -15
- cuda/cccl/headers/include/cuda/std/__algorithm/min_element.h +1 -1
- cuda/cccl/headers/include/cuda/std/__algorithm/minmax_element.h +1 -2
- cuda/cccl/headers/include/cuda/std/__algorithm/partial_sort_copy.h +2 -2
- cuda/cccl/headers/include/cuda/std/__algorithm/upper_bound.h +1 -1
- cuda/cccl/headers/include/cuda/std/__cccl/algorithm_wrapper.h +36 -0
- cuda/cccl/headers/include/cuda/std/__cccl/builtin.h +46 -49
- cuda/cccl/headers/include/cuda/std/__cccl/execution_space.h +6 -0
- cuda/cccl/headers/include/cuda/std/__cccl/host_std_lib.h +52 -0
- cuda/cccl/headers/include/cuda/std/__cccl/memory_wrapper.h +36 -0
- cuda/cccl/headers/include/cuda/std/__cccl/numeric_wrapper.h +36 -0
- cuda/cccl/headers/include/cuda/std/__cmath/isnan.h +3 -2
- cuda/cccl/headers/include/cuda/std/__complex/complex.h +3 -2
- cuda/cccl/headers/include/cuda/std/__complex/literals.h +14 -34
- cuda/cccl/headers/include/cuda/std/__complex/nvbf16.h +2 -1
- cuda/cccl/headers/include/cuda/std/__complex/nvfp16.h +4 -3
- cuda/cccl/headers/include/cuda/std/__concepts/invocable.h +2 -2
- cuda/cccl/headers/include/cuda/std/__cstdlib/malloc.h +3 -2
- cuda/cccl/headers/include/cuda/std/__functional/bind.h +10 -13
- cuda/cccl/headers/include/cuda/std/__functional/function.h +5 -8
- cuda/cccl/headers/include/cuda/std/__functional/invoke.h +71 -335
- cuda/cccl/headers/include/cuda/std/__functional/mem_fn.h +1 -2
- cuda/cccl/headers/include/cuda/std/__functional/reference_wrapper.h +3 -3
- cuda/cccl/headers/include/cuda/std/__functional/weak_result_type.h +0 -6
- cuda/cccl/headers/include/cuda/std/__fwd/allocator.h +13 -0
- cuda/cccl/headers/include/cuda/std/__fwd/char_traits.h +13 -0
- cuda/cccl/headers/include/cuda/std/__fwd/complex.h +13 -4
- cuda/cccl/headers/include/cuda/std/__fwd/mdspan.h +23 -0
- cuda/cccl/headers/include/cuda/std/__fwd/pair.h +13 -0
- cuda/cccl/headers/include/cuda/std/__fwd/string.h +22 -0
- cuda/cccl/headers/include/cuda/std/__fwd/string_view.h +14 -0
- cuda/cccl/headers/include/cuda/std/__internal/features.h +0 -5
- cuda/cccl/headers/include/cuda/std/__internal/namespaces.h +21 -0
- cuda/cccl/headers/include/cuda/std/__iterator/iterator_traits.h +5 -5
- cuda/cccl/headers/include/cuda/std/__mdspan/extents.h +7 -1
- cuda/cccl/headers/include/cuda/std/__mdspan/mdspan.h +53 -39
- cuda/cccl/headers/include/cuda/std/__memory/allocator.h +3 -3
- cuda/cccl/headers/include/cuda/std/__memory/construct_at.h +1 -3
- cuda/cccl/headers/include/cuda/std/__optional/optional_base.h +1 -0
- cuda/cccl/headers/include/cuda/std/__ranges/compressed_movable_box.h +892 -0
- cuda/cccl/headers/include/cuda/std/__ranges/movable_box.h +2 -2
- cuda/cccl/headers/include/cuda/std/__type_traits/is_primary_template.h +7 -5
- cuda/cccl/headers/include/cuda/std/__type_traits/result_of.h +1 -1
- cuda/cccl/headers/include/cuda/std/__utility/pair.h +0 -5
- cuda/cccl/headers/include/cuda/std/bitset +1 -1
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/__config +15 -12
- cuda/cccl/headers/include/cuda/std/detail/libcxx/include/variant +11 -9
- cuda/cccl/headers/include/cuda/std/inplace_vector +4 -4
- cuda/cccl/headers/include/cuda/std/numbers +5 -0
- cuda/cccl/headers/include/cuda/std/string_view +146 -11
- cuda/cccl/headers/include/cuda/stream_ref +5 -0
- cuda/cccl/headers/include/cuda/utility +1 -0
- cuda/cccl/headers/include/nv/target +7 -2
- cuda/cccl/headers/include/thrust/allocate_unique.h +1 -1
- cuda/cccl/headers/include/thrust/detail/allocator/allocator_traits.h +309 -33
- cuda/cccl/headers/include/thrust/detail/allocator/copy_construct_range.h +151 -4
- cuda/cccl/headers/include/thrust/detail/allocator/destroy_range.h +60 -3
- cuda/cccl/headers/include/thrust/detail/allocator/fill_construct_range.h +45 -3
- cuda/cccl/headers/include/thrust/detail/allocator/malloc_allocator.h +31 -6
- cuda/cccl/headers/include/thrust/detail/allocator/tagged_allocator.h +29 -16
- cuda/cccl/headers/include/thrust/detail/allocator/temporary_allocator.h +41 -4
- cuda/cccl/headers/include/thrust/detail/allocator/value_initialize_range.h +42 -4
- cuda/cccl/headers/include/thrust/detail/complex/ccosh.h +3 -3
- cuda/cccl/headers/include/thrust/detail/internal_functional.h +1 -1
- cuda/cccl/headers/include/thrust/detail/memory_algorithms.h +1 -1
- cuda/cccl/headers/include/thrust/detail/temporary_array.h +1 -1
- cuda/cccl/headers/include/thrust/detail/type_traits.h +1 -1
- cuda/cccl/headers/include/thrust/device_delete.h +18 -3
- cuda/cccl/headers/include/thrust/device_free.h +16 -3
- cuda/cccl/headers/include/thrust/device_new.h +29 -8
- cuda/cccl/headers/include/thrust/host_vector.h +1 -1
- cuda/cccl/headers/include/thrust/iterator/tabulate_output_iterator.h +5 -2
- cuda/cccl/headers/include/thrust/mr/disjoint_pool.h +1 -1
- cuda/cccl/headers/include/thrust/mr/pool.h +1 -1
- cuda/cccl/headers/include/thrust/system/cuda/detail/find.h +13 -115
- cuda/cccl/headers/include/thrust/system/cuda/detail/mismatch.h +8 -2
- cuda/cccl/headers/include/thrust/type_traits/is_contiguous_iterator.h +7 -7
- cuda/compute/__init__.py +2 -0
- cuda/compute/_bindings.pyi +43 -1
- cuda/compute/_bindings_impl.pyx +156 -7
- cuda/compute/algorithms/_scan.py +108 -36
- cuda/compute/algorithms/_transform.py +32 -11
- cuda/compute/cu12/_bindings_impl.cpython-311-aarch64-linux-gnu.so +0 -0
- cuda/compute/cu12/cccl/libcccl.c.parallel.so +0 -0
- cuda/compute/cu13/_bindings_impl.cpython-311-aarch64-linux-gnu.so +0 -0
- cuda/compute/cu13/cccl/libcccl.c.parallel.so +0 -0
- cuda/compute/iterators/__init__.py +2 -0
- cuda/compute/iterators/_factories.py +28 -0
- cuda/compute/iterators/_iterators.py +206 -1
- cuda/compute/numba_utils.py +2 -2
- cuda/compute/typing.py +2 -0
- {cuda_cccl-0.3.1.dist-info → cuda_cccl-0.3.2.dist-info}/METADATA +1 -1
- {cuda_cccl-0.3.1.dist-info → cuda_cccl-0.3.2.dist-info}/RECORD +171 -175
- cuda/cccl/headers/include/thrust/detail/algorithm_wrapper.h +0 -37
- cuda/cccl/headers/include/thrust/detail/allocator/allocator_traits.inl +0 -371
- cuda/cccl/headers/include/thrust/detail/allocator/copy_construct_range.inl +0 -242
- cuda/cccl/headers/include/thrust/detail/allocator/destroy_range.inl +0 -137
- cuda/cccl/headers/include/thrust/detail/allocator/fill_construct_range.inl +0 -99
- cuda/cccl/headers/include/thrust/detail/allocator/malloc_allocator.inl +0 -68
- cuda/cccl/headers/include/thrust/detail/allocator/tagged_allocator.inl +0 -86
- cuda/cccl/headers/include/thrust/detail/allocator/temporary_allocator.inl +0 -79
- cuda/cccl/headers/include/thrust/detail/allocator/value_initialize_range.inl +0 -98
- cuda/cccl/headers/include/thrust/detail/device_delete.inl +0 -52
- cuda/cccl/headers/include/thrust/detail/device_free.inl +0 -47
- cuda/cccl/headers/include/thrust/detail/device_new.inl +0 -61
- cuda/cccl/headers/include/thrust/detail/memory_wrapper.h +0 -40
- cuda/cccl/headers/include/thrust/detail/numeric_wrapper.h +0 -37
- {cuda_cccl-0.3.1.dist-info → cuda_cccl-0.3.2.dist-info}/WHEEL +0 -0
- {cuda_cccl-0.3.1.dist-info → cuda_cccl-0.3.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -65,7 +65,7 @@ _CCCL_CONCEPT __movable_box_object = move_constructible<_Tp> && is_object_v<_Tp>
|
|
|
65
65
|
// whenever we can apply any of these optimizations for both the copy assignment and the move assignment
|
|
66
66
|
// operator.
|
|
67
67
|
template <class _Tp>
|
|
68
|
-
[[nodiscard]] _CCCL_API
|
|
68
|
+
[[nodiscard]] _CCCL_API _CCCL_CONSTEVAL bool __doesnt_need_empty_state() noexcept
|
|
69
69
|
{
|
|
70
70
|
if constexpr (copy_constructible<_Tp>)
|
|
71
71
|
{
|
|
@@ -92,7 +92,7 @@ template <class _Tp>
|
|
|
92
92
|
// Hence, when the _Tp doesn't have an assignment operator, we can't risk making it a potentially-overlapping
|
|
93
93
|
// subobject because of the above, and we don't use [[no_unique_address]] in that case.
|
|
94
94
|
template <class _Tp>
|
|
95
|
-
[[nodiscard]] _CCCL_API
|
|
95
|
+
[[nodiscard]] _CCCL_API _CCCL_CONSTEVAL bool __can_use_no_unique_address() noexcept
|
|
96
96
|
{
|
|
97
97
|
if constexpr (copy_constructible<_Tp>)
|
|
98
98
|
{
|
|
@@ -70,7 +70,7 @@ using __select_traits = conditional_t<__is_primary_cccl_template<_Iter>::value,
|
|
|
70
70
|
#else // ^^^ _CCCL_COMPILER(NVRTC) ^^^ / vvv !_CCCL_COMPILER(NVRTC) vvv
|
|
71
71
|
|
|
72
72
|
// We also need to respect what the user is defining to std::iterator_traits
|
|
73
|
-
# if
|
|
73
|
+
# if _CCCL_HOST_STD_LIB(LIBSTDCXX)
|
|
74
74
|
// libstdc++ uses `is_base_of`
|
|
75
75
|
template <class _Iter, bool>
|
|
76
76
|
inline constexpr bool __is_primary_std_template_impl =
|
|
@@ -83,13 +83,15 @@ inline constexpr bool __is_primary_std_template_impl<_Iter, true> = true;
|
|
|
83
83
|
template <class _Iter>
|
|
84
84
|
struct __is_primary_std_template : bool_constant<__is_primary_std_template_impl<_Iter, is_pointer_v<_Iter>>>
|
|
85
85
|
{};
|
|
86
|
-
# elif
|
|
86
|
+
# elif _CCCL_HOST_STD_LIB(LIBCXX)
|
|
87
|
+
|
|
87
88
|
// libc++ uses the same mechanism than we do with __primary_template
|
|
88
89
|
template <class _Traits>
|
|
89
90
|
using __test_for_primary_std_template = enable_if_t<_IsSame<_Traits, typename _Traits::__primary_template>::value>;
|
|
90
91
|
template <class _Iter>
|
|
91
|
-
using __is_primary_std_template = _IsValidExpansion<
|
|
92
|
-
|
|
92
|
+
using __is_primary_std_template = _IsValidExpansion<__test_for_primary_std_template, ::std::iterator_traits<_Iter>>;
|
|
93
|
+
|
|
94
|
+
# elif _CCCL_HOST_STD_LIB(STL)
|
|
93
95
|
// On MSVC we must check for the base class because `_From_primary` is only defined in C++20
|
|
94
96
|
template <class _Iter, bool>
|
|
95
97
|
inline constexpr bool __is_primary_std_template_impl =
|
|
@@ -102,7 +104,7 @@ inline constexpr bool __is_primary_std_template_impl<_Iter, true> = true;
|
|
|
102
104
|
template <class _Iter>
|
|
103
105
|
struct __is_primary_std_template : bool_constant<__is_primary_std_template_impl<_Iter, is_pointer_v<_Iter>>>
|
|
104
106
|
{};
|
|
105
|
-
# endif //
|
|
107
|
+
# endif // ^^^ _CCCL_HOST_STD_LIB(STL) ^^^
|
|
106
108
|
|
|
107
109
|
template <class _Iter, class _OtherTraits>
|
|
108
110
|
using __select_traits =
|
|
@@ -33,7 +33,7 @@ template <class _Callable>
|
|
|
33
33
|
class result_of;
|
|
34
34
|
|
|
35
35
|
template <class _Fp, class... _Args>
|
|
36
|
-
class CCCL_DEPRECATED _CCCL_TYPE_VISIBILITY_DEFAULT result_of<_Fp(_Args...)> : public
|
|
36
|
+
class CCCL_DEPRECATED _CCCL_TYPE_VISIBILITY_DEFAULT result_of<_Fp(_Args...)> : public invoke_result<_Fp, _Args...>
|
|
37
37
|
{};
|
|
38
38
|
|
|
39
39
|
template <class _Tp>
|
|
@@ -61,11 +61,6 @@
|
|
|
61
61
|
#include <cuda/std/__utility/piecewise_construct.h>
|
|
62
62
|
#include <cuda/std/cstddef>
|
|
63
63
|
|
|
64
|
-
// Provide compatibility between `std::pair` and `cuda::std::pair`
|
|
65
|
-
#if !_CCCL_COMPILER(NVRTC)
|
|
66
|
-
# include <utility>
|
|
67
|
-
#endif // !_CCCL_COMPILER(NVRTC)
|
|
68
|
-
|
|
69
64
|
#include <cuda/std/__cccl/prologue.h>
|
|
70
65
|
|
|
71
66
|
_CCCL_BEGIN_NAMESPACE_CUDA_STD
|
|
@@ -653,7 +653,7 @@ _CCCL_API constexpr void __throw_if_out_of_range(size_t __pos, const char* __msg
|
|
|
653
653
|
}
|
|
654
654
|
|
|
655
655
|
template <>
|
|
656
|
-
_CCCL_API inline void __throw_if_out_of_range<0>(size_t
|
|
656
|
+
_CCCL_API inline void __throw_if_out_of_range<0>(size_t, const char* __msg)
|
|
657
657
|
{
|
|
658
658
|
::cuda::std::__throw_out_of_range(__msg);
|
|
659
659
|
}
|
|
@@ -184,19 +184,22 @@ extern "C++" {
|
|
|
184
184
|
// NVRTC has a bug that prevented the use of delegated constructors, as it did not accept execution space annotations.
|
|
185
185
|
// This creates a whole lot of boilerplate that we can avoid through a macro (see nvbug3961621)
|
|
186
186
|
# if _CCCL_COMPILER(NVRTC, <, 12, 6)
|
|
187
|
-
# define _LIBCUDACXX_DELEGATE_CONSTRUCTORS(__class, __baseclass, ...)
|
|
188
|
-
using __base = __baseclass<__VA_ARGS__>;
|
|
189
|
-
_CCCL_TEMPLATE(class... _Args)
|
|
190
|
-
_CCCL_REQUIRES(is_constructible_v<__base, _Args...>)
|
|
191
|
-
_CCCL_API constexpr __class(_Args&&... __args) noexcept(
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
187
|
+
# define _LIBCUDACXX_DELEGATE_CONSTRUCTORS(__class, __baseclass, ...) \
|
|
188
|
+
using __base = __baseclass<__VA_ARGS__>; \
|
|
189
|
+
_CCCL_TEMPLATE(class... _Args) \
|
|
190
|
+
_CCCL_REQUIRES(::cuda::std::is_constructible_v<__base, _Args...>) \
|
|
191
|
+
_CCCL_API constexpr __class(_Args&&... __args) noexcept( \
|
|
192
|
+
::cuda::std::is_nothrow_constructible_v<__base, _Args...>) \
|
|
193
|
+
: __base(::cuda::std::forward<_Args>(__args)...) \
|
|
194
|
+
{} \
|
|
195
|
+
_CCCL_HIDE_FROM_ABI constexpr __class() noexcept(::cuda::std::is_nothrow_default_constructible_v<__base>) = \
|
|
196
|
+
default;
|
|
195
197
|
# else // ^^^ workaround ^^^ / vvv no workaround vvv
|
|
196
|
-
# define _LIBCUDACXX_DELEGATE_CONSTRUCTORS(__class, __baseclass, ...)
|
|
197
|
-
using __base = __baseclass<__VA_ARGS__>;
|
|
198
|
-
using __base::__base;
|
|
199
|
-
_CCCL_HIDE_FROM_ABI constexpr __class() noexcept =
|
|
198
|
+
# define _LIBCUDACXX_DELEGATE_CONSTRUCTORS(__class, __baseclass, ...) \
|
|
199
|
+
using __base = __baseclass<__VA_ARGS__>; \
|
|
200
|
+
using __base::__base; \
|
|
201
|
+
_CCCL_HIDE_FROM_ABI constexpr __class() noexcept(::cuda::std::is_nothrow_default_constructible_v<__base>) = \
|
|
202
|
+
default;
|
|
200
203
|
# endif // ^^^ no workaround ^^^
|
|
201
204
|
|
|
202
205
|
#endif // __cplusplus
|
|
@@ -563,7 +563,7 @@ struct __variant
|
|
|
563
563
|
class... _OtherVariants,
|
|
564
564
|
enable_if_t<(_Remaining != 0) && (_CurrentVariant == 0), int> = 0>
|
|
565
565
|
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static constexpr size_t
|
|
566
|
-
__get_runtime_index(const _Variant& __v, const _OtherVariants&...
|
|
566
|
+
__get_runtime_index(const _Variant& __v, const _OtherVariants&...) noexcept
|
|
567
567
|
{
|
|
568
568
|
return __v.__impl_.index();
|
|
569
569
|
}
|
|
@@ -574,7 +574,7 @@ struct __variant
|
|
|
574
574
|
class... _OtherVariants,
|
|
575
575
|
enable_if_t<(_Remaining != 0) && (_CurrentVariant != 0), int> = 0>
|
|
576
576
|
_CCCL_API inline _CCCL_VISIBILITY_HIDDEN static constexpr size_t
|
|
577
|
-
__get_runtime_index(const _Variant
|
|
577
|
+
__get_runtime_index(const _Variant&, const _OtherVariants&... __vs) noexcept
|
|
578
578
|
{
|
|
579
579
|
return __get_runtime_index<_Remaining, _CurrentVariant - 1>(__vs...);
|
|
580
580
|
}
|
|
@@ -995,9 +995,10 @@ class _CCCL_TYPE_VISIBILITY_DEFAULT __ctor : public __dtor<_Traits>
|
|
|
995
995
|
{
|
|
996
996
|
if (__index == _CurrentIndex)
|
|
997
997
|
{
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
998
|
+
::cuda::std::__construct_at(
|
|
999
|
+
::cuda::std::addressof(__access::__base::__get_alt<_CurrentIndex>(__lhs.__as_base())),
|
|
1000
|
+
in_place,
|
|
1001
|
+
__access::__base::__get_alt<_CurrentIndex>(::cuda::std::forward<_Rhs>(__rhs).__as_base()).__value);
|
|
1001
1002
|
return;
|
|
1002
1003
|
}
|
|
1003
1004
|
__generic_construct_impl(
|
|
@@ -1010,9 +1011,10 @@ class _CCCL_TYPE_VISIBILITY_DEFAULT __ctor : public __dtor<_Traits>
|
|
|
1010
1011
|
{
|
|
1011
1012
|
if (__index == 0)
|
|
1012
1013
|
{
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1014
|
+
::cuda::std::__construct_at(
|
|
1015
|
+
::cuda::std::addressof(__access::__base::__get_alt<0>(__lhs.__as_base())),
|
|
1016
|
+
in_place,
|
|
1017
|
+
__access::__base::__get_alt<0>(::cuda::std::forward<_Rhs>(__rhs).__as_base()).__value);
|
|
1016
1018
|
return;
|
|
1017
1019
|
}
|
|
1018
1020
|
// We already checked that every variant has a value, so we should never reach this line
|
|
@@ -1027,7 +1029,7 @@ protected:
|
|
|
1027
1029
|
template <size_t _Ip, class _Tp, class... _Args>
|
|
1028
1030
|
_CCCL_API inline static _Tp& __construct_alt(__alt<_Ip, _Tp>& __a, _Args&&... __args)
|
|
1029
1031
|
{
|
|
1030
|
-
__construct_at(::cuda::std::addressof(__a), in_place, ::cuda::std::forward<_Args>(__args)...);
|
|
1032
|
+
::cuda::std::__construct_at(::cuda::std::addressof(__a), in_place, ::cuda::std::forward<_Args>(__args)...);
|
|
1031
1033
|
return __a.__value;
|
|
1032
1034
|
}
|
|
1033
1035
|
|
|
@@ -1525,8 +1525,8 @@ public:
|
|
|
1525
1525
|
_CCCL_API constexpr iterator
|
|
1526
1526
|
erase(const_iterator __cfirst, const_iterator __clast) noexcept(is_nothrow_move_assignable_v<_Tp>)
|
|
1527
1527
|
{
|
|
1528
|
-
const iterator __first = (
|
|
1529
|
-
const iterator __last = (
|
|
1528
|
+
const iterator __first = this->begin() + (__cfirst - this->begin());
|
|
1529
|
+
const iterator __last = this->begin() + (__clast - this->begin());
|
|
1530
1530
|
const iterator __end = this->end();
|
|
1531
1531
|
if (__first == __last)
|
|
1532
1532
|
{
|
|
@@ -1736,7 +1736,7 @@ public:
|
|
|
1736
1736
|
}
|
|
1737
1737
|
}
|
|
1738
1738
|
|
|
1739
|
-
_CCCL_API constexpr inplace_vector(const size_type __count, const _Tp&
|
|
1739
|
+
_CCCL_API constexpr inplace_vector(const size_type __count, const _Tp&)
|
|
1740
1740
|
: __base()
|
|
1741
1741
|
{
|
|
1742
1742
|
if (__count > 0)
|
|
@@ -1973,7 +1973,7 @@ public:
|
|
|
1973
1973
|
|
|
1974
1974
|
_CCCL_TEMPLATE(class _Range)
|
|
1975
1975
|
_CCCL_REQUIRES(::cuda::std::ranges::__container_compatible_range<_Range, _Tp>)
|
|
1976
|
-
_CCCL_API constexpr iterator insert_range(const_iterator
|
|
1976
|
+
_CCCL_API constexpr iterator insert_range(const_iterator, _Range&& __range)
|
|
1977
1977
|
{
|
|
1978
1978
|
if (::cuda::std::ranges::begin(__range) != ::cuda::std::ranges::end(__range))
|
|
1979
1979
|
{
|
|
@@ -26,6 +26,9 @@
|
|
|
26
26
|
|
|
27
27
|
#include <cuda/std/__cccl/prologue.h>
|
|
28
28
|
|
|
29
|
+
_CCCL_DIAG_PUSH
|
|
30
|
+
_CCCL_DIAG_SUPPRESS_NVHPC(inexact_fp_conversion)
|
|
31
|
+
|
|
29
32
|
_CCCL_BEGIN_NAMESPACE_CUDA_STD
|
|
30
33
|
|
|
31
34
|
template <class _Tp>
|
|
@@ -336,6 +339,8 @@ inline constexpr double phi = __numbers<double>::__phi();
|
|
|
336
339
|
|
|
337
340
|
_CCCL_END_NAMESPACE_CUDA_STD
|
|
338
341
|
|
|
342
|
+
_CCCL_DIAG_POP
|
|
343
|
+
|
|
339
344
|
#include <cuda/std/__cccl/epilogue.h>
|
|
340
345
|
|
|
341
346
|
#endif // _CUDA_STD_NUMBERS
|
|
@@ -24,6 +24,9 @@
|
|
|
24
24
|
#include <cuda/std/__cstddef/types.h>
|
|
25
25
|
#include <cuda/std/__functional/hash.h>
|
|
26
26
|
#include <cuda/std/__functional/unary_function.h>
|
|
27
|
+
#include <cuda/std/__fwd/allocator.h>
|
|
28
|
+
#include <cuda/std/__fwd/char_traits.h>
|
|
29
|
+
#include <cuda/std/__fwd/string.h>
|
|
27
30
|
#include <cuda/std/__fwd/string_view.h>
|
|
28
31
|
#include <cuda/std/__iterator/access.h>
|
|
29
32
|
#include <cuda/std/__iterator/bounded_iter.h>
|
|
@@ -49,16 +52,19 @@
|
|
|
49
52
|
#include <cuda/std/__type_traits/is_trivially_constructible.h>
|
|
50
53
|
#include <cuda/std/__type_traits/is_trivially_copyable.h>
|
|
51
54
|
#include <cuda/std/__type_traits/remove_cvref.h>
|
|
52
|
-
#include <cuda/std/__type_traits/remove_reference.h>
|
|
53
55
|
#include <cuda/std/__type_traits/type_identity.h>
|
|
54
56
|
#include <cuda/std/__utility/declval.h>
|
|
55
57
|
#include <cuda/std/detail/libcxx/include/stdexcept>
|
|
56
58
|
#include <cuda/std/limits>
|
|
57
59
|
#include <cuda/std/version>
|
|
58
60
|
|
|
61
|
+
// todo: find a way to get rid of these includes
|
|
59
62
|
#if !_CCCL_COMPILER(NVRTC)
|
|
60
|
-
# include <
|
|
61
|
-
#
|
|
63
|
+
# include <string> // for std::basic_string operator<<
|
|
64
|
+
# if __cpp_lib_string_view >= 201606L
|
|
65
|
+
# include <string_view> // for std::basic_string_view operator<<
|
|
66
|
+
# endif // __cpp_lib_string_view >= 201606L
|
|
67
|
+
#endif // __cpp_lib_string_view >= 201606L
|
|
62
68
|
|
|
63
69
|
#include <cuda/std/__cccl/prologue.h>
|
|
64
70
|
|
|
@@ -75,13 +81,65 @@ inline constexpr bool __cccl_is_string_view_v<const volatile _Tp> = __cccl_is_st
|
|
|
75
81
|
template <class _CharT, class _Traits>
|
|
76
82
|
inline constexpr bool __cccl_is_string_view_v<basic_string_view<_CharT, _Traits>> = true;
|
|
77
83
|
|
|
84
|
+
template <class _Tp>
|
|
85
|
+
inline constexpr bool __cccl_is_std_string_v = false;
|
|
86
|
+
#if !_CCCL_COMPILER(NVRTC)
|
|
87
|
+
template <class _CharT, class _Traits, class _Alloc>
|
|
88
|
+
inline constexpr bool __cccl_is_std_string_v<::std::basic_string<_CharT, _Traits, _Alloc>> = true;
|
|
89
|
+
#endif // !_CCCL_COMPILER(NVRTC)
|
|
90
|
+
|
|
91
|
+
template <class _Tp>
|
|
92
|
+
inline constexpr bool __cccl_is_std_string_view_v = false;
|
|
93
|
+
#if __cpp_lib_string_view >= 201606L
|
|
94
|
+
template <class _CharT, class _Traits>
|
|
95
|
+
inline constexpr bool __cccl_is_std_string_view_v<::std::basic_string_view<_CharT, _Traits>> = true;
|
|
96
|
+
#endif // __cpp_lib_string_view >= 201606L
|
|
97
|
+
|
|
78
98
|
template <class _Range, class _CharT, class _Traits>
|
|
79
99
|
_CCCL_CONCEPT __cccl_has_basic_sv_conv_operator =
|
|
80
100
|
_CCCL_REQUIRES_EXPR((_Range, _CharT, _Traits), remove_cvref_t<_Range>& __d)(
|
|
81
101
|
(__d.operator ::cuda::std::basic_string_view<_CharT, _Traits>()));
|
|
82
102
|
|
|
103
|
+
template <class _Range, class _CharT, class _Traits>
|
|
104
|
+
_CCCL_CONCEPT __cccl_basic_sv_compatible_range_check_traits = _CCCL_REQUIRES_EXPR((_Range, _CharT, _Traits)) //
|
|
105
|
+
( //
|
|
106
|
+
typename(typename _Range::traits_type), //
|
|
107
|
+
requires(is_same_v<typename _Range::traits_type, _Traits>) //
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
template <class _Range, class _CharT, class _Traits>
|
|
111
|
+
_CCCL_CONCEPT __cccl_basic_sv_compatible_range_check_traits_std_ext =
|
|
112
|
+
#if !_CCCL_COMPILER(NVRTC)
|
|
113
|
+
_CCCL_REQUIRES_EXPR((_Range, _CharT, _Traits)) //
|
|
114
|
+
( //
|
|
115
|
+
typename(typename _Range::traits_type), //
|
|
116
|
+
requires(is_same_v<typename _Range::traits_type, ::std::char_traits<_CharT>>), //
|
|
117
|
+
requires(is_same_v<_Traits, ::cuda::std::char_traits<_CharT>>) //
|
|
118
|
+
);
|
|
119
|
+
#else // ^^^ !_CCCL_COMPILER(NVRTC) ^^^ / vvv _CCCL_COMPILER(NVRTC) vvv
|
|
120
|
+
true;
|
|
121
|
+
#endif // ^^^ _CCCL_COMPILER(NVRTC) ^^^
|
|
122
|
+
|
|
123
|
+
template <class _Range, class _CharT, class _Traits>
|
|
124
|
+
_CCCL_CONCEPT __cccl_basic_sv_compatible_range = _CCCL_REQUIRES_EXPR((_Range, _CharT, _Traits)) //
|
|
125
|
+
( //
|
|
126
|
+
requires(::cuda::std::ranges::contiguous_range<_Range>), //
|
|
127
|
+
requires(::cuda::std::ranges::sized_range<_Range>), //
|
|
128
|
+
requires(is_same_v<::cuda::std::ranges::range_value_t<_Range>, _CharT>), //
|
|
129
|
+
requires(!(__cccl_is_string_view_v<remove_cvref_t<_Range>>
|
|
130
|
+
&& __cccl_basic_sv_compatible_range_check_traits<_Range, _CharT, _Traits>) ), //
|
|
131
|
+
requires(!is_convertible_v<_Range, const _CharT*>), //
|
|
132
|
+
requires(!__cccl_has_basic_sv_conv_operator<_Range, _CharT, _Traits>), //
|
|
133
|
+
requires(!(__cccl_is_std_string_v<remove_cvref_t<_Range>>
|
|
134
|
+
&& (__cccl_basic_sv_compatible_range_check_traits<_Range, _CharT, _Traits>
|
|
135
|
+
|| __cccl_basic_sv_compatible_range_check_traits_std_ext<_Range, _CharT, _Traits>) )), //
|
|
136
|
+
requires(!(__cccl_is_std_string_view_v<remove_cvref_t<_Range>>
|
|
137
|
+
&& (__cccl_basic_sv_compatible_range_check_traits<_Range, _CharT, _Traits>
|
|
138
|
+
|| __cccl_basic_sv_compatible_range_check_traits_std_ext<_Range, _CharT, _Traits>) )) //
|
|
139
|
+
);
|
|
140
|
+
|
|
83
141
|
template <class _CharT, class _Traits>
|
|
84
|
-
class basic_string_view
|
|
142
|
+
class _CCCL_TYPE_VISIBILITY_DEFAULT basic_string_view
|
|
85
143
|
{
|
|
86
144
|
public:
|
|
87
145
|
using traits_type = _Traits;
|
|
@@ -146,17 +204,54 @@ public:
|
|
|
146
204
|
_CCCL_ASSERT((__end - __begin) >= 0, "string_view::string_view(iterator, sentinel) received invalid range");
|
|
147
205
|
}
|
|
148
206
|
|
|
207
|
+
#if !_CCCL_COMPILER(NVRTC)
|
|
208
|
+
_CCCL_TEMPLATE(class _Traits2 = _Traits, class _Alloc)
|
|
209
|
+
_CCCL_REQUIRES(is_same_v<_Traits2, char_traits<_CharT>>)
|
|
210
|
+
_CCCL_HOST_API constexpr basic_string_view(
|
|
211
|
+
const ::std::basic_string<_CharT, ::std::char_traits<_CharT>, _Alloc>& __sv) noexcept
|
|
212
|
+
: __data_{__sv.data()}
|
|
213
|
+
, __size_{__sv.size()}
|
|
214
|
+
{}
|
|
215
|
+
|
|
216
|
+
template <class _Alloc>
|
|
217
|
+
_CCCL_HOST_API constexpr basic_string_view(const ::std::basic_string<_CharT, _Traits, _Alloc>& __sv) noexcept
|
|
218
|
+
: __data_{__sv.data()}
|
|
219
|
+
, __size_{__sv.size()}
|
|
220
|
+
{}
|
|
221
|
+
#endif // !_CCCL_COMPILER(NVRTC)
|
|
222
|
+
|
|
223
|
+
#if __cpp_lib_string_view >= 201606L
|
|
224
|
+
_CCCL_TEMPLATE(class _Traits2 = _Traits)
|
|
225
|
+
_CCCL_REQUIRES(is_same_v<_Traits2, char_traits<_CharT>>)
|
|
226
|
+
_CCCL_HOST_API constexpr basic_string_view(::std::basic_string_view<_CharT> __s) noexcept
|
|
227
|
+
: __data_{__s.data()}
|
|
228
|
+
, __size_{__s.size()}
|
|
229
|
+
{}
|
|
230
|
+
|
|
231
|
+
_CCCL_HOST_API constexpr basic_string_view(::std::basic_string_view<_CharT, _Traits> __s) noexcept
|
|
232
|
+
: __data_{__s.data()}
|
|
233
|
+
, __size_{__s.size()}
|
|
234
|
+
{}
|
|
235
|
+
#endif // __cpp_lib_string_view >= 201606L
|
|
236
|
+
|
|
149
237
|
_CCCL_TEMPLATE(class _Range)
|
|
150
|
-
_CCCL_REQUIRES(
|
|
151
|
-
(!is_same_v<remove_cvref_t<_Range>, basic_string_view>) _CCCL_AND ::cuda::std::ranges::contiguous_range<_Range>
|
|
152
|
-
_CCCL_AND ::cuda::std::ranges::sized_range<_Range> _CCCL_AND
|
|
153
|
-
is_same_v<::cuda::std::ranges::range_value_t<_Range>, _CharT> _CCCL_AND(!is_convertible_v<_Range, const _CharT*>)
|
|
154
|
-
_CCCL_AND(!__cccl_has_basic_sv_conv_operator<_Range, _CharT, _Traits>))
|
|
238
|
+
_CCCL_REQUIRES(__cccl_basic_sv_compatible_range<_Range, _CharT, _Traits>)
|
|
155
239
|
_CCCL_API explicit constexpr basic_string_view(_Range&& __r)
|
|
156
240
|
: __data_{::cuda::std::ranges::data(__r)}
|
|
157
241
|
, __size_{::cuda::std::ranges::size(__r)}
|
|
158
242
|
{}
|
|
159
243
|
|
|
244
|
+
// msvc has problems with constructing a string view from another string view using the from ranges constructor,
|
|
245
|
+
// so we define the constructor ourselves
|
|
246
|
+
#if _CCCL_COMPILER(MSVC)
|
|
247
|
+
_CCCL_TEMPLATE(class _OtherTraits)
|
|
248
|
+
_CCCL_REQUIRES((!is_same_v<_Traits, _OtherTraits>) )
|
|
249
|
+
_CCCL_API explicit constexpr basic_string_view(const basic_string_view<_CharT, _OtherTraits>& __other)
|
|
250
|
+
: __data_{__other.data()}
|
|
251
|
+
, __size_{__other.size()}
|
|
252
|
+
{}
|
|
253
|
+
#endif // _CCCL_COMPILER(MSVC)
|
|
254
|
+
|
|
160
255
|
[[nodiscard]] _CCCL_API constexpr const_iterator begin() const noexcept
|
|
161
256
|
{
|
|
162
257
|
return const_iterator{__data_};
|
|
@@ -698,6 +793,20 @@ public:
|
|
|
698
793
|
return __lhs.compare(__rhs) >= 0;
|
|
699
794
|
}
|
|
700
795
|
|
|
796
|
+
#if __cpp_lib_string_view >= 201606L
|
|
797
|
+
_CCCL_TEMPLATE(class _Traits2 = _Traits)
|
|
798
|
+
_CCCL_REQUIRES(is_same_v<_Traits2, char_traits<_CharT>>)
|
|
799
|
+
_CCCL_HOST_API constexpr operator ::std::basic_string_view<_CharT>() const noexcept
|
|
800
|
+
{
|
|
801
|
+
return ::std::basic_string_view<_CharT>{__data_, __size_};
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
_CCCL_HOST_API constexpr operator ::std::basic_string_view<_CharT, _Traits>() const noexcept
|
|
805
|
+
{
|
|
806
|
+
return ::std::basic_string_view<_CharT, _Traits>{__data_, __size_};
|
|
807
|
+
}
|
|
808
|
+
#endif // ^^^ __cpp_lib_string_view >= 201606L ^^^
|
|
809
|
+
|
|
701
810
|
private:
|
|
702
811
|
enum class __assume_valid
|
|
703
812
|
{
|
|
@@ -725,6 +834,23 @@ _CCCL_TEMPLATE(class _Range)
|
|
|
725
834
|
_CCCL_REQUIRES(::cuda::std::ranges::contiguous_range<_Range>)
|
|
726
835
|
_CCCL_HOST_DEVICE basic_string_view(_Range&&) -> basic_string_view<::cuda::std::ranges::range_value_t<_Range>>;
|
|
727
836
|
|
|
837
|
+
#if !_CCCL_COMPILER(NVRTC)
|
|
838
|
+
template <class _CharT, class _Alloc>
|
|
839
|
+
_CCCL_HOST basic_string_view(::std::basic_string<_CharT, ::std::char_traits<_CharT>, _Alloc>)
|
|
840
|
+
-> basic_string_view<_CharT>;
|
|
841
|
+
|
|
842
|
+
template <class _CharT, class _Traits, class _Alloc>
|
|
843
|
+
_CCCL_HOST basic_string_view(::std::basic_string<_CharT, _Traits, _Alloc>) -> basic_string_view<_CharT, _Traits>;
|
|
844
|
+
#endif // !_CCCL_COMPILER(NVRTC)
|
|
845
|
+
|
|
846
|
+
#if __cpp_lib_string_view >= 201606L
|
|
847
|
+
template <class _CharT>
|
|
848
|
+
_CCCL_HOST basic_string_view(::std::basic_string_view<_CharT>) -> basic_string_view<_CharT>;
|
|
849
|
+
|
|
850
|
+
template <class _CharT, class _Traits>
|
|
851
|
+
_CCCL_HOST basic_string_view(::std::basic_string_view<_CharT, _Traits>) -> basic_string_view<_CharT, _Traits>;
|
|
852
|
+
#endif // __cpp_lib_string_view >= 201606L
|
|
853
|
+
|
|
728
854
|
// operator <<
|
|
729
855
|
|
|
730
856
|
#if !_CCCL_COMPILER(NVRTC)
|
|
@@ -732,14 +858,23 @@ template <class _CharT>
|
|
|
732
858
|
_CCCL_HOST_API ::std::basic_ostream<_CharT>&
|
|
733
859
|
operator<<(::std::basic_ostream<_CharT>& __os, basic_string_view<_CharT> __str)
|
|
734
860
|
{
|
|
735
|
-
|
|
861
|
+
# if __cpp_lib_string_view >= 201606L
|
|
862
|
+
return __os << ::std::basic_string_view<_CharT, ::std::char_traits<_CharT>>{__str};
|
|
863
|
+
# else // ^^^ __cpp_lib_string_view >= 201606L ^^^ / vvv __cpp_lib_string_view < 201606L vvv
|
|
864
|
+
return __os
|
|
865
|
+
<< ::std::basic_string<_CharT, ::std::char_traits<_CharT>, ::std::allocator<_CharT>>{__str.data(), __str.size()};
|
|
866
|
+
# endif // ^^^ __cpp_lib_string_view < 201606L ^^^
|
|
736
867
|
}
|
|
737
868
|
|
|
738
869
|
template <class _CharT, class _Traits>
|
|
739
870
|
_CCCL_HOST_API ::std::basic_ostream<_CharT, _Traits>&
|
|
740
871
|
operator<<(::std::basic_ostream<_CharT, _Traits>& __os, basic_string_view<_CharT, _Traits> __str)
|
|
741
872
|
{
|
|
742
|
-
|
|
873
|
+
# if __cpp_lib_string_view >= 201606L
|
|
874
|
+
return __os << ::std::basic_string_view<_CharT, _Traits>{__str};
|
|
875
|
+
# else // ^^^ __cpp_lib_string_view >= 201606L ^^^ / vvv __cpp_lib_string_view < 201606L vvv
|
|
876
|
+
return __os << ::std::basic_string<_CharT, _Traits, ::std::allocator<_CharT>>{__str.data(), __str.size()};
|
|
877
|
+
# endif // ^^^ __cpp_lib_string_view < 201606L ^^^
|
|
743
878
|
}
|
|
744
879
|
#endif // !_CCCL_COMPILER(NVRTC)
|
|
745
880
|
|
|
@@ -48,6 +48,11 @@ private:
|
|
|
48
48
|
# pragma system_header
|
|
49
49
|
#endif // no system header
|
|
50
50
|
|
|
51
|
+
#if !defined(CCCL_IGNORE_DEPRECATED_STREAM_REF_HEADER)
|
|
52
|
+
_CCCL_WARNING("The <cuda/stream_ref> header is deprecated and will be removed in the next major release. The \
|
|
53
|
+
contents were moved to <cuda/stream>. To ignore this message, define CCCL_IGNORE_DEPRECATED_STREAM_REF_HEADER.")
|
|
54
|
+
#endif // !CCCL_IGNORE_DEPRECATED_STREAM_REF_HEADER
|
|
55
|
+
|
|
51
56
|
#include <cuda/__stream/get_stream.h>
|
|
52
57
|
#include <cuda/__stream/stream_ref.h>
|
|
53
58
|
|
|
@@ -67,10 +67,11 @@ constexpr base_int_t sm_100_bit = 1 << 17;
|
|
|
67
67
|
constexpr base_int_t sm_103_bit = 1 << 19;
|
|
68
68
|
constexpr base_int_t sm_110_bit = 1 << 20;
|
|
69
69
|
constexpr base_int_t sm_120_bit = 1 << 21;
|
|
70
|
+
constexpr base_int_t sm_121_bit = 1 << 22;
|
|
70
71
|
constexpr base_int_t all_devices =
|
|
71
72
|
sm_35_bit | sm_37_bit | sm_50_bit | sm_52_bit | sm_53_bit | sm_60_bit | sm_61_bit | sm_62_bit | sm_70_bit | sm_72_bit
|
|
72
73
|
| sm_75_bit | sm_80_bit | sm_86_bit | sm_87_bit | sm_89_bit | sm_90_bit | sm_100_bit | sm_103_bit | sm_110_bit
|
|
73
|
-
| sm_120_bit;
|
|
74
|
+
| sm_120_bit | sm_121_bit;
|
|
74
75
|
|
|
75
76
|
// Store a set of targets as a set of bits
|
|
76
77
|
struct _NV_BITSET_ATTRIBUTE target_description
|
|
@@ -105,6 +106,7 @@ enum class sm_selector : base_int_t
|
|
|
105
106
|
sm_103 = 103,
|
|
106
107
|
sm_110 = 110,
|
|
107
108
|
sm_120 = 120,
|
|
109
|
+
sm_121 = 121,
|
|
108
110
|
};
|
|
109
111
|
|
|
110
112
|
constexpr base_int_t toint(sm_selector a)
|
|
@@ -134,12 +136,14 @@ constexpr base_int_t bitexact(sm_selector a)
|
|
|
134
136
|
: toint(a) == 103 ? sm_103_bit
|
|
135
137
|
: toint(a) == 110 ? sm_110_bit
|
|
136
138
|
: toint(a) == 120 ? sm_120_bit
|
|
139
|
+
: toint(a) == 121 ? sm_121_bit
|
|
137
140
|
: 0;
|
|
138
141
|
}
|
|
139
142
|
|
|
140
143
|
constexpr base_int_t bitrounddown(sm_selector a)
|
|
141
144
|
{
|
|
142
|
-
return toint(a) >=
|
|
145
|
+
return toint(a) >= 121 ? sm_121_bit
|
|
146
|
+
: toint(a) >= 120 ? sm_120_bit
|
|
143
147
|
: toint(a) >= 110 ? sm_110_bit
|
|
144
148
|
: toint(a) >= 103 ? sm_103_bit
|
|
145
149
|
: toint(a) >= 100 ? sm_100_bit
|
|
@@ -222,6 +226,7 @@ constexpr sm_selector sm_100 = sm_selector::sm_100;
|
|
|
222
226
|
constexpr sm_selector sm_103 = sm_selector::sm_103;
|
|
223
227
|
constexpr sm_selector sm_110 = sm_selector::sm_110;
|
|
224
228
|
constexpr sm_selector sm_120 = sm_selector::sm_120;
|
|
229
|
+
constexpr sm_selector sm_121 = sm_selector::sm_121;
|
|
225
230
|
|
|
226
231
|
using detail::is_exactly;
|
|
227
232
|
using detail::provides;
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
#endif // no system header
|
|
17
17
|
#include <thrust/detail/allocator/allocator_traits.h>
|
|
18
18
|
#include <thrust/detail/memory_algorithms.h>
|
|
19
|
-
#include <thrust/detail/memory_wrapper.h>
|
|
20
19
|
#include <thrust/detail/raw_pointer_cast.h>
|
|
21
20
|
#include <thrust/detail/type_deduction.h>
|
|
22
21
|
|
|
22
|
+
#include <cuda/std/__cccl/memory_wrapper.h>
|
|
23
23
|
#include <cuda/std/utility>
|
|
24
24
|
|
|
25
25
|
THRUST_NAMESPACE_BEGIN
|