Repository: NVIDIA/cccl
Pull request #4666: Implement `ranges::repeat_view`
Author: login: miscco
Created: 2025-05-09T07:11:34Z | Merged: 2025-05-22T12:12:42Z

This implements `ranges::repeat_view` as described [here](https://en.cppreference.com/w/cpp/ranges/repeat_view)


Diff:
diff --git a/libcudacxx/include/cuda/std/__ranges/repeat_view.h b/libcudacxx/include/cuda/std/__ranges/repeat_view.h
new file mode 100644
index 00000000000..54190f9b256
--- /dev/null
+++ b/libcudacxx/include/cuda/std/__ranges/repeat_view.h
@@ -0,0 +1,343 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef _LIBCUDACXX___RANGES_REPEAT_VIEW_H
+#define _LIBCUDACXX___RANGES_REPEAT_VIEW_H
+
+#include <cuda/std/detail/__config>
+
+#if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)
+#  pragma GCC system_header
+#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)
+#  pragma clang system_header
+#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)
+#  pragma system_header
+#endif // no system header
+
+#include <cuda/std/__concepts/constructible.h>
+#include <cuda/std/__concepts/same_as.h>
+#include <cuda/std/__concepts/semiregular.h>
+#include <cuda/std/__iterator/concepts.h>
+#include <cuda/std/__iterator/iterator_traits.h>
+#include <cuda/std/__iterator/unreachable_sentinel.h>
+#include <cuda/std/__memory/addressof.h>
+#include <cuda/std/__ranges/iota_view.h>
+#include <cuda/std/__ranges/movable_box.h>
+#include <cuda/std/__ranges/view_interface.h>
+#include <cuda/std/__type_traits/enable_if.h>
+#include <cuda/std/__type_traits/is_object.h>
+#include <cuda/std/__type_traits/make_unsigned.h>
+#include <cuda/std/__type_traits/remove_cv.h>
+#include <cuda/std/__type_traits/remove_cvref.h>
+#include <cuda/std/__utility/forward.h>
+#include <cuda/std/__utility/in_place.h>
+#include <cuda/std/__utility/move.h>
+#include <cuda/std/__utility/piecewise_construct.h>
+#include <cuda/std/detail/libcxx/include/tuple>
+
+#include <cuda/std/__cccl/prologue.h>
+
+// MSVC complains about [[msvc::no_unique_address]] prior to C++20 as a vendor extension
+_CCCL_DIAG_PUSH
+_CCCL_DIAG_SUPPRESS_MSVC(4848)
+
+_LIBCUDACXX_BEGIN_NAMESPACE_RANGES
+
+template <class _Tp>
+_CCCL_CONCEPT __integer_like_with_usable_difference_type =
+  __signed_integer_like<_Tp> || (__integer_like<_Tp> && weakly_incrementable<_Tp>);
+
+template <class _Tp>
+using __repeat_view_iterator_difference_t _CCCL_NODEBUG_ALIAS = _If<__signed_integer_like<_Tp>, _Tp, _IotaDiffT<_Tp>>;
+
+#if !defined(_CCCL_NO_CONCEPTS)
+template <move_constructible _Tp, semiregular _Bound = unreachable_sentinel_t>
+  requires(is_object_v<_Tp> && same_as<_Tp, remove_cv_t<_Tp>>
+           && (__integer_like_with_usable_difference_type<_Bound> || same_as<_Bound, unreachable_sentinel_t>) )
+#else // ^^^ !_CCCL_NO_CONCEPTS ^^^ / vvv _CCCL_NO_CONCEPTS vvv
+template <
+  class _Tp,
+  class _Bound                                                         = unreachable_sentinel_t,
+  enable_if_t<move_constructible<_Tp>, int>                            = 0,
+  enable_if_t<semiregular<_Bound>, int>                                = 0,
+  enable_if_t<is_object_v<_Tp> && same_as<_Tp, remove_cv_t<_Tp>>, int> = 0,
+  enable_if_t<(__integer_like_with_usable_difference_type<_Bound> || same_as<_Bound, unreachable_sentinel_t>), int> = 0>
+#endif // _CCCL_NO_CONCEPTS
+class repeat_view : public view_interface<repeat_view<_Tp, _Bound>>
+{
+public:
+  class __iterator
+  {
+    friend class repeat_view;
+
+    using _IndexT _CCCL_NODEBUG_ALIAS = conditional_t<same_as<_Bound, unreachable_sentinel_t>, ptrdiff_t, _Bound>;
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr explicit __iterator(
+      const _Tp* __value, _IndexT __bound_sentinel = _IndexT()) noexcept(is_nothrow_copy_constructible_v<_IndexT>)
+        : __value_(__value)
+        , __current_(__bound_sentinel)
+    {}
+
+  public:
+    using iterator_concept  = random_access_iterator_tag;
+    using iterator_category = random_access_iterator_tag;
+    using value_type        = _Tp;
+    using difference_type   = __repeat_view_iterator_difference_t<_IndexT>;
+
+    _CCCL_HIDE_FROM_ABI __iterator() = default;
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI constexpr const _Tp& operator*() const noexcept
+    {
+      return *__value_;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator& operator++()
+    {
+      ++__current_;
+      return *this;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator operator++(int)
+    {
+      auto __tmp = *this;
+      ++*this;
+      return __tmp;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator& operator--()
+    {
+      if constexpr (!same_as<_Bound, unreachable_sentinel_t>)
+      {
+        _CCCL_ASSERT(__current_ > 0, "The value of bound must be greater than or equal to 0");
+      }
+      --__current_;
+      return *this;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator operator--(int)
+    {
+      auto __tmp = *this;
+      --*this;
+      return __tmp;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator& operator+=(difference_type __n)
+    {
+      if constexpr (!same_as<_Bound, unreachable_sentinel_t>)
+      {
+        _CCCL_ASSERT(__current_ + __n >= 0, "The value of bound must be greater than or equal to 0");
+      }
+      __current_ += static_cast<_IndexT>(__n);
+      return *this;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator& operator-=(difference_type __n)
+    {
+      if constexpr (!same_as<_Bound, unreachable_sentinel_t>)
+      {
+        _CCCL_ASSERT(__current_ - __n >= 0, "The value of bound must be greater than or equal to 0");
+      }
+      __current_ -= static_cast<_IndexT>(__n);
+      return *this;
+    }
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI constexpr const _Tp& operator[](difference_type __n) const noexcept
+    {
+      return *(*this + __n);
+    }
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr bool
+    operator==(const __iterator& __x, const __iterator& __y)
+    {
+      return __x.__current_ == __y.__current_;
+    }
+#if _CCCL_STD_VER <= 2017
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr bool
+    operator!=(const __iterator& __x, const __iterator& __y)
+    {
+      return __x.__current_ != __y.__current_;
+    }
+#endif // _CCCL_STD_VER <= 2017
+
+#if _LIBCUDACXX_HAS_SPACESHIP_OPERATOR()
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr auto
+    operator<=>(const __iterator& __x, const __iterator& __y)
+    {
+      return __x.__current_ <=> __y.__current_;
+    }
+#endif // _LIBCUDACXX_HAS_NO_SPACESHIP_OPERATOR()
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr bool operator<(const __iterator& __x, const __iterator& __y)
+    {
+      return __x.__current_ < __y.__current_;
+    }
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr bool
+    operator<=(const __iterator& __x, const __iterator& __y)
+    {
+      return __x.__current_ <= __y.__current_;
+    }
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr bool operator>(const __iterator& __x, const __iterator& __y)
+    {
+      return __x.__current_ > __y.__current_;
+    }
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr bool
+    operator>=(const __iterator& __x, const __iterator& __y)
+    {
+      return __x.__current_ >= __y.__current_;
+    }
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr __iterator operator+(__iterator __i, difference_type __n)
+    {
+      __i += __n;
+      return __i;
+    }
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr __iterator operator+(difference_type __n, __iterator __i)
+    {
+      __i += __n;
+      return __i;
+    }
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr __iterator operator-(__iterator __i, difference_type __n)
+    {
+      __i -= __n;
+      return __i;
+    }
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr difference_type
+    operator-(const __iterator& __x, const __iterator& __y)
+    {
+      return static_cast<difference_type>(__x.__current_) - static_cast<difference_type>(__y.__current_);
+    }
+
+  private:
+    const _Tp* __value_ = nullptr;
+    _IndexT __current_  = _IndexT();
+  };
+
+#if !defined(_CCCL_NO_CONCEPTS)
+  _CCCL_HIDE_FROM_ABI repeat_view()
+    requires default_initializable<_Tp>
+  = default;
+#else // ^^^ !_CCCL_NO_CONCEPTS ^^^ / vvv _CCCL_NO_CONCEPTS vvv
+  _CCCL_TEMPLATE(class _Tp2 = _Tp)
+  _CCCL_REQUIRES(default_initializable<_Tp2>)
+  _LIBCUDACXX_HIDE_FROM_ABI constexpr repeat_view() noexcept(is_nothrow_default_constructible_v<_Tp2>) {}
+#endif // _CCCL_NO_CONCEPTS
+
+  _CCCL_TEMPLATE(class _Tp2 = _Tp)
+  _CCCL_REQUIRES((!same_as<_Tp2, repeat_view>) _CCCL_AND copy_constructible<_Tp2>)
+  _LIBCUDACXX_HIDE_FROM_ABI constexpr explicit repeat_view(const _Tp2& __value, _Bound __bound_sentinel = _Bound())
+      : __value_(in_place, __value)
+      , __bound_(__bound_sentinel)
+  {
+    if constexpr (!same_as<_Bound, unreachable_sentinel_t> && _CCCL_TRAIT(is_signed, _Bound))
+    {
+      _CCCL_ASSERT(__bound_ >= 0, "The value of bound must be greater than or equal to 0");
+    }
+  }
+
+  _LIBCUDACXX_HIDE_FROM_ABI constexpr explicit repeat_view(_Tp&& __value, _Bound __bound_sentinel = _Bound())
+      : __value_(in_place, _CUDA_VSTD::move(__value))
+      , __bound_(__bound_sentinel)
+  {
+    if constexpr (!same_as<_Bound, unreachable_sentinel_t> && _CCCL_TRAIT(is_signed, _Bound))
+    {
+      _CCCL_ASSERT(__bound_ >= 0, "The value of bound must be greater than or equal to 0");
+    }
+  }
+
+  _CCCL_TEMPLATE(class... _TpArgs, class... _BoundArgs)
+  _CCCL_REQUIRES(constructible_from<_Tp, _TpArgs...> _CCCL_AND constructible_from<_Bound, _BoundArgs...>)
+  _LIBCUDACXX_HIDE_FROM_ABI constexpr explicit repeat_view(
+    piecewise_construct_t, tuple<_TpArgs...> __value_args, tuple<_BoundArgs...> __bound_args = tuple<>{})
+      : __value_(in_place, _CUDA_VSTD::make_from_tuple<_Tp>(_CUDA_VSTD::move(__value_args)))
+      , __bound_(_CUDA_VSTD::make_from_tuple<_Bound>(_CUDA_VSTD::move(__bound_args)))
+  {
+    if constexpr (!same_as<_Bound, unreachable_sentinel_t> && _CCCL_TRAIT(is_signed, _Bound))
+    {
+      _CCCL_ASSERT(__bound_ >= 0,
+                   "The behavior is undefined if Bound is not unreachable_sentinel_t and bound is negative");
+    }
+  }
+
+  [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator begin() const
+  {
+    return __iterator(_CUDA_VSTD::addressof(*__value_));
+  }
+
+  _LIBCUDACXX_HIDE_FROM_ABI constexpr auto end() const noexcept(is_nothrow_copy_constructible_v<_Bound>)
+  {
+    if constexpr (same_as<_Bound, unreachable_sentinel_t>)
+    {
+      return unreachable_sentinel;
+    }
+    else
+    {
+      return __iterator(_CUDA_VSTD::addressof(*__value_), __bound_);
+    }
+  }
+
+  _CCCL_TEMPLATE(class _Bound2 = _Bound)
+  _CCCL_REQUIRES((!same_as<_Bound2, unreachable_sentinel_t>) )
+  _LIBCUDACXX_HIDE_FROM_ABI constexpr auto size() const
+  {
+    return _CUDA_VSTD::__to_unsigned_like(__bound_);
+  }
+
+private:
+  _CCCL_NO_UNIQUE_ADDRESS __movable_box<_Tp> __value_;
+  _CCCL_NO_UNIQUE_ADDRESS _Bound __bound_ = _Bound();
+};
+
+template <class _Tp, class _Bound>
+_CCCL_HOST_DEVICE repeat_view(_Tp, _Bound) -> repeat_view<_Tp, _Bound>;
+
+_LIBCUDACXX_END_NAMESPACE_RANGES
+
+// clang-format off
+_LIBCUDACXX_BEGIN_NAMESPACE_VIEWS
+_LIBCUDACXX_BEGIN_NAMESPACE_CPO(__repeat)
+struct __fn {
+  template <class _Tp>
+  [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __value) const
+    noexcept(noexcept(ranges::repeat_view(_CUDA_VSTD::forward<_Tp>(__value))))
+    -> repeat_view<remove_cvref_t<_Tp>>
+    { return          ranges::repeat_view(_CUDA_VSTD::forward<_Tp>(__value)); }
+
+
+  template <class _Tp, class _Bound>
+  [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __value, _Bound&& __bound_sentinel) const
+    noexcept(noexcept(ranges::repeat_view(_CUDA_VSTD::forward<_Tp>(__value), _CUDA_VSTD::forward<_Bound>(__bound_sentinel))))
+    -> repeat_view<remove_cvref_t<_Tp>, remove_cvref_t<_Bound>>
+    { return          ranges::repeat_view(_CUDA_VSTD::forward<_Tp>(__value), _CUDA_VSTD::forward<_Bound>(__bound_sentinel)); }
+};
+_LIBCUDACXX_END_NAMESPACE_CPO
+// clang-format on
+
+inline namespace __cpo
+{
+_CCCL_GLOBAL_CONSTANT auto repeat = __repeat::__fn{};
+} // namespace __cpo
+_LIBCUDACXX_END_NAMESPACE_VIEWS
+
+_LIBCUDACXX_BEGIN_NAMESPACE_RANGES
+
+template <class _Tp>
+inline constexpr bool __is_repeat_specialization = false;
+
+template <class _Tp, class _Bound>
+inline constexpr bool __is_repeat_specialization<repeat_view<_Tp, _Bound>> = true;
+
+_LIBCUDACXX_END_NAMESPACE_RANGES
+
+#include <cuda/std/__cccl/epilogue.h>
+
+#endif // _LIBCUDACXX___RANGES_REPEAT_VIEW_H
diff --git a/libcudacxx/include/cuda/std/ranges b/libcudacxx/include/cuda/std/ranges
index 97d0b81d686..499414fdc9a 100644
--- a/libcudacxx/include/cuda/std/ranges
+++ b/libcudacxx/include/cuda/std/ranges
@@ -40,6 +40,7 @@ _CCCL_DIAG_SUPPRESS_MSVC(4848)
 #include <cuda/std/__ranges/rbegin.h>
 #include <cuda/std/__ranges/ref_view.h>
 #include <cuda/std/__ranges/rend.h>
+#include <cuda/std/__ranges/repeat_view.h>
 #include <cuda/std/__ranges/single_view.h>
 #include <cuda/std/__ranges/size.h>
 #include <cuda/std/__ranges/subrange.h>
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/begin.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/begin.pass.cpp
new file mode 100644
index 00000000000..16d655a508a
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/begin.pass.cpp
@@ -0,0 +1,62 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// constexpr iterator begin() const;
+
+#include <cuda/std/cassert>
+#include <cuda/std/concepts>
+#include <cuda/std/ranges>
+
+#include "test_macros.h"
+
+__host__ __device__ constexpr bool test()
+{
+  // Test unbound && non-const view
+  {
+    cuda::std::ranges::repeat_view<int> rv(0);
+    decltype(auto) iter = rv.begin();
+    static_assert(cuda::std::same_as<cuda::std::ranges::iterator_t<decltype(rv)>, decltype(iter)>);
+    assert(*iter == 0);
+  }
+
+  // Test unbound && const view
+  {
+    const cuda::std::ranges::repeat_view<int> rv(0);
+    decltype(auto) iter = rv.begin();
+    static_assert(cuda::std::same_as<cuda::std::ranges::iterator_t<decltype(rv)>, decltype(iter)>);
+    assert(*iter == 0);
+  }
+
+  // Test bound && non-const view
+  {
+    cuda::std::ranges::repeat_view<int, int> rv(1024, 10);
+    decltype(auto) iter = rv.begin();
+    static_assert(cuda::std::same_as<cuda::std::ranges::iterator_t<decltype(rv)>, decltype(iter)>);
+    assert(*iter == 1024);
+  }
+
+  // Test bound && const view
+  {
+    const cuda::std::ranges::repeat_view<int, long long> rv(1024, 10);
+    decltype(auto) iter = rv.begin();
+    static_assert(cuda::std::same_as<cuda::std::ranges::iterator_t<decltype(rv)>, decltype(iter)>);
+    assert(*iter == 1024);
+  }
+
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/ctad.compile.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/ctad.compile.pass.cpp
new file mode 100644
index 00000000000..3ae0e594121
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/ctad.compile.pass.cpp
@@ -0,0 +1,41 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// template<class T, class Bound>
+//    repeat_view(T, Bound) -> repeat_view<T, Bound>;
+
+#include <cuda/std/concepts>
+#include <cuda/std/ranges>
+#include <cuda/std/utility>
+
+#include "test_macros.h"
+
+struct Empty
+{};
+
+int main(int, char**)
+{
+  Empty empty{};
+
+  // clang-format off
+  static_assert(cuda::std::same_as<decltype(cuda::std::ranges::repeat_view(Empty{})), cuda::std::ranges::repeat_view<Empty>>);
+#if 0 // No passing in any compiler, maybe C++23 only fix?
+  static_assert(cuda::std::same_as<decltype(cuda::std::ranges::repeat_view(empty)), cuda::std::ranges::repeat_view<Empty>>);
+#endif //
+  static_assert(cuda::std::same_as<decltype(cuda::std::ranges::repeat_view(cuda::std::move(empty))), cuda::std::ranges::repeat_view<Empty>>);
+  static_assert(cuda::std::same_as<decltype(cuda::std::ranges::repeat_view(10, 1)), cuda::std::ranges::repeat_view<int, int>>);
+  static_assert(cuda::std::same_as<decltype(cuda::std::ranges::repeat_view(10, 1U)), cuda::std::ranges::repeat_view<int, unsigned>>);
+  static_assert(cuda::std::same_as<decltype(cuda::std::ranges::repeat_view(10, 1UL)), cuda::std::ranges::repeat_view<int, unsigned long>>);
+  // clang-format on
+
+  unused(empty);
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/ctor.default.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/ctor.default.pass.cpp
new file mode 100644
index 00000000000..1bdc594ecb0
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/ctor.default.pass.cpp
@@ -0,0 +1,44 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// repeat_view() requires default_initializable<T> = default;
+
+#include <cuda/std/cassert>
+#include <cuda/std/concepts>
+#include <cuda/std/ranges>
+
+struct DefaultInt42
+{
+  int value = 42;
+};
+
+struct Int
+{
+  __host__ __device__ Int(int) {}
+};
+
+static_assert(cuda::std::default_initializable<cuda::std::ranges::repeat_view<DefaultInt42>>);
+static_assert(!cuda::std::default_initializable<cuda::std::ranges::repeat_view<Int>>);
+
+__host__ __device__ constexpr bool test()
+{
+  cuda::std::ranges::repeat_view<DefaultInt42> rv;
+  assert((*rv.begin()).value == 42);
+
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/ctor.piecewise.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/ctor.piecewise.pass.cpp
new file mode 100644
index 00000000000..8618e388a83
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/ctor.piecewise.pass.cpp
@@ -0,0 +1,148 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// template<class... TArgs, class... BoundArgs>
+//       requires constructible_from<T, TArgs...> &&
+//                constructible_from<Bound, BoundArgs...>
+//     constexpr explicit repeat_view(piecewise_construct_t,
+//       tuple<TArgs...> value_args, tuple<BoundArgs...> bound_args = tuple<>{});
+
+#include <cuda/std/cassert>
+#include <cuda/std/concepts>
+#include <cuda/std/ranges>
+#include <cuda/std/tuple>
+#include <cuda/std/utility>
+
+struct C
+{};
+
+struct B
+{
+  int v;
+};
+
+struct A
+{
+  int x = 111;
+  int y = 222;
+
+  constexpr A() = default;
+  __host__ __device__ constexpr A(B b)
+      : x(b.v)
+      , y(b.v + 1)
+  {}
+  __host__ __device__ constexpr A(int _x, int _y)
+      : x(_x)
+      , y(_y)
+  {}
+};
+
+static_assert(cuda::std::constructible_from<cuda::std::ranges::repeat_view<A, int>,
+                                            cuda::std::piecewise_construct_t,
+                                            cuda::std::tuple<int, int>,
+                                            cuda::std::tuple<int>>);
+static_assert(cuda::std::constructible_from<cuda::std::ranges::repeat_view<A, int>,
+                                            cuda::std::piecewise_construct_t,
+                                            cuda::std::tuple<B>,
+                                            cuda::std::tuple<int>>);
+static_assert(cuda::std::constructible_from<cuda::std::ranges::repeat_view<A, int>,
+                                            cuda::std::piecewise_construct_t,
+                                            cuda::std::tuple<>,
+                                            cuda::std::tuple<int>>);
+static_assert(cuda::std::constructible_from<cuda::std::ranges::repeat_view<A>,
+                                            cuda::std::piecewise_construct_t,
+                                            cuda::std::tuple<int, int>,
+                                            cuda::std::tuple<cuda::std::unreachable_sentinel_t>>);
+static_assert(cuda::std::constructible_from<cuda::std::ranges::repeat_view<A>,
+                                            cuda::std::piecewise_construct_t,
+                                            cuda::std::tuple<B>,
+                                            cuda::std::tuple<cuda::std::unreachable_sentinel_t>>);
+static_assert(cuda::std::constructible_from<cuda::std::ranges::repeat_view<A>,
+                                            cuda::std::piecewise_construct_t,
+                                            cuda::std::tuple<>,
+                                            cuda::std::tuple<cuda::std::unreachable_sentinel_t>>);
+static_assert(!cuda::std::constructible_from<cuda::std::ranges::repeat_view<A, int>,
+                                             cuda::std::piecewise_construct_t,
+                                             cuda::std::tuple<C>,
+                                             cuda::std::tuple<int>>);
+static_assert(!cuda::std::constructible_from<cuda::std::ranges::repeat_view<A>,
+                                             cuda::std::piecewise_construct_t,
+                                             cuda::std::tuple<C>,
+                                             cuda::std::tuple<cuda::std::unreachable_sentinel_t>>);
+static_assert(!cuda::std::constructible_from<cuda::std::ranges::repeat_view<A, int>,
+                                             cuda::std::piecewise_construct_t,
+                                             cuda::std::tuple<int, int, int>,
+                                             cuda::std::tuple<int>>);
+static_assert(!cuda::std::constructible_from<cuda::std::ranges::repeat_view<A>,
+                                             cuda::std::piecewise_construct_t,
+                                             cuda::std::tuple<int, int, int>,
+                                             cuda::std::tuple<cuda::std::unreachable_sentinel_t>>);
+static_assert(!cuda::std::constructible_from<cuda::std::ranges::repeat_view<A>,
+                                             cuda::std::piecewise_construct_t,
+                                             cuda::std::tuple<B>,
+                                             cuda::std::tuple<int>>);
+
+__host__ __device__ constexpr bool test()
+{
+  {
+    cuda::std::ranges::repeat_view<A, int> rv(cuda::std::piecewise_construct, cuda::std::tuple{}, cuda::std::tuple{3});
+    assert(rv.size() == 3);
+    assert(rv[0].x == 111);
+    assert(rv[0].y == 222);
+    assert(rv.begin() + 3 == rv.end());
+  }
+  {
+    cuda::std::ranges::repeat_view<A> rv(
+      cuda::std::piecewise_construct, cuda::std::tuple{}, cuda::std::tuple{cuda::std::unreachable_sentinel});
+    assert(rv[0].x == 111);
+    assert(rv[0].y == 222);
+    assert(rv.begin() + 300 != rv.end());
+  }
+  {
+    cuda::std::ranges::repeat_view<A, int> rv(
+      cuda::std::piecewise_construct, cuda::std::tuple{1, 2}, cuda::std::tuple{3});
+    assert(rv.size() == 3);
+    assert(rv[0].x == 1);
+    assert(rv[0].y == 2);
+    assert(rv.begin() + 3 == rv.end());
+  }
+  {
+    cuda::std::ranges::repeat_view<A> rv(
+      cuda::std::piecewise_construct, cuda::std::tuple{1, 2}, cuda::std::tuple{cuda::std::unreachable_sentinel});
+    assert(rv[0].x == 1);
+    assert(rv[0].y == 2);
+    assert(rv.begin() + 300 != rv.end());
+  }
+  {
+    cuda::std::ranges::repeat_view<A, int> rv(
+      cuda::std::piecewise_construct, cuda::std::tuple{B{11}}, cuda::std::tuple{3});
+    assert(rv.size() == 3);
+    assert(rv[0].x == 11);
+    assert(rv[0].y == 12);
+    assert(rv.begin() + 3 == rv.end());
+  }
+  {
+    cuda::std::ranges::repeat_view<A> rv(
+      cuda::std::piecewise_construct, cuda::std::tuple{B{10}}, cuda::std::tuple{cuda::std::unreachable_sentinel});
+    assert(rv[0].x == 10);
+    assert(rv[0].y == 11);
+    assert(rv.begin() + 300 != rv.end());
+  }
+
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  // static_assert(test());
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/ctor.value.bound.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/ctor.value.bound.pass.cpp
new file mode 100644
index 00000000000..b31dd2fc03f
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/ctor.value.bound.pass.cpp
@@ -0,0 +1,102 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// constexpr explicit repeat_view(const T& value, Bound bound = Bound()) requires copy_constructible<T>;
+// constexpr explicit repeat_view(T&& value, Bound bound = Bound());
+
+#include <cuda/std/cassert>
+#include <cuda/std/iterator>
+#include <cuda/std/ranges>
+#include <cuda/std/type_traits>
+
+#include "MoveOnly.h"
+#include "test_macros.h"
+
+struct Empty
+{};
+
+// Test explicit
+static_assert(cuda::std::is_constructible_v<cuda::std::ranges::repeat_view<Empty>, const Empty&>);
+static_assert(cuda::std::is_constructible_v<cuda::std::ranges::repeat_view<Empty>, Empty&&>);
+static_assert(cuda::std::is_constructible_v<cuda::std::ranges::repeat_view<Empty, int>, const Empty&>);
+static_assert(cuda::std::is_constructible_v<cuda::std::ranges::repeat_view<Empty, int>, Empty&&>);
+
+static_assert(!cuda::std::is_convertible_v<const Empty&, cuda::std::ranges::repeat_view<Empty>>);
+static_assert(!cuda::std::is_convertible_v<Empty&&, cuda::std::ranges::repeat_view<Empty>>);
+static_assert(!cuda::std::is_convertible_v<const Empty&, cuda::std::ranges::repeat_view<Empty, int>>);
+static_assert(!cuda::std::is_convertible_v<Empty&&, cuda::std::ranges::repeat_view<Empty, int>>);
+
+static_assert(!cuda::std::is_constructible_v<cuda::std::ranges::repeat_view<MoveOnly>, const MoveOnly&>);
+static_assert(cuda::std::is_constructible_v<cuda::std::ranges::repeat_view<MoveOnly>, MoveOnly&&>);
+
+__host__ __device__ constexpr bool test()
+{
+  // Move && unbound && default argument
+  {
+    cuda::std::ranges::repeat_view<Empty> rv(Empty{});
+    assert(rv.begin() + 10 != rv.end());
+  }
+
+  // Move && unbound && user-provided argument
+  {
+    cuda::std::ranges::repeat_view<Empty> rv(Empty{}, cuda::std::unreachable_sentinel);
+    assert(rv.begin() + 10 != rv.end());
+  }
+
+  // Move && bound && default argument
+  {
+    cuda::std::ranges::repeat_view<Empty, int> rv(Empty{});
+    assert(rv.begin() == rv.end());
+  }
+
+  // Move && bound && user-provided argument
+  {
+    cuda::std::ranges::repeat_view<Empty, int> rv(Empty{}, 10);
+    assert(rv.begin() + 10 == rv.end());
+  }
+
+  // Copy && unbound && default argument
+  {
+    Empty e{};
+    cuda::std::ranges::repeat_view<Empty> rv(e);
+    assert(rv.begin() + 10 != rv.end());
+  }
+
+  // Copy && unbound && user-provided argument
+  {
+    Empty e{};
+    cuda::std::ranges::repeat_view<Empty> rv(e, cuda::std::unreachable_sentinel);
+    assert(rv.begin() + 10 != rv.end());
+  }
+
+  // Copy && bound && default argument
+  {
+    Empty e{};
+    cuda::std::ranges::repeat_view<Empty, int> rv(e);
+    assert(rv.begin() == rv.end());
+  }
+
+  // Copy && bound && user-provided argument
+  {
+    Empty e{};
+    cuda::std::ranges::repeat_view<Empty, int> rv(e, 10);
+    assert(rv.begin() + 10 == rv.end());
+  }
+
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/end.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/end.pass.cpp
new file mode 100644
index 00000000000..0f752ea69b4
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/end.pass.cpp
@@ -0,0 +1,60 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// constexpr unreachable_sentinel_t end() const noexcept;
+// constexpr iterator end() const requires (!same_as<Bound, unreachable_sentinel_t>);
+
+#include <cuda/std/cassert>
+#include <cuda/std/concepts>
+#include <cuda/std/iterator>
+#include <cuda/std/ranges>
+
+#include "test_macros.h"
+
+__host__ __device__ constexpr bool test()
+{
+  // bound
+  {
+    cuda::std::ranges::repeat_view<int, int> rv(0, 10);
+    assert(rv.begin() + 10 == rv.end());
+    decltype(auto) iter = rv.end();
+    static_assert(cuda::std::same_as<cuda::std::ranges::iterator_t<decltype(rv)>, decltype(iter)>);
+    static_assert(cuda::std::same_as<decltype(*iter), const int&>);
+    for (const auto& i : rv)
+    {
+      assert(i == 0);
+    }
+    unused(iter);
+  }
+
+#if 0 // Unimplemented take_view
+  // unbound
+  {
+    cuda::std::ranges::repeat_view<int> rv(0);
+    assert(rv.begin() + 10 != rv.end());
+    decltype(auto) iter = rv.end();
+    static_assert(cuda::std::same_as<cuda::std::unreachable_sentinel_t, decltype(iter)>);
+    static_assert(noexcept(rv.end()));
+    for (const auto& i : rv | cuda::std::views::take(10)) {
+      assert(i == 0);
+    }
+    unused(iter);
+  }
+#endif // Unimplemented take_view
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/compare.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/compare.pass.cpp
new file mode 100644
index 00000000000..cd2d850a3f5
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/compare.pass.cpp
@@ -0,0 +1,118 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// repeat_view::<iterator>::operator{==,<=>}
+
+#include <cuda/std/cassert>
+#include <cuda/std/concepts>
+#include <cuda/std/ranges>
+
+#include "test_macros.h"
+
+__host__ __device__ constexpr bool test()
+{
+  // Test unbound
+  {
+    using R = cuda::std::ranges::repeat_view<int>;
+#if _LIBCUDACXX_HAS_SPACESHIP_OPERATOR()
+    static_assert(cuda::std::three_way_comparable<cuda::std::ranges::iterator_t<R>>);
+#endif // !_LIBCUDACXX_HAS_NO_SPACESHIP_OPERATOR
+
+    R r(42);
+    auto iter1 = r.begin();
+    auto iter2 = iter1 + 1;
+
+    static_assert(cuda::std::same_as<decltype(iter1 == iter2), bool>);
+
+    assert(iter1 == iter1);
+    assert(!(iter1 == iter2));
+    assert(iter2 == iter2);
+
+    assert(!(iter1 < iter1));
+    assert(iter1 < iter2);
+    assert(!(iter2 < iter1));
+    assert(iter1 <= iter1);
+    assert(iter1 <= iter2);
+    assert(!(iter2 <= iter1));
+    assert(!(iter1 > iter1));
+    assert(!(iter1 > iter2));
+    assert(iter2 > iter1);
+    assert(iter1 >= iter1);
+    assert(!(iter1 >= iter2));
+    assert(iter2 >= iter1);
+    assert(iter1 == iter1);
+    assert(!(iter1 == iter2));
+    assert(iter2 == iter2);
+    assert(!(iter1 != iter1));
+    assert(iter1 != iter2);
+    assert(!(iter2 != iter2));
+
+#if _LIBCUDACXX_HAS_SPACESHIP_OPERATOR()
+    assert((iter1 <=> iter2) == cuda::std::strong_ordering::less);
+    assert((iter1 <=> iter1) == cuda::std::strong_ordering::equal);
+    assert((iter2 <=> iter1) == cuda::std::strong_ordering::greater);
+
+    static_assert(cuda::std::same_as<decltype(iter1 <=> iter2), cuda::std::strong_ordering>);
+#endif // !_LIBCUDACXX_HAS_NO_SPACESHIP_OPERATOR
+  }
+
+  // Test bound
+  {
+    using R = cuda::std::ranges::repeat_view<int, int>;
+#if _LIBCUDACXX_HAS_SPACESHIP_OPERATOR()
+    static_assert(cuda::std::three_way_comparable<cuda::std::ranges::iterator_t<R>>);
+#endif // !_LIBCUDACXX_HAS_NO_SPACESHIP_OPERATOR
+
+    R r(42, 10);
+    auto iter1 = r.begin();
+    auto iter2 = iter1 + 1;
+
+    static_assert(cuda::std::same_as<decltype(iter1 == iter2), bool>);
+
+    assert(iter1 == iter1);
+    assert(!(iter1 == iter2));
+    assert(iter2 == iter2);
+
+    assert(!(iter1 < iter1));
+    assert(iter1 < iter2);
+    assert(!(iter2 < iter1));
+    assert(iter1 <= iter1);
+    assert(iter1 <= iter2);
+    assert(!(iter2 <= iter1));
+    assert(!(iter1 > iter1));
+    assert(!(iter1 > iter2));
+    assert(iter2 > iter1);
+    assert(iter1 >= iter1);
+    assert(!(iter1 >= iter2));
+    assert(iter2 >= iter1);
+    assert(iter1 == iter1);
+    assert(!(iter1 == iter2));
+    assert(iter2 == iter2);
+    assert(!(iter1 != iter1));
+    assert(iter1 != iter2);
+    assert(!(iter2 != iter2));
+
+#if _LIBCUDACXX_HAS_SPACESHIP_OPERATOR()
+    assert((iter1 <=> iter2) == cuda::std::strong_ordering::less);
+    assert((iter1 <=> iter1) == cuda::std::strong_ordering::equal);
+    assert((iter2 <=> iter1) == cuda::std::strong_ordering::greater);
+#endif // !_LIBCUDACXX_HAS_NO_SPACESHIP_OPERATOR
+  }
+
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/ctor.default.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/ctor.default.pass.cpp
new file mode 100644
index 00000000000..dc137ad5fde
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/ctor.default.pass.cpp
@@ -0,0 +1,34 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// iterator() = default;
+
+#include <cuda/std/ranges>
+#include <cuda/std/type_traits>
+
+#include "test_macros.h"
+
+__host__ __device__ constexpr bool test()
+{
+  using Iter = cuda::std::ranges::iterator_t<cuda::std::ranges::repeat_view<int>>;
+  static_assert(cuda::std::is_default_constructible_v<Iter>);
+  Iter iter;
+  unused(iter);
+
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/decrement.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/decrement.pass.cpp
new file mode 100644
index 00000000000..3f44bf107a4
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/decrement.pass.cpp
@@ -0,0 +1,40 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// constexpr iterator& operator--();
+// constexpr iterator operator--(int);
+
+#include <cuda/std/cassert>
+#include <cuda/std/ranges>
+
+#include "test_macros.h"
+
+__host__ __device__ constexpr bool test()
+{
+  using Iter = cuda::std::ranges::iterator_t<cuda::std::ranges::repeat_view<int>>;
+  cuda::std::ranges::repeat_view<int> rv(10);
+  auto iter = rv.begin() + 10;
+
+  assert(iter-- == rv.begin() + 10);
+  assert(--iter == rv.begin() + 8);
+
+  static_assert(cuda::std::same_as<decltype(iter--), Iter>);
+  static_assert(cuda::std::same_as<decltype(--iter), Iter&>);
+
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/increment.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/increment.pass.cpp
new file mode 100644
index 00000000000..3d75bddef93
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/increment.pass.cpp
@@ -0,0 +1,42 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// constexpr iterator& operator++();
+// constexpr void operator++(int);
+
+#include <cuda/std/cassert>
+#include <cuda/std/concepts>
+#include <cuda/std/ranges>
+
+#include "test_macros.h"
+
+__host__ __device__ constexpr bool test()
+{
+  using Iter = cuda::std::ranges::iterator_t<cuda::std::ranges::repeat_view<int>>;
+  cuda::std::ranges::repeat_view<int> rv(10);
+  using Iter = cuda::std::ranges::iterator_t<cuda::std::ranges::repeat_view<int>>;
+  auto iter  = rv.begin();
+
+  assert(iter++ == rv.begin());
+  assert(++iter == rv.begin() + 2);
+
+  static_assert(cuda::std::same_as<decltype(iter++), Iter>);
+  static_assert(cuda::std::same_as<decltype(++iter), Iter&>);
+
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/member_typedefs.compile.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/member_typedefs.compile.pass.cpp
new file mode 100644
index 00000000000..b70864635ff
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/member_typedefs.compile.pass.cpp
@@ -0,0 +1,114 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// Test iterator category and iterator concepts.
+
+// using index-type = conditional_t<same_as<Bound, unreachable_sentinel_t>, ptrdiff_t, Bound>;
+// using iterator_concept = random_access_iterator_tag;
+// using iterator_category = random_access_iterator_tag;
+// using value_type = T;
+// using difference_type = see below:
+// If is-signed-integer-like<index-type> is true, the member typedef-name difference_type denotes
+// index-type. Otherwise, it denotes IOTA-DIFF-T(index-type).
+
+#include <cuda/std/cassert>
+#include <cuda/std/concepts>
+#include <cuda/std/cstdint>
+#include <cuda/std/ranges>
+#include <cuda/std/type_traits>
+
+__host__ __device__ constexpr bool test()
+{
+  // unbound
+  {
+    using Iter = cuda::std::ranges::iterator_t<cuda::std::ranges::repeat_view<int>>;
+    static_assert(cuda::std::same_as<Iter::iterator_concept, cuda::std::random_access_iterator_tag>);
+    static_assert(cuda::std::same_as<Iter::iterator_category, cuda::std::random_access_iterator_tag>);
+    static_assert(cuda::std::same_as<Iter::value_type, int>);
+    static_assert(cuda::std::same_as<Iter::difference_type, ptrdiff_t>);
+    static_assert(cuda::std::is_signed_v<Iter::difference_type>);
+  }
+
+  // bound
+  {
+    {
+      using Iter = cuda::std::ranges::iterator_t<const cuda::std::ranges::repeat_view<int, cuda::std::int8_t>>;
+      static_assert(cuda::std::same_as<Iter::iterator_concept, cuda::std::random_access_iterator_tag>);
+      static_assert(cuda::std::same_as<Iter::iterator_category, cuda::std::random_access_iterator_tag>);
+      static_assert(cuda::std::same_as<Iter::value_type, int>);
+      static_assert(cuda::std::is_signed_v<Iter::difference_type>);
+      static_assert(sizeof(Iter::difference_type) == sizeof(cuda::std::int8_t));
+    }
+
+    {
+      using Iter = cuda::std::ranges::iterator_t<const cuda::std::ranges::repeat_view<int, cuda::std::uint8_t>>;
+      static_assert(cuda::std::same_as<Iter::iterator_concept, cuda::std::random_access_iterator_tag>);
+      static_assert(cuda::std::same_as<Iter::iterator_category, cuda::std::random_access_iterator_tag>);
+      static_assert(cuda::std::same_as<Iter::value_type, int>);
+      static_assert(cuda::std::is_signed_v<Iter::difference_type>);
+      static_assert(sizeof(Iter::difference_type) > sizeof(cuda::std::uint8_t));
+    }
+
+    {
+      using Iter = cuda::std::ranges::iterator_t<const cuda::std::ranges::repeat_view<int, cuda::std::int16_t>>;
+      static_assert(cuda::std::same_as<Iter::iterator_concept, cuda::std::random_access_iterator_tag>);
+      static_assert(cuda::std::same_as<Iter::iterator_category, cuda::std::random_access_iterator_tag>);
+      static_assert(cuda::std::same_as<Iter::value_type, int>);
+      static_assert(cuda::std::is_signed_v<Iter::difference_type>);
+      static_assert(sizeof(Iter::difference_type) == sizeof(cuda::std::int16_t));
+    }
+
+    {
+      using Iter = cuda::std::ranges::iterator_t<const cuda::std::ranges::repeat_view<int, cuda::std::uint16_t>>;
+      static_assert(cuda::std::same_as<Iter::iterator_concept, cuda::std::random_access_iterator_tag>);
+      static_assert(cuda::std::same_as<Iter::iterator_category, cuda::std::random_access_iterator_tag>);
+      static_assert(cuda::std::same_as<Iter::value_type, int>);
+      static_assert(cuda::std::is_signed_v<Iter::difference_type>);
+      static_assert(sizeof(Iter::difference_type) > sizeof(cuda::std::uint16_t));
+    }
+
+    {
+      using Iter = cuda::std::ranges::iterator_t<const cuda::std::ranges::repeat_view<int, cuda::std::int32_t>>;
+      static_assert(cuda::std::same_as<Iter::iterator_concept, cuda::std::random_access_iterator_tag>);
+      static_assert(cuda::std::same_as<Iter::iterator_category, cuda::std::random_access_iterator_tag>);
+      static_assert(cuda::std::same_as<Iter::value_type, int>);
+      static_assert(cuda::std::is_signed_v<Iter::difference_type>);
+      static_assert(sizeof(Iter::difference_type) == sizeof(cuda::std::int32_t));
+    }
+
+    {
+      using Iter = cuda::std::ranges::iterator_t<const cuda::std::ranges::repeat_view<int, cuda::std::uint32_t>>;
+      static_assert(cuda::std::same_as<Iter::iterator_concept, cuda::std::random_access_iterator_tag>);
+      static_assert(cuda::std::same_as<Iter::iterator_category, cuda::std::random_access_iterator_tag>);
+      static_assert(cuda::std::same_as<Iter::value_type, int>);
+      static_assert(cuda::std::is_signed_v<Iter::difference_type>);
+      static_assert(sizeof(Iter::difference_type) > sizeof(cuda::std::uint32_t));
+    }
+
+    {
+      using Iter = cuda::std::ranges::iterator_t<const cuda::std::ranges::repeat_view<int, cuda::std::int64_t>>;
+      static_assert(cuda::std::same_as<Iter::iterator_concept, cuda::std::random_access_iterator_tag>);
+      static_assert(cuda::std::same_as<Iter::iterator_category, cuda::std::random_access_iterator_tag>);
+      static_assert(cuda::std::same_as<Iter::value_type, int>);
+      static_assert(cuda::std::is_signed_v<Iter::difference_type>);
+      static_assert(sizeof(Iter::difference_type) == sizeof(cuda::std::int64_t));
+    }
+  }
+
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/minus.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/minus.pass.cpp
new file mode 100644
index 00000000000..65d8254f2bc
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/minus.pass.cpp
@@ -0,0 +1,71 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// friend constexpr iterator operator-(iterator i, difference_type n);
+// friend constexpr difference_type operator-(const iterator& x, const iterator& y);
+
+#include <cuda/std/cassert>
+#include <cuda/std/concepts>
+#include <cuda/std/cstdint>
+#include <cuda/std/ranges>
+
+#include "test_macros.h"
+
+__host__ __device__ constexpr bool test()
+{
+  // <iterator> - difference_type
+  {
+    using Iter = cuda::std::ranges::iterator_t<cuda::std::ranges::repeat_view<int>>;
+    cuda::std::ranges::repeat_view<int> v(0);
+    Iter iter = v.begin() + 10;
+    assert(iter - 5 == v.begin() + 5);
+    static_assert(cuda::std::same_as<decltype(iter - 5), Iter>);
+  }
+
+  // <iterator> - <iterator>
+  {
+    // unbound
+    {
+      cuda::std::ranges::repeat_view<int> v(0);
+      auto iter1 = v.begin() + 10;
+      auto iter2 = v.begin() + 5;
+      assert(iter1 - iter2 == 5);
+      static_assert(cuda::std::same_as<decltype(iter1 - iter2), ptrdiff_t>);
+    }
+
+    // bound && signed bound sentinel
+    {
+      cuda::std::ranges::repeat_view<int, int> v(0, 20);
+      auto iter1 = v.begin() + 10;
+      auto iter2 = v.begin() + 5;
+      assert(iter1 - iter2 == 5);
+      static_assert(cuda::std::same_as<decltype(iter1 - iter2), int>);
+    }
+
+    // bound && unsigned bound sentinel
+    {
+      cuda::std::ranges::repeat_view<int, unsigned> v(0, 20);
+      auto iter1 = v.begin() + 10;
+      auto iter2 = v.begin() + 5;
+      assert(iter1 - iter2 == 5);
+      static_assert(sizeof(decltype(iter1 - iter2)) > sizeof(unsigned));
+    }
+  }
+
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/minus_eq.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/minus_eq.pass.cpp
new file mode 100644
index 00000000000..a82bd1ddecd
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/minus_eq.pass.cpp
@@ -0,0 +1,38 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// constexpr iterator& operator-=(difference_type n);
+
+#include <cuda/std/cassert>
+#include <cuda/std/concepts>
+#include <cuda/std/ranges>
+
+#include "test_macros.h"
+
+__host__ __device__ constexpr bool test()
+{
+  using Iter = cuda::std::ranges::iterator_t<cuda::std::ranges::repeat_view<int>>;
+  cuda::std::ranges::repeat_view<int> v(10);
+  auto iter = v.begin() + 10;
+  iter -= 5;
+  assert(iter == v.begin() + 5);
+
+  static_assert(cuda::std::same_as<decltype(iter -= 5), Iter&>);
+
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/plus.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/plus.pass.cpp
new file mode 100644
index 00000000000..b5a417fc358
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/plus.pass.cpp
@@ -0,0 +1,42 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// friend constexpr iterator operator+(iterator i, difference_type n);
+// friend constexpr iterator operator+(difference_type n, iterator i);
+
+#include <cuda/std/cassert>
+#include <cuda/std/concepts>
+#include <cuda/std/ranges>
+
+#include "test_macros.h"
+
+__host__ __device__ constexpr bool test()
+{
+  cuda::std::ranges::repeat_view<int> v(10);
+  using Iter = cuda::std::ranges::iterator_t<cuda::std::ranges::repeat_view<int>>;
+  auto iter  = v.begin();
+  assert(iter + 5 == v.begin() + 5);
+  assert(5 + iter == v.begin() + 5);
+  assert(2 + iter == v.begin() + 2);
+  assert(3 + iter == v.begin() + 3);
+
+  static_assert(cuda::std::same_as<decltype(iter + 5), Iter>);
+  static_assert(cuda::std::same_as<decltype(5 + iter), Iter>);
+
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/plus_eq.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/plus_eq.pass.cpp
new file mode 100644
index 00000000000..d110a10dca6
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/plus_eq.pass.cpp
@@ -0,0 +1,42 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// constexpr iterator& operator+=(difference_type n);
+
+#include <cuda/std/cassert>
+#include <cuda/std/concepts>
+#include <cuda/std/ranges>
+
+#include "test_macros.h"
+
+__host__ __device__ constexpr bool test()
+{
+  cuda::std::ranges::repeat_view<int> v(10);
+  using Iter = cuda::std::ranges::iterator_t<cuda::std::ranges::repeat_view<int>>;
+  auto iter1 = v.begin() + 10;
+  auto iter2 = v.begin() + 10;
+  assert(iter1 == iter2);
+  iter1 += 5;
+  assert(iter1 != iter2);
+  assert(iter1 == iter2 + 5);
+
+  static_assert(cuda::std::same_as<decltype(iter2 += 5), Iter&>);
+  assert(cuda::std::addressof(iter2) == cuda::std::addressof(iter2 += 5));
+
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/star.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/star.pass.cpp
new file mode 100644
index 00000000000..172c64feead
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/star.pass.cpp
@@ -0,0 +1,78 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// constexpr const W & operator*() const noexcept;
+
+#include <cuda/std/cassert>
+#include <cuda/std/concepts>
+#include <cuda/std/ranges>
+
+#include "test_macros.h"
+
+__host__ __device__ constexpr bool test()
+{
+  // unbound
+  {
+    cuda::std::ranges::repeat_view<int> v(31);
+    auto iter = v.begin();
+
+    const int& val = *iter;
+    for (int i = 0; i < 100; ++i, ++iter)
+    {
+      assert(*iter == 31);
+      assert(&*iter == &val);
+    }
+
+    static_assert(noexcept(*iter));
+    static_assert(cuda::std::same_as<decltype(*iter), const int&>);
+  }
+
+  // bound && one element
+  {
+    cuda::std::ranges::repeat_view<int, int> v(31, 1);
+    auto iter = v.begin();
+    assert(*iter == 31);
+    static_assert(noexcept(*iter));
+    static_assert(cuda::std::same_as<decltype(*iter), const int&>);
+  }
+
+  // bound && several elements
+  {
+    cuda::std::ranges::repeat_view<int, int> v(31, 100);
+    auto iter = v.begin();
+
+    const int& val = *iter;
+    for (int i = 0; i < 100; ++i, ++iter)
+    {
+      assert(*iter == 31);
+      assert(&*iter == &val);
+    }
+  }
+
+#if TEST_STD_VER >= 2023 // requires lifetime expansion of the temporary view
+  // bound && foreach
+  {
+    for (const auto& val : cuda::std::views::repeat(31, 100))
+    {
+      assert(val == 31);
+    }
+  }
+#endif // TEST_STD_VER >= 2023
+
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/subscript.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/subscript.pass.cpp
new file mode 100644
index 00000000000..9b91d26f015
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/iterator/subscript.pass.cpp
@@ -0,0 +1,54 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// constexpr const W & operator[](difference_type n) const noexcept;
+
+#include <cuda/std/cassert>
+#include <cuda/std/concepts>
+#include <cuda/std/ranges>
+
+#include "test_macros.h"
+
+__host__ __device__ constexpr bool test()
+{
+  // unbound
+  {
+    cuda::std::ranges::repeat_view<int> v(31);
+    auto iter = v.begin();
+    for (size_t i = 0; i < 100; ++i)
+    {
+      assert(iter[i] == 31);
+    }
+
+    static_assert(noexcept(iter[0]));
+    static_assert(cuda::std::same_as<decltype(iter[0]), const int&>);
+  }
+
+  // bound
+  {
+    cuda::std::ranges::repeat_view<int, int> v(32);
+    auto iter = v.begin();
+    for (int i = 0; i < 100; ++i)
+    {
+      assert(iter[i] == 32);
+    }
+    static_assert(noexcept(iter[0]));
+    static_assert(cuda::std::same_as<decltype(iter[0]), const int&>);
+  }
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/size.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/size.pass.cpp
new file mode 100644
index 00000000000..2bb9ab8c670
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/size.pass.cpp
@@ -0,0 +1,49 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// constexpr auto size() const requires (!same_as<Bound, unreachable_sentinel_t>);
+
+#include <cuda/std/cassert>
+#include <cuda/std/iterator>
+#include <cuda/std/limits>
+#include <cuda/std/ranges>
+
+#include "test_macros.h"
+
+template <class T>
+_CCCL_CONCEPT has_size = _CCCL_REQUIRES_EXPR((T), T&& view)((cuda::std::forward<T>(view).size()));
+
+static_assert(has_size<cuda::std::ranges::repeat_view<int, int>>);
+static_assert(!has_size<cuda::std::ranges::repeat_view<int>>);
+static_assert(!has_size<cuda::std::ranges::repeat_view<int, cuda::std::unreachable_sentinel_t>>);
+
+__host__ __device__ constexpr bool test()
+{
+  {
+    cuda::std::ranges::repeat_view<int, int> rv(10, 20);
+    assert(rv.size() == 20);
+  }
+
+  {
+    constexpr int int_max = cuda::std::numeric_limits<int>::max();
+    cuda::std::ranges::repeat_view<int, int> rv(10, int_max);
+    assert(rv.size() == int_max);
+  }
+
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+
+  return 0;
+}
diff --git a/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/views_repeat.pass.cpp b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/views_repeat.pass.cpp
new file mode 100644
index 00000000000..451e31cdadc
--- /dev/null
+++ b/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/views_repeat.pass.cpp
@@ -0,0 +1,143 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of libcu++, the C++ Standard Library for your entire system,
+// under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
+//
+//===----------------------------------------------------------------------===//
+
+// template <class T>
+// views::repeat(T &&) requires constructible_from<ranges::repeat_view<T>, T>;
+
+// template <class T, class Bound>
+// views::repeat(T &&, Bound &&) requires constructible_from<ranges::repeat_view<T, Bound>, T, Bound>;
+
+#include <cuda/std/cassert>
+#include <cuda/std/concepts>
+#include <cuda/std/ranges>
+#include <cuda/std/tuple>
+#include <cuda/std/type_traits>
+
+#include "MoveOnly.h"
+#include "test_macros.h"
+
+struct NonCopyable
+{
+  __host__ __device__ NonCopyable(NonCopyable&) = delete;
+};
+
+struct NonDefaultCtor
+{
+  __host__ __device__ NonDefaultCtor(int) {}
+};
+
+struct Empty
+{};
+
+struct LessThan3
+{
+  __host__ __device__ constexpr bool operator()(int i) const
+  {
+    return i < 3;
+  }
+};
+
+struct EqualTo33
+{
+  __host__ __device__ constexpr bool operator()(int i) const
+  {
+    return i == 33;
+  }
+};
+
+struct Add3
+{
+  __host__ __device__ constexpr int operator()(int i) const
+  {
+    return i + 3;
+  }
+};
+
+// Tp is_object
+static_assert(cuda::std::is_invocable_v<decltype(cuda::std::views::repeat), int>);
+static_assert(!cuda::std::is_invocable_v<decltype(cuda::std::views::repeat), void>);
+
+// _Bound is semiregular, integer like or cuda::std::unreachable_sentinel_t
+static_assert(!cuda::std::is_invocable_v<decltype(cuda::std::views::repeat), int, Empty>);
+static_assert(!cuda::std::is_invocable_v<decltype(cuda::std::views::repeat), int, NonCopyable>);
+static_assert(!cuda::std::is_invocable_v<decltype(cuda::std::views::repeat), int, NonDefaultCtor>);
+static_assert(cuda::std::is_invocable_v<decltype(cuda::std::views::repeat), int, cuda::std::unreachable_sentinel_t>);
+
+// Tp is copy_constructible
+static_assert(!cuda::std::is_invocable_v<decltype(cuda::std::views::repeat), NonCopyable>);
+
+// Tp is move_constructible
+static_assert(cuda::std::is_invocable_v<decltype(cuda::std::views::repeat), MoveOnly>);
+
+__host__ __device__ constexpr bool test()
+{
+  assert(*cuda::std::views::repeat(33).begin() == 33);
+  assert(*cuda::std::views::repeat(33, 10).begin() == 33);
+  static_assert(cuda::std::same_as<decltype(cuda::std::views::repeat(42)), cuda::std::ranges::repeat_view<int>>);
+  static_assert(
+    cuda::std::same_as<decltype(cuda::std::views::repeat(42, 3)), cuda::std::ranges::repeat_view<int, int>>);
+  static_assert(cuda::std::same_as<decltype(cuda::std::views::repeat), decltype(cuda::std::ranges::views::repeat)>);
+
+#if 0 // Not yet implemented views
+  // unbound && drop_view
+  {
+    auto r = cuda::std::views::repeat(33) | cuda::std::views::drop(3);
+    static_assert(!cuda::std::ranges::sized_range<decltype(r)>);
+    assert(*r.begin() == 33);
+  }
+
+  // bound && drop_view
+  {
+    auto r = cuda::std::views::repeat(33, 8) | cuda::std::views::drop(3);
+    static_assert(cuda::std::ranges::sized_range<decltype(r)>);
+    assert(*r.begin() == 33);
+    assert(r.size() == 5);
+  }
+
+  // unbound && take_view
+  {
+    auto r = cuda::std::views::repeat(33) | cuda::std::views::take(3);
+    static_assert(cuda::std::ranges::sized_range<decltype(r)>);
+    assert(*r.begin() == 33);
+    assert(r.size() == 3);
+  }
+
+  // bound && take_view
+  {
+    auto r = cuda::std::views::repeat(33, 8) | cuda::std::views::take(3);
+    static_assert(cuda::std::ranges::sized_range<decltype(r)>);
+    assert(*r.begin() == 33);
+    assert(r.size() == 3);
+  }
+#endif // Not yet implemented views
+
+  // bound && transform_view
+  {
+    auto r = cuda::std::views::repeat(33, 8) | cuda::std::views::transform(Add3{});
+    assert(*r.begin() == 36);
+    assert(r.size() == 8);
+  }
+
+  // unbound && transform_view
+  {
+    auto r = cuda::std::views::repeat(33) | cuda::std::views::transform(Add3{});
+    assert(*r.begin() == 36);
+  }
+
+  return true;
+}
+
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+
+  return 0;
+}


Reviews:
user: login: davebayer
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-13T07:19:12Z
user: login: davebayer
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-13T07:19:44Z
user: login: bernhardmgruber
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-21T12:27:22Z
user: login: miscco
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-22T11:44:11Z

Review comments:
diff_hunk: @@ -0,0 +1,341 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef _LIBCUDACXX___RANGES_REPEAT_VIEW_H
+#define _LIBCUDACXX___RANGES_REPEAT_VIEW_H
+
+#include <cuda/std/detail/__config>
+
+#if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)
+#  pragma GCC system_header
+#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)
+#  pragma clang system_header
+#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)
+#  pragma system_header
+#endif // no system header
+
+#include <cuda/std/__concepts/constructible.h>
+#include <cuda/std/__concepts/same_as.h>
+#include <cuda/std/__concepts/semiregular.h>
+#include <cuda/std/__iterator/concepts.h>
+#include <cuda/std/__iterator/iterator_traits.h>
+#include <cuda/std/__iterator/unreachable_sentinel.h>
+#include <cuda/std/__memory/addressof.h>
+#include <cuda/std/__ranges/iota_view.h>
+#include <cuda/std/__ranges/movable_box.h>
+#include <cuda/std/__ranges/view_interface.h>
+#include <cuda/std/__type_traits/enable_if.h>
+#include <cuda/std/__type_traits/is_object.h>
+#include <cuda/std/__type_traits/make_unsigned.h>
+#include <cuda/std/__type_traits/remove_cv.h>
+#include <cuda/std/__type_traits/remove_cvref.h>
+#include <cuda/std/__utility/forward.h>
+#include <cuda/std/__utility/in_place.h>
+#include <cuda/std/__utility/move.h>
+#include <cuda/std/__utility/piecewise_construct.h>
+#include <cuda/std/detail/libcxx/include/tuple>
+
path: libcudacxx/include/cuda/std/__ranges/repeat_view.h
user: login: davebayer
body: ```suggestion

#include <cuda/std/__cccl/prologue.h>
```
created_at: 2025-05-13T07:19:12Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,341 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef _LIBCUDACXX___RANGES_REPEAT_VIEW_H
+#define _LIBCUDACXX___RANGES_REPEAT_VIEW_H
+
+#include <cuda/std/detail/__config>
+
+#if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)
+#  pragma GCC system_header
+#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)
+#  pragma clang system_header
+#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)
+#  pragma system_header
+#endif // no system header
+
+#include <cuda/std/__concepts/constructible.h>
+#include <cuda/std/__concepts/same_as.h>
+#include <cuda/std/__concepts/semiregular.h>
+#include <cuda/std/__iterator/concepts.h>
+#include <cuda/std/__iterator/iterator_traits.h>
+#include <cuda/std/__iterator/unreachable_sentinel.h>
+#include <cuda/std/__memory/addressof.h>
+#include <cuda/std/__ranges/iota_view.h>
+#include <cuda/std/__ranges/movable_box.h>
+#include <cuda/std/__ranges/view_interface.h>
+#include <cuda/std/__type_traits/enable_if.h>
+#include <cuda/std/__type_traits/is_object.h>
+#include <cuda/std/__type_traits/make_unsigned.h>
+#include <cuda/std/__type_traits/remove_cv.h>
+#include <cuda/std/__type_traits/remove_cvref.h>
+#include <cuda/std/__utility/forward.h>
+#include <cuda/std/__utility/in_place.h>
+#include <cuda/std/__utility/move.h>
+#include <cuda/std/__utility/piecewise_construct.h>
+#include <cuda/std/detail/libcxx/include/tuple>
+
+// MSVC complains about [[msvc::no_unique_address]] prior to C++20 as a vendor extension
+_CCCL_DIAG_PUSH
+_CCCL_DIAG_SUPPRESS_MSVC(4848)
+
+_LIBCUDACXX_BEGIN_NAMESPACE_RANGES
+
+template <class _Tp>
+_CCCL_CONCEPT __integer_like_with_usable_difference_type =
+  __signed_integer_like<_Tp> || (__integer_like<_Tp> && weakly_incrementable<_Tp>);
+
+template <class _Tp>
+using __repeat_view_iterator_difference_t _CCCL_NODEBUG_ALIAS = _If<__signed_integer_like<_Tp>, _Tp, _IotaDiffT<_Tp>>;
+
+#if !defined(_CCCL_NO_CONCEPTS)
+template <move_constructible _Tp, semiregular _Bound = unreachable_sentinel_t>
+  requires(is_object_v<_Tp> && same_as<_Tp, remove_cv_t<_Tp>>
+           && (__integer_like_with_usable_difference_type<_Bound> || same_as<_Bound, unreachable_sentinel_t>) )
+#else // ^^^ !_CCCL_NO_CONCEPTS ^^^ / vvv _CCCL_NO_CONCEPTS vvv
+template <
+  class _Tp,
+  class _Bound                                                         = unreachable_sentinel_t,
+  enable_if_t<move_constructible<_Tp>, int>                            = 0,
+  enable_if_t<semiregular<_Bound>, int>                                = 0,
+  enable_if_t<is_object_v<_Tp> && same_as<_Tp, remove_cv_t<_Tp>>, int> = 0,
+  enable_if_t<(__integer_like_with_usable_difference_type<_Bound> || same_as<_Bound, unreachable_sentinel_t>), int> = 0>
+#endif // _CCCL_NO_CONCEPTS
+class repeat_view : public view_interface<repeat_view<_Tp, _Bound>>
+{
+public:
+  class __iterator
+  {
+    friend class repeat_view;
+
+    using _IndexT _CCCL_NODEBUG_ALIAS = conditional_t<same_as<_Bound, unreachable_sentinel_t>, ptrdiff_t, _Bound>;
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr explicit __iterator(
+      const _Tp* __value, _IndexT __bound_sentinel = _IndexT()) noexcept(is_nothrow_copy_constructible_v<_IndexT>)
+        : __value_(__value)
+        , __current_(__bound_sentinel)
+    {}
+
+  public:
+    using iterator_concept  = random_access_iterator_tag;
+    using iterator_category = random_access_iterator_tag;
+    using value_type        = _Tp;
+    using difference_type   = __repeat_view_iterator_difference_t<_IndexT>;
+
+    _CCCL_HIDE_FROM_ABI __iterator() = default;
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI constexpr const _Tp& operator*() const noexcept
+    {
+      return *__value_;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator& operator++()
+    {
+      ++__current_;
+      return *this;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator operator++(int)
+    {
+      auto __tmp = *this;
+      ++*this;
+      return __tmp;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator& operator--()
+    {
+      if constexpr (!same_as<_Bound, unreachable_sentinel_t>)
+      {
+        _CCCL_ASSERT(__current_ > 0, "The value of bound must be greater than or equal to 0");
+      }
+      --__current_;
+      return *this;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator operator--(int)
+    {
+      auto __tmp = *this;
+      --*this;
+      return __tmp;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator& operator+=(difference_type __n)
+    {
+      if constexpr (!same_as<_Bound, unreachable_sentinel_t>)
+      {
+        _CCCL_ASSERT(__current_ + __n >= 0, "The value of bound must be greater than or equal to 0");
+      }
+      __current_ += static_cast<_IndexT>(__n);
+      return *this;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator& operator-=(difference_type __n)
+    {
+      if constexpr (!same_as<_Bound, unreachable_sentinel_t>)
+      {
+        _CCCL_ASSERT(__current_ - __n >= 0, "The value of bound must be greater than or equal to 0");
+      }
+      __current_ -= static_cast<_IndexT>(__n);
+      return *this;
+    }
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI constexpr const _Tp& operator[](difference_type __n) const noexcept
+    {
+      return *(*this + __n);
+    }
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr bool
+    operator==(const __iterator& __x, const __iterator& __y)
+    {
+      return __x.__current_ == __y.__current_;
+    }
+#if _CCCL_STD_VER <= 2017
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr bool
+    operator!=(const __iterator& __x, const __iterator& __y)
+    {
+      return __x.__current_ != __y.__current_;
+    }
+#endif // _CCCL_STD_VER <= 2017
+
+#if _LIBCUDACXX_HAS_SPACESHIP_OPERATOR()
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr auto
+    operator<=>(const __iterator& __x, const __iterator& __y)
+    {
+      return __x.__current_ <=> __y.__current_;
+    }
+#endif // _LIBCUDACXX_HAS_NO_SPACESHIP_OPERATOR()
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr bool operator<(const __iterator& __x, const __iterator& __y)
+    {
+      return __x.__current_ < __y.__current_;
+    }
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr bool
+    operator<=(const __iterator& __x, const __iterator& __y)
+    {
+      return __x.__current_ <= __y.__current_;
+    }
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr bool operator>(const __iterator& __x, const __iterator& __y)
+    {
+      return __x.__current_ > __y.__current_;
+    }
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr bool
+    operator>=(const __iterator& __x, const __iterator& __y)
+    {
+      return __x.__current_ >= __y.__current_;
+    }
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr __iterator operator+(__iterator __i, difference_type __n)
+    {
+      __i += __n;
+      return __i;
+    }
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr __iterator operator+(difference_type __n, __iterator __i)
+    {
+      __i += __n;
+      return __i;
+    }
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr __iterator operator-(__iterator __i, difference_type __n)
+    {
+      __i -= __n;
+      return __i;
+    }
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI friend constexpr difference_type
+    operator-(const __iterator& __x, const __iterator& __y)
+    {
+      return static_cast<difference_type>(__x.__current_) - static_cast<difference_type>(__y.__current_);
+    }
+
+  private:
+    const _Tp* __value_ = nullptr;
+    _IndexT __current_  = _IndexT();
+  };
+
+#if !defined(_CCCL_NO_CONCEPTS)
+  _CCCL_HIDE_FROM_ABI repeat_view()
+    requires default_initializable<_Tp>
+  = default;
+#else // ^^^ !_CCCL_NO_CONCEPTS ^^^ / vvv _CCCL_NO_CONCEPTS vvv
+  _CCCL_TEMPLATE(class _Tp2 = _Tp)
+  _CCCL_REQUIRES(default_initializable<_Tp2>)
+  _LIBCUDACXX_HIDE_FROM_ABI constexpr repeat_view() noexcept(is_nothrow_default_constructible_v<_Tp2>) {}
+#endif // _CCCL_NO_CONCEPTS
+
+  _CCCL_TEMPLATE(class _Tp2 = _Tp)
+  _CCCL_REQUIRES((!same_as<_Tp2, repeat_view>) _CCCL_AND copy_constructible<_Tp2>)
+  _LIBCUDACXX_HIDE_FROM_ABI constexpr explicit repeat_view(const _Tp2& __value, _Bound __bound_sentinel = _Bound())
+      : __value_(in_place, __value)
+      , __bound_(__bound_sentinel)
+  {
+    if constexpr (!same_as<_Bound, unreachable_sentinel_t> && _CCCL_TRAIT(is_signed, _Bound))
+    {
+      _CCCL_ASSERT(__bound_ >= 0, "The value of bound must be greater than or equal to 0");
+    }
+  }
+
+  _LIBCUDACXX_HIDE_FROM_ABI constexpr explicit repeat_view(_Tp&& __value, _Bound __bound_sentinel = _Bound())
+      : __value_(in_place, _CUDA_VSTD::move(__value))
+      , __bound_(__bound_sentinel)
+  {
+    if constexpr (!same_as<_Bound, unreachable_sentinel_t> && _CCCL_TRAIT(is_signed, _Bound))
+    {
+      _CCCL_ASSERT(__bound_ >= 0, "The value of bound must be greater than or equal to 0");
+    }
+  }
+
+  _CCCL_TEMPLATE(class... _TpArgs, class... _BoundArgs)
+  _CCCL_REQUIRES(constructible_from<_Tp, _TpArgs...> _CCCL_AND constructible_from<_Bound, _BoundArgs...>)
+  _LIBCUDACXX_HIDE_FROM_ABI constexpr explicit repeat_view(
+    piecewise_construct_t, tuple<_TpArgs...> __value_args, tuple<_BoundArgs...> __bound_args = tuple<>{})
+      : __value_(in_place, _CUDA_VSTD::make_from_tuple<_Tp>(_CUDA_VSTD::move(__value_args)))
+      , __bound_(_CUDA_VSTD::make_from_tuple<_Bound>(_CUDA_VSTD::move(__bound_args)))
+  {
+    if constexpr (!same_as<_Bound, unreachable_sentinel_t> && _CCCL_TRAIT(is_signed, _Bound))
+    {
+      _CCCL_ASSERT(__bound_ >= 0,
+                   "The behavior is undefined if Bound is not unreachable_sentinel_t and bound is negative");
+    }
+  }
+
+  [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator begin() const
+  {
+    return __iterator(_CUDA_VSTD::addressof(*__value_));
+  }
+
+  _LIBCUDACXX_HIDE_FROM_ABI constexpr auto end() const noexcept(is_nothrow_copy_constructible_v<_Bound>)
+  {
+    if constexpr (same_as<_Bound, unreachable_sentinel_t>)
+    {
+      return unreachable_sentinel;
+    }
+    else
+    {
+      return __iterator(_CUDA_VSTD::addressof(*__value_), __bound_);
+    }
+  }
+
+  _CCCL_TEMPLATE(class _Bound2 = _Bound)
+  _CCCL_REQUIRES((!same_as<_Bound2, unreachable_sentinel_t>) )
+  _LIBCUDACXX_HIDE_FROM_ABI constexpr auto size() const
+  {
+    return _CUDA_VSTD::__to_unsigned_like(__bound_);
+  }
+
+private:
+  _CCCL_NO_UNIQUE_ADDRESS __movable_box<_Tp> __value_;
+  _CCCL_NO_UNIQUE_ADDRESS _Bound __bound_ = _Bound();
+};
+
+template <class _Tp, class _Bound>
+_CCCL_HOST_DEVICE repeat_view(_Tp, _Bound) -> repeat_view<_Tp, _Bound>;
+
+_LIBCUDACXX_END_NAMESPACE_RANGES
+
+// clang-format off
+_LIBCUDACXX_BEGIN_NAMESPACE_VIEWS
+_LIBCUDACXX_BEGIN_NAMESPACE_CPO(__repeat)
+struct __fn {
+  template <class _Tp>
+  [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __value) const
+    noexcept(noexcept(ranges::repeat_view(_CUDA_VSTD::forward<_Tp>(__value))))
+    -> repeat_view<remove_cvref_t<_Tp>>
+    { return          ranges::repeat_view(_CUDA_VSTD::forward<_Tp>(__value)); }
+
+
+  template <class _Tp, class _Bound>
+  [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __value, _Bound&& __bound_sentinel) const
+    noexcept(noexcept(ranges::repeat_view(_CUDA_VSTD::forward<_Tp>(__value), _CUDA_VSTD::forward<_Bound>(__bound_sentinel))))
+    -> repeat_view<remove_cvref_t<_Tp>, remove_cvref_t<_Bound>>
+    { return          ranges::repeat_view(_CUDA_VSTD::forward<_Tp>(__value), _CUDA_VSTD::forward<_Bound>(__bound_sentinel)); }
+};
+_LIBCUDACXX_END_NAMESPACE_CPO
+// clang-format on
+
+inline namespace __cpo
+{
+_CCCL_GLOBAL_CONSTANT auto repeat = __repeat::__fn{};
+} // namespace __cpo
+_LIBCUDACXX_END_NAMESPACE_VIEWS
+
+_LIBCUDACXX_BEGIN_NAMESPACE_RANGES
+
+template <class _Tp>
+inline constexpr bool __is_repeat_specialization = false;
+
+template <class _Tp, class _Bound>
+inline constexpr bool __is_repeat_specialization<repeat_view<_Tp, _Bound>> = true;
+
+_LIBCUDACXX_END_NAMESPACE_RANGES
+
+_CCCL_DIAG_POP
path: libcudacxx/include/cuda/std/__ranges/repeat_view.h
user: login: davebayer
body: ```suggestion
_CCCL_DIAG_POP

#include <cuda/std/__cccl/epilogue.h>
```
created_at: 2025-05-13T07:19:44Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,343 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef _LIBCUDACXX___RANGES_REPEAT_VIEW_H
+#define _LIBCUDACXX___RANGES_REPEAT_VIEW_H
+
+#include <cuda/std/detail/__config>
+
+#if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)
+#  pragma GCC system_header
+#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)
+#  pragma clang system_header
+#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)
+#  pragma system_header
+#endif // no system header
+
+#include <cuda/std/__concepts/constructible.h>
+#include <cuda/std/__concepts/same_as.h>
+#include <cuda/std/__concepts/semiregular.h>
+#include <cuda/std/__iterator/concepts.h>
+#include <cuda/std/__iterator/iterator_traits.h>
+#include <cuda/std/__iterator/unreachable_sentinel.h>
+#include <cuda/std/__memory/addressof.h>
+#include <cuda/std/__ranges/iota_view.h>
+#include <cuda/std/__ranges/movable_box.h>
+#include <cuda/std/__ranges/view_interface.h>
+#include <cuda/std/__type_traits/enable_if.h>
+#include <cuda/std/__type_traits/is_object.h>
+#include <cuda/std/__type_traits/make_unsigned.h>
+#include <cuda/std/__type_traits/remove_cv.h>
+#include <cuda/std/__type_traits/remove_cvref.h>
+#include <cuda/std/__utility/forward.h>
+#include <cuda/std/__utility/in_place.h>
+#include <cuda/std/__utility/move.h>
+#include <cuda/std/__utility/piecewise_construct.h>
+#include <cuda/std/detail/libcxx/include/tuple>
+
+#include <cuda/std/__cccl/prologue.h>
+
+// MSVC complains about [[msvc::no_unique_address]] prior to C++20 as a vendor extension
path: libcudacxx/include/cuda/std/__ranges/repeat_view.h
user: login: bernhardmgruber
body: Love it, cause it's true.
created_at: 2025-05-21T12:11:53Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,343 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef _LIBCUDACXX___RANGES_REPEAT_VIEW_H
+#define _LIBCUDACXX___RANGES_REPEAT_VIEW_H
+
+#include <cuda/std/detail/__config>
+
+#if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)
+#  pragma GCC system_header
+#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)
+#  pragma clang system_header
+#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)
+#  pragma system_header
+#endif // no system header
+
+#include <cuda/std/__concepts/constructible.h>
+#include <cuda/std/__concepts/same_as.h>
+#include <cuda/std/__concepts/semiregular.h>
+#include <cuda/std/__iterator/concepts.h>
+#include <cuda/std/__iterator/iterator_traits.h>
+#include <cuda/std/__iterator/unreachable_sentinel.h>
+#include <cuda/std/__memory/addressof.h>
+#include <cuda/std/__ranges/iota_view.h>
+#include <cuda/std/__ranges/movable_box.h>
+#include <cuda/std/__ranges/view_interface.h>
+#include <cuda/std/__type_traits/enable_if.h>
+#include <cuda/std/__type_traits/is_object.h>
+#include <cuda/std/__type_traits/make_unsigned.h>
+#include <cuda/std/__type_traits/remove_cv.h>
+#include <cuda/std/__type_traits/remove_cvref.h>
+#include <cuda/std/__utility/forward.h>
+#include <cuda/std/__utility/in_place.h>
+#include <cuda/std/__utility/move.h>
+#include <cuda/std/__utility/piecewise_construct.h>
+#include <cuda/std/detail/libcxx/include/tuple>
+
+#include <cuda/std/__cccl/prologue.h>
+
+// MSVC complains about [[msvc::no_unique_address]] prior to C++20 as a vendor extension
+_CCCL_DIAG_PUSH
+_CCCL_DIAG_SUPPRESS_MSVC(4848)
+
+_LIBCUDACXX_BEGIN_NAMESPACE_RANGES
+
+template <class _Tp>
+_CCCL_CONCEPT __integer_like_with_usable_difference_type =
+  __signed_integer_like<_Tp> || (__integer_like<_Tp> && weakly_incrementable<_Tp>);
+
+template <class _Tp>
+using __repeat_view_iterator_difference_t _CCCL_NODEBUG_ALIAS = _If<__signed_integer_like<_Tp>, _Tp, _IotaDiffT<_Tp>>;
+
+#if !defined(_CCCL_NO_CONCEPTS)
+template <move_constructible _Tp, semiregular _Bound = unreachable_sentinel_t>
+  requires(is_object_v<_Tp> && same_as<_Tp, remove_cv_t<_Tp>>
+           && (__integer_like_with_usable_difference_type<_Bound> || same_as<_Bound, unreachable_sentinel_t>) )
+#else // ^^^ !_CCCL_NO_CONCEPTS ^^^ / vvv _CCCL_NO_CONCEPTS vvv
+template <
+  class _Tp,
+  class _Bound                                                         = unreachable_sentinel_t,
+  enable_if_t<move_constructible<_Tp>, int>                            = 0,
+  enable_if_t<semiregular<_Bound>, int>                                = 0,
+  enable_if_t<is_object_v<_Tp> && same_as<_Tp, remove_cv_t<_Tp>>, int> = 0,
+  enable_if_t<(__integer_like_with_usable_difference_type<_Bound> || same_as<_Bound, unreachable_sentinel_t>), int> = 0>
+#endif // _CCCL_NO_CONCEPTS
+class repeat_view : public view_interface<repeat_view<_Tp, _Bound>>
+{
+public:
+  class __iterator
path: libcudacxx/include/cuda/std/__ranges/repeat_view.h
user: login: bernhardmgruber
body: Q: The exposition-only `iterator` is `private` in the synopsis: https://eel.is/c++draft/range.repeat#view. Do we want to make `__iterator` `private` to?
created_at: 2025-05-21T12:20:36Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,343 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef _LIBCUDACXX___RANGES_REPEAT_VIEW_H
+#define _LIBCUDACXX___RANGES_REPEAT_VIEW_H
+
+#include <cuda/std/detail/__config>
+
+#if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)
+#  pragma GCC system_header
+#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)
+#  pragma clang system_header
+#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)
+#  pragma system_header
+#endif // no system header
+
+#include <cuda/std/__concepts/constructible.h>
+#include <cuda/std/__concepts/same_as.h>
+#include <cuda/std/__concepts/semiregular.h>
+#include <cuda/std/__iterator/concepts.h>
+#include <cuda/std/__iterator/iterator_traits.h>
+#include <cuda/std/__iterator/unreachable_sentinel.h>
+#include <cuda/std/__memory/addressof.h>
+#include <cuda/std/__ranges/iota_view.h>
+#include <cuda/std/__ranges/movable_box.h>
+#include <cuda/std/__ranges/view_interface.h>
+#include <cuda/std/__type_traits/enable_if.h>
+#include <cuda/std/__type_traits/is_object.h>
+#include <cuda/std/__type_traits/make_unsigned.h>
+#include <cuda/std/__type_traits/remove_cv.h>
+#include <cuda/std/__type_traits/remove_cvref.h>
+#include <cuda/std/__utility/forward.h>
+#include <cuda/std/__utility/in_place.h>
+#include <cuda/std/__utility/move.h>
+#include <cuda/std/__utility/piecewise_construct.h>
+#include <cuda/std/detail/libcxx/include/tuple>
+
+#include <cuda/std/__cccl/prologue.h>
+
+// MSVC complains about [[msvc::no_unique_address]] prior to C++20 as a vendor extension
+_CCCL_DIAG_PUSH
+_CCCL_DIAG_SUPPRESS_MSVC(4848)
+
+_LIBCUDACXX_BEGIN_NAMESPACE_RANGES
+
+template <class _Tp>
+_CCCL_CONCEPT __integer_like_with_usable_difference_type =
+  __signed_integer_like<_Tp> || (__integer_like<_Tp> && weakly_incrementable<_Tp>);
+
+template <class _Tp>
+using __repeat_view_iterator_difference_t _CCCL_NODEBUG_ALIAS = _If<__signed_integer_like<_Tp>, _Tp, _IotaDiffT<_Tp>>;
+
+#if !defined(_CCCL_NO_CONCEPTS)
+template <move_constructible _Tp, semiregular _Bound = unreachable_sentinel_t>
+  requires(is_object_v<_Tp> && same_as<_Tp, remove_cv_t<_Tp>>
+           && (__integer_like_with_usable_difference_type<_Bound> || same_as<_Bound, unreachable_sentinel_t>) )
+#else // ^^^ !_CCCL_NO_CONCEPTS ^^^ / vvv _CCCL_NO_CONCEPTS vvv
+template <
+  class _Tp,
+  class _Bound                                                         = unreachable_sentinel_t,
+  enable_if_t<move_constructible<_Tp>, int>                            = 0,
+  enable_if_t<semiregular<_Bound>, int>                                = 0,
+  enable_if_t<is_object_v<_Tp> && same_as<_Tp, remove_cv_t<_Tp>>, int> = 0,
+  enable_if_t<(__integer_like_with_usable_difference_type<_Bound> || same_as<_Bound, unreachable_sentinel_t>), int> = 0>
+#endif // _CCCL_NO_CONCEPTS
+class repeat_view : public view_interface<repeat_view<_Tp, _Bound>>
+{
+public:
+  class __iterator
+  {
+    friend class repeat_view;
+
+    using _IndexT _CCCL_NODEBUG_ALIAS = conditional_t<same_as<_Bound, unreachable_sentinel_t>, ptrdiff_t, _Bound>;
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr explicit __iterator(
+      const _Tp* __value, _IndexT __bound_sentinel = _IndexT()) noexcept(is_nothrow_copy_constructible_v<_IndexT>)
+        : __value_(__value)
+        , __current_(__bound_sentinel)
+    {}
+
+  public:
+    using iterator_concept  = random_access_iterator_tag;
+    using iterator_category = random_access_iterator_tag;
+    using value_type        = _Tp;
+    using difference_type   = __repeat_view_iterator_difference_t<_IndexT>;
+
+    _CCCL_HIDE_FROM_ABI __iterator() = default;
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI constexpr const _Tp& operator*() const noexcept
+    {
+      return *__value_;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator& operator++()
+    {
+      ++__current_;
+      return *this;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator operator++(int)
+    {
+      auto __tmp = *this;
+      ++*this;
+      return __tmp;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator& operator--()
+    {
+      if constexpr (!same_as<_Bound, unreachable_sentinel_t>)
+      {
+        _CCCL_ASSERT(__current_ > 0, "The value of bound must be greater than or equal to 0");
+      }
+      --__current_;
+      return *this;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator operator--(int)
+    {
+      auto __tmp = *this;
+      --*this;
+      return __tmp;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator& operator+=(difference_type __n)
+    {
+      if constexpr (!same_as<_Bound, unreachable_sentinel_t>)
+      {
+        _CCCL_ASSERT(__current_ + __n >= 0, "The value of bound must be greater than or equal to 0");
+      }
+      __current_ += static_cast<_IndexT>(__n);
+      return *this;
+    }
+
+    _LIBCUDACXX_HIDE_FROM_ABI constexpr __iterator& operator-=(difference_type __n)
+    {
+      if constexpr (!same_as<_Bound, unreachable_sentinel_t>)
+      {
+        _CCCL_ASSERT(__current_ - __n >= 0, "The value of bound must be greater than or equal to 0");
+      }
+      __current_ -= static_cast<_IndexT>(__n);
+      return *this;
+    }
+
+    [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI constexpr const _Tp& operator[](difference_type __n) const noexcept
+    {
+      return *(*this + __n);
path: libcudacxx/include/cuda/std/__ranges/repeat_view.h
user: login: bernhardmgruber
body: Suggestion: this could just be:
```suggestion
      return *__value_;
```
created_at: 2025-05-21T12:23:06Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,343 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef _LIBCUDACXX___RANGES_REPEAT_VIEW_H
+#define _LIBCUDACXX___RANGES_REPEAT_VIEW_H
+
+#include <cuda/std/detail/__config>
+
+#if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)
+#  pragma GCC system_header
+#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)
+#  pragma clang system_header
+#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)
+#  pragma system_header
+#endif // no system header
+
+#include <cuda/std/__concepts/constructible.h>
+#include <cuda/std/__concepts/same_as.h>
+#include <cuda/std/__concepts/semiregular.h>
+#include <cuda/std/__iterator/concepts.h>
+#include <cuda/std/__iterator/iterator_traits.h>
+#include <cuda/std/__iterator/unreachable_sentinel.h>
+#include <cuda/std/__memory/addressof.h>
+#include <cuda/std/__ranges/iota_view.h>
+#include <cuda/std/__ranges/movable_box.h>
+#include <cuda/std/__ranges/view_interface.h>
+#include <cuda/std/__type_traits/enable_if.h>
+#include <cuda/std/__type_traits/is_object.h>
+#include <cuda/std/__type_traits/make_unsigned.h>
+#include <cuda/std/__type_traits/remove_cv.h>
+#include <cuda/std/__type_traits/remove_cvref.h>
+#include <cuda/std/__utility/forward.h>
+#include <cuda/std/__utility/in_place.h>
+#include <cuda/std/__utility/move.h>
+#include <cuda/std/__utility/piecewise_construct.h>
+#include <cuda/std/detail/libcxx/include/tuple>
+
+#include <cuda/std/__cccl/prologue.h>
+
+// MSVC complains about [[msvc::no_unique_address]] prior to C++20 as a vendor extension
+_CCCL_DIAG_PUSH
+_CCCL_DIAG_SUPPRESS_MSVC(4848)
+
+_LIBCUDACXX_BEGIN_NAMESPACE_RANGES
+
+template <class _Tp>
+_CCCL_CONCEPT __integer_like_with_usable_difference_type =
+  __signed_integer_like<_Tp> || (__integer_like<_Tp> && weakly_incrementable<_Tp>);
+
+template <class _Tp>
+using __repeat_view_iterator_difference_t _CCCL_NODEBUG_ALIAS = _If<__signed_integer_like<_Tp>, _Tp, _IotaDiffT<_Tp>>;
+
+#if !defined(_CCCL_NO_CONCEPTS)
+template <move_constructible _Tp, semiregular _Bound = unreachable_sentinel_t>
+  requires(is_object_v<_Tp> && same_as<_Tp, remove_cv_t<_Tp>>
+           && (__integer_like_with_usable_difference_type<_Bound> || same_as<_Bound, unreachable_sentinel_t>) )
+#else // ^^^ !_CCCL_NO_CONCEPTS ^^^ / vvv _CCCL_NO_CONCEPTS vvv
+template <
+  class _Tp,
+  class _Bound                                                         = unreachable_sentinel_t,
+  enable_if_t<move_constructible<_Tp>, int>                            = 0,
+  enable_if_t<semiregular<_Bound>, int>                                = 0,
+  enable_if_t<is_object_v<_Tp> && same_as<_Tp, remove_cv_t<_Tp>>, int> = 0,
+  enable_if_t<(__integer_like_with_usable_difference_type<_Bound> || same_as<_Bound, unreachable_sentinel_t>), int> = 0>
+#endif // _CCCL_NO_CONCEPTS
+class repeat_view : public view_interface<repeat_view<_Tp, _Bound>>
+{
+public:
+  class __iterator
path: libcudacxx/include/cuda/std/__ranges/repeat_view.h
user: login: miscco
body: The reason is that nvcc then forbids any mentioning of that class:
```
cccl/libcudacxx/test/libcudacxx/std/ranges/range.factories/range.repeat.view/end.pass.cpp:28:26: error: ‘class cuda::std::ranges::__4::repeat_view<int, int>::__iterator’ is private within this context
   28 |     static_assert(cuda::std::same_as<cuda::std::ranges::iterator_t<decltype(rv)>, decltype(iter)>);
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                                                     
cccl/libcudacxx/include/cuda/std/__ranges/repeat_view.h:75:7: note: declared private here
   75 |   class __iterator
```
created_at: 2025-05-22T11:44:10Z
author_association: CONTRIBUTOR

PR comments:
user: login: github-actions[bot]
created_at: 2025-05-09T08:12:39Z
body: <details><summary>🟨 CI finished in 59m 28s: Pass:  99%/174 | Total:  1d 07h | Avg: 11m 00s | Max: 41m 33s | Hits:  82%/279785</summary>

<ul>
<li>
<details><summary><h3>🟨 libcudacxx: Pass:  97%/45  | Total: 13h 23m | Avg: 17m 50s | Max: 41m 33s | Hits:  61%/123823</h3></summary>

```
🔍 cpu: amd64 🔍
  🔍 amd64              Pass:  97%/43  | Total: 12h 50m | Avg: 17m 54s | Max: 41m 33s | Hits:  61%/117238
  🟩 arm64              Pass: 100%/2   | Total: 32m 59s | Avg: 16m 29s | Max: 27m 13s | Hits:  62%/6585  
🔍 ctk: 12.0 🔍
  🔍 12.0               Pass:  80%/5   | Total:  1h 05m | Avg: 13m 02s | Max: 27m 58s | Hits:  62%/12837 
  🟩 12.8               Pass: 100%/40  | Total: 12h 17m | Avg: 18m 26s | Max: 41m 33s | Hits:  60%/110986
🔍 cudacxx: nvcc12.0 🔍
  🟩 ClangCUDA19        Pass: 100%/2   | Total: 52m 54s | Avg: 26m 27s | Max: 27m 29s | Hits:  26%/6547  
  🔍 nvcc12.0           Pass:  80%/5   | Total:  1h 05m | Avg: 13m 02s | Max: 27m 58s | Hits:  62%/12837 
  🟩 nvcc12.8           Pass: 100%/38  | Total: 11h 24m | Avg: 18m 01s | Max: 41m 33s | Hits:  63%/104439
🔍 cudacxx_family: nvcc 🔍
  🟩 ClangCUDA          Pass: 100%/2   | Total: 52m 54s | Avg: 26m 27s | Max: 27m 29s | Hits:  26%/6547  
  🔍 nvcc               Pass:  97%/43  | Total: 12h 30m | Avg: 17m 26s | Max: 41m 33s | Hits:  63%/117276
🔍 cxx: Clang14 🔍
  🔍 Clang14            Pass:  75%/4   | Total:  1h 05m | Avg: 16m 15s | Max: 28m 54s | Hits:  56%/9813  
  🟩 Clang15            Pass: 100%/2   | Total: 57m 40s | Avg: 28m 50s | Max: 29m 51s | Hits:  31%/6543  
  🟩 Clang16            Pass: 100%/2   | Total: 13m 03s | Avg:  6m 31s | Max:  6m 33s | Hits:  94%/6543  
  🟩 Clang17            Pass: 100%/2   | Total: 36m 46s | Avg: 18m 23s | Max: 30m 27s | Hits:  62%/6543  
  🟩 Clang18            Pass: 100%/2   | Total: 12m 58s | Avg:  6m 29s | Max:  6m 48s | Hits:  94%/6543  
  🟩 Clang19            Pass: 100%/6   | Total:  2h 08m | Avg: 21m 28s | Max: 29m 06s | Hits:  43%/16382 
  🟩 GCC7               Pass: 100%/2   | Total: 26m 28s | Avg: 13m 14s | Max: 20m 58s | Hits:  63%/6477  
  🟩 GCC8               Pass: 100%/1   | Total:  6m 05s | Avg:  6m 05s | Max:  6m 05s | Hits:  94%/3249  
  🟩 GCC9               Pass: 100%/2   | Total: 33m 06s | Avg: 16m 33s | Max: 27m 14s | Hits:  62%/6489  
  🟩 GCC10              Pass: 100%/2   | Total: 32m 29s | Avg: 16m 14s | Max: 26m 13s | Hits:  62%/6545  
  🟩 GCC11              Pass: 100%/2   | Total: 55m 04s | Avg: 27m 32s | Max: 29m 12s | Hits:  31%/6541  
  🟩 GCC12              Pass: 100%/2   | Total: 38m 51s | Avg: 19m 25s | Max: 32m 56s | Hits:  62%/6545  
  🟩 GCC13              Pass: 100%/10  | Total:  2h 18m | Avg: 13m 51s | Max: 27m 42s | Hits:  69%/16628 
  🟩 MSVC14.29          Pass: 100%/2   | Total: 51m 59s | Avg: 25m 59s | Max: 27m 58s | Hits:  62%/6187  
  🟩 MSVC14.42          Pass: 100%/2   | Total: 51m 22s | Avg: 25m 41s | Max: 27m 11s | Hits:  62%/6262  
  🟩 NVHPC25.3          Pass: 100%/2   | Total: 54m 44s | Avg: 27m 22s | Max: 41m 33s | Hits:  60%/6533  
🔍 cxx_family: Clang 🔍
  🔍 Clang              Pass:  94%/18  | Total:  5h 14m | Avg: 17m 27s | Max: 30m 27s | Hits:  59%/52367 
  🟩 GCC                Pass: 100%/21  | Total:  5h 30m | Avg: 15m 44s | Max: 32m 56s | Hits:  62%/52474 
  🟩 MSVC               Pass: 100%/4   | Total:  1h 43m | Avg: 25m 50s | Max: 27m 58s | Hits:  62%/12449 
  🟩 NVHPC              Pass: 100%/2   | Total: 54m 44s | Avg: 27m 22s | Max: 41m 33s | Hits:  60%/6533  
🔍 gpu: rtx2080 🔍
  🟩 h100               Pass: 100%/2   | Total: 19m 39s | Avg:  9m 49s | Max: 14m 38s | Hits:  94%/3375  
  🔍 rtx2080            Pass:  97%/43  | Total: 13h 03m | Avg: 18m 13s | Max: 41m 33s | Hits:  60%/120448
🔍 jobs: Build 🔍
  🔍 Build              Pass:  97%/39  | Total: 12h 03m | Avg: 18m 32s | Max: 41m 33s | Hits:  61%/123783
  🟩 NVRTC              Pass: 100%/2   | Total: 37m 20s | Avg: 18m 40s | Max: 18m 52s | Hits:  90%/40    
  🟩 Test               Pass: 100%/3   | Total: 40m 20s | Avg: 13m 26s | Max: 14m 38s
  🟩 VerifyCodegen      Pass: 100%/1   | Total:  2m 01s | Avg:  2m 01s | Max:  2m 01s
🔍 std: 17 🔍
  🔍 17                 Pass:  95%/22  | Total:  6h 36m | Avg: 18m 01s | Max: 28m 54s | Hits:  59%/64531 
  🟩 20                 Pass: 100%/22  | Total:  6h 44m | Avg: 18m 22s | Max: 41m 33s | Hits:  62%/59292 
🟩 sm
  🟩 75                 Pass: 100%/2   | Total: 37m 20s | Avg: 18m 40s | Max: 18m 52s | Hits:  90%/40    
  🟩 90                 Pass: 100%/2   | Total: 19m 39s | Avg:  9m 49s | Max: 14m 38s | Hits:  94%/3375  
  🟩 90;90a;100         Pass: 100%/1   | Total:  6m 03s | Avg:  6m 03s | Max:  6m 03s | Hits:  94%/3375  
```

</details>

<li>
<details><summary><h3>🟩 cub: Pass: 100%/47  | Total:  8h 21m | Avg: 10m 40s | Max: 25m 53s | Hits:  99%/56946 </h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/45  | Total:  8h 08m | Avg: 10m 51s | Max: 25m 53s | Hits:  99%/54470 
  🟩 arm64              Pass: 100%/2   | Total: 12m 24s | Avg:  6m 12s | Max:  6m 35s | Hits:  99%/2476  
🟩 ctk
  🟩 12.0               Pass: 100%/5   | Total: 45m 32s | Avg:  9m 06s | Max: 20m 31s | Hits:  99%/6016  
  🟩 12.8               Pass: 100%/42  | Total:  7h 35m | Avg: 10m 51s | Max: 25m 53s | Hits:  99%/50930 
🟩 cudacxx
  🟩 ClangCUDA19        Pass: 100%/2   | Total: 10m 04s | Avg:  5m 02s | Max:  5m 04s | Hits: 100%/2132  
  🟩 nvcc12.0           Pass: 100%/5   | Total: 45m 32s | Avg:  9m 06s | Max: 20m 31s | Hits:  99%/6016  
  🟩 nvcc12.8           Pass: 100%/40  | Total:  7h 25m | Avg: 11m 08s | Max: 25m 53s | Hits:  99%/48798 
🟩 cudacxx_family
  🟩 ClangCUDA          Pass: 100%/2   | Total: 10m 04s | Avg:  5m 02s | Max:  5m 04s | Hits: 100%/2132  
  🟩 nvcc               Pass: 100%/45  | Total:  8h 11m | Avg: 10m 55s | Max: 25m 53s | Hits:  99%/54814 
🟩 cxx
  🟩 Clang14            Pass: 100%/4   | Total: 24m 36s | Avg:  6m 09s | Max:  6m 39s | Hits: 100%/4960  
  🟩 Clang15            Pass: 100%/2   | Total: 13m 01s | Avg:  6m 30s | Max:  6m 33s | Hits: 100%/2476  
  🟩 Clang16            Pass: 100%/2   | Total: 12m 47s | Avg:  6m 23s | Max:  6m 31s | Hits: 100%/2476  
  🟩 Clang17            Pass: 100%/2   | Total: 13m 38s | Avg:  6m 49s | Max:  7m 06s | Hits: 100%/2476  
  🟩 Clang18            Pass: 100%/2   | Total: 12m 48s | Avg:  6m 24s | Max:  6m 26s | Hits: 100%/2476  
  🟩 Clang19            Pass: 100%/7   | Total:  1h 10m | Avg: 10m 08s | Max: 23m 18s | Hits:  99%/8322  
  🟩 GCC7               Pass: 100%/2   | Total: 13m 22s | Avg:  6m 41s | Max:  6m 47s | Hits:  99%/2480  
  🟩 GCC8               Pass: 100%/1   | Total:  7m 11s | Avg:  7m 11s | Max:  7m 11s | Hits:  99%/1240  
  🟩 GCC9               Pass: 100%/2   | Total: 14m 12s | Avg:  7m 06s | Max:  7m 24s | Hits:  99%/2480  
  🟩 GCC10              Pass: 100%/2   | Total: 13m 47s | Avg:  6m 53s | Max:  6m 56s | Hits:  99%/2480  
  🟩 GCC11              Pass: 100%/2   | Total: 14m 20s | Avg:  7m 10s | Max:  7m 11s | Hits:  99%/2476  
  🟩 GCC12              Pass: 100%/2   | Total: 14m 56s | Avg:  7m 28s | Max:  7m 50s | Hits:  99%/2476  
  🟩 GCC13              Pass: 100%/11  | Total:  2h 47m | Avg: 15m 14s | Max: 25m 53s | Hits:  99%/13618 
  🟩 MSVC14.29          Pass: 100%/2   | Total: 40m 15s | Avg: 20m 07s | Max: 20m 31s | Hits:  99%/2112  
  🟩 MSVC14.42          Pass: 100%/2   | Total: 43m 45s | Avg: 21m 52s | Max: 21m 55s | Hits:  99%/2112  
  🟩 NVHPC25.3          Pass: 100%/2   | Total: 24m 00s | Avg: 12m 00s | Max: 12m 19s | Hits:  98%/2286  
🟩 cxx_family
  🟩 Clang              Pass: 100%/19  | Total:  2h 27m | Avg:  7m 46s | Max: 23m 18s | Hits:  99%/23186 
  🟩 GCC                Pass: 100%/22  | Total:  4h 05m | Avg: 11m 09s | Max: 25m 53s | Hits:  99%/27250 
  🟩 MSVC               Pass: 100%/4   | Total:  1h 24m | Avg: 21m 00s | Max: 21m 55s | Hits:  99%/4224  
  🟩 NVHPC              Pass: 100%/2   | Total: 24m 00s | Avg: 12m 00s | Max: 12m 19s | Hits:  98%/2286  
🟩 gpu
  🟩 h100               Pass: 100%/3   | Total: 54m 00s | Avg: 18m 00s | Max: 25m 53s | Hits:  99%/3714  
  🟩 rtx2080            Pass: 100%/36  | Total:  5h 07m | Avg:  8m 31s | Max: 21m 55s | Hits:  99%/43328 
  🟩 rtxa6000           Pass: 100%/8   | Total:  2h 20m | Avg: 17m 31s | Max: 23m 47s | Hits:  99%/9904  
🟩 jobs
  🟩 Build              Pass: 100%/39  | Total:  5h 26m | Avg:  8m 22s | Max: 21m 55s | Hits:  99%/47042 
  🟩 DeviceLaunch       Pass: 100%/1   | Total: 23m 47s | Avg: 23m 47s | Max: 23m 47s | Hits:  99%/1238  
  🟩 GraphCapture       Pass: 100%/1   | Total: 18m 02s | Avg: 18m 02s | Max: 18m 02s | Hits:  99%/1238  
  🟩 HostLaunch         Pass: 100%/3   | Total:  1h 12m | Avg: 24m 18s | Max: 25m 53s | Hits:  99%/3714  
  🟩 TestGPU            Pass: 100%/3   | Total: 59m 55s | Avg: 19m 58s | Max: 22m 43s | Hits:  99%/3714  
🟩 sm
  🟩 90                 Pass: 100%/3   | Total: 54m 00s | Avg: 18m 00s | Max: 25m 53s | Hits:  99%/3714  
  🟩 90;90a;100         Pass: 100%/1   | Total:  7m 32s | Avg:  7m 32s | Max:  7m 32s | Hits:  99%/1238  
🟩 std
  🟩 17                 Pass: 100%/21  | Total:  3h 09m | Avg:  9m 02s | Max: 21m 50s | Hits:  99%/25201 
  🟩 20                 Pass: 100%/26  | Total:  5h 11m | Avg: 11m 59s | Max: 25m 53s | Hits:  99%/31745 
```

</details>

<li>
<details><summary><h3>🟩 thrust: Pass: 100%/47  | Total:  6h 59m | Avg:  8m 56s | Max: 27m 23s | Hits:  99%/84074 </h3></summary>

```
🟩 cmake_options
  🟩 -DTHRUST_DISPATCH_TYPE=Force32bit Pass: 100%/2   | Total: 17m 50s | Avg:  8m 55s | Max: 11m 22s | Hits:  99%/3580  
🟩 cpu
  🟩 amd64              Pass: 100%/45  | Total:  6h 49m | Avg:  9m 06s | Max: 27m 23s | Hits:  99%/80495 
  🟩 arm64              Pass: 100%/2   | Total: 10m 18s | Avg:  5m 09s | Max:  5m 24s | Hits:  99%/3579  
🟩 ctk
  🟩 12.0               Pass: 100%/5   | Total: 40m 30s | Avg:  8m 06s | Max: 20m 12s | Hits:  99%/8941  
  🟩 12.8               Pass: 100%/42  | Total:  6h 19m | Avg:  9m 02s | Max: 27m 23s | Hits:  99%/75133 
🟩 cudacxx
  🟩 ClangCUDA19        Pass: 100%/2   | Total: 10m 48s | Avg:  5m 24s | Max:  5m 38s | Hits: 100%/3578  
  🟩 nvcc12.0           Pass: 100%/5   | Total: 40m 30s | Avg:  8m 06s | Max: 20m 12s | Hits:  99%/8941  
  🟩 nvcc12.8           Pass: 100%/40  | Total:  6h 08m | Avg:  9m 13s | Max: 27m 23s | Hits:  99%/71555 
🟩 cudacxx_family
  🟩 ClangCUDA          Pass: 100%/2   | Total: 10m 48s | Avg:  5m 24s | Max:  5m 38s | Hits: 100%/3578  
  🟩 nvcc               Pass: 100%/45  | Total:  6h 49m | Avg:  9m 05s | Max: 27m 23s | Hits:  99%/80496 
🟩 cxx
  🟩 Clang14            Pass: 100%/4   | Total: 21m 23s | Avg:  5m 20s | Max:  5m 49s | Hits: 100%/7156  
  🟩 Clang15            Pass: 100%/2   | Total: 11m 47s | Avg:  5m 53s | Max:  5m 54s | Hits: 100%/3578  
  🟩 Clang16            Pass: 100%/2   | Total: 11m 33s | Avg:  5m 46s | Max:  5m 59s | Hits: 100%/3578  
  🟩 Clang17            Pass: 100%/2   | Total: 11m 36s | Avg:  5m 48s | Max:  5m 53s | Hits: 100%/3578  
  🟩 Clang18            Pass: 100%/2   | Total: 11m 22s | Avg:  5m 41s | Max:  5m 55s | Hits: 100%/3578  
  🟩 Clang19            Pass: 100%/7   | Total: 45m 03s | Avg:  6m 26s | Max: 10m 22s | Hits: 100%/12523 
  🟩 GCC7               Pass: 100%/2   | Total: 10m 41s | Avg:  5m 20s | Max:  5m 43s | Hits:  99%/3580  
  🟩 GCC8               Pass: 100%/1   | Total:  5m 20s | Avg:  5m 20s | Max:  5m 20s | Hits:  99%/1790  
  🟩 GCC9               Pass: 100%/2   | Total: 11m 08s | Avg:  5m 34s | Max:  5m 47s | Hits:  99%/3580  
  🟩 GCC10              Pass: 100%/2   | Total: 11m 33s | Avg:  5m 46s | Max:  6m 06s | Hits:  99%/3580  
  🟩 GCC11              Pass: 100%/2   | Total: 11m 56s | Avg:  5m 58s | Max:  6m 12s | Hits:  99%/3580  
  🟩 GCC12              Pass: 100%/2   | Total: 12m 27s | Avg:  6m 13s | Max:  6m 28s | Hits:  99%/3580  
  🟩 GCC13              Pass: 100%/10  | Total:  1h 17m | Avg:  7m 46s | Max: 11m 33s | Hits:  99%/17900 
  🟩 MSVC14.29          Pass: 100%/2   | Total: 42m 59s | Avg: 21m 29s | Max: 22m 47s | Hits:  99%/3566  
  🟩 MSVC14.42          Pass: 100%/3   | Total:  1h 09m | Avg: 23m 16s | Max: 27m 23s | Hits:  99%/5349  
  🟩 NVHPC25.3          Pass: 100%/2   | Total: 53m 36s | Avg: 26m 48s | Max: 26m 57s | Hits:  99%/3578  
🟩 cxx_family
  🟩 Clang              Pass: 100%/19  | Total:  1h 52m | Avg:  5m 56s | Max: 10m 22s | Hits: 100%/33991 
  🟩 GCC                Pass: 100%/21  | Total:  2h 20m | Avg:  6m 42s | Max: 11m 33s | Hits:  99%/37590 
  🟩 MSVC               Pass: 100%/5   | Total:  1h 52m | Avg: 22m 33s | Max: 27m 23s | Hits:  99%/8915  
  🟩 NVHPC              Pass: 100%/2   | Total: 53m 36s | Avg: 26m 48s | Max: 26m 57s | Hits:  99%/3578  
🟩 gpu
  🟩 h100               Pass: 100%/2   | Total: 15m 34s | Avg:  7m 47s | Max: 10m 53s | Hits:  99%/3580  
  🟩 rtx2080            Pass: 100%/35  | Total:  4h 47m | Avg:  8m 13s | Max: 26m 57s | Hits:  99%/62611 
  🟩 rtx4090            Pass: 100%/10  | Total:  1h 56m | Avg: 11m 39s | Max: 27m 23s | Hits:  99%/17883 
🟩 jobs
  🟩 Build              Pass: 100%/40  | Total:  5h 32m | Avg:  8m 18s | Max: 26m 57s | Hits:  99%/71553 
  🟩 TestCPU            Pass: 100%/3   | Total: 43m 46s | Avg: 14m 35s | Max: 27m 23s | Hits:  99%/5362  
  🟩 TestGPU            Pass: 100%/4   | Total: 44m 10s | Avg: 11m 02s | Max: 11m 33s | Hits:  99%/7159  
🟩 sm
  🟩 90                 Pass: 100%/2   | Total: 15m 34s | Avg:  7m 47s | Max: 10m 53s | Hits:  99%/3580  
  🟩 90;90a;100         Pass: 100%/1   | Total:  6m 19s | Avg:  6m 19s | Max:  6m 19s | Hits:  99%/1790  
🟩 std
  🟩 17                 Pass: 100%/21  | Total:  3h 08m | Avg:  8m 58s | Max: 26m 39s | Hits:  99%/37560 
  🟩 20                 Pass: 100%/24  | Total:  3h 33m | Avg:  8m 54s | Max: 27m 23s | Hits:  99%/42934 
```

</details>

<li>
<details><summary><h3>🟩 cudax: Pass: 100%/26  | Total:  2h 06m | Avg:  4m 51s | Max: 10m 46s | Hits:  98%/14616 </h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/22  | Total:  1h 54m | Avg:  5m 11s | Max: 10m 46s | Hits:  98%/12276 
  🟩 arm64              Pass: 100%/4   | Total: 11m 57s | Avg:  2m 59s | Max:  3m 03s | Hits:  99%/2340  
🟩 ctk
  🟩 12.0               Pass: 100%/3   | Total: 16m 51s | Avg:  5m 37s | Max: 10m 46s | Hits:  98%/1460  
  🟩 12.8               Pass: 100%/23  | Total:  1h 49m | Avg:  4m 45s | Max: 10m 06s | Hits:  98%/13156 
🟩 cudacxx
  🟩 nvcc12.0           Pass: 100%/3   | Total: 16m 51s | Avg:  5m 37s | Max: 10m 46s | Hits:  98%/1460  
  🟩 nvcc12.8           Pass: 100%/23  | Total:  1h 49m | Avg:  4m 45s | Max: 10m 06s | Hits:  98%/13156 
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/26  | Total:  2h 06m | Avg:  4m 51s | Max: 10m 46s | Hits:  98%/14616 
🟩 cxx
  🟩 Clang14            Pass: 100%/2   | Total:  6m 18s | Avg:  3m 09s | Max:  3m 22s | Hits: 100%/1174  
  🟩 Clang15            Pass: 100%/1   | Total:  3m 48s | Avg:  3m 48s | Max:  3m 48s | Hits: 100%/585   
  🟩 Clang16            Pass: 100%/1   | Total:  3m 38s | Avg:  3m 38s | Max:  3m 38s | Hits: 100%/585   
  🟩 Clang17            Pass: 100%/1   | Total:  3m 21s | Avg:  3m 21s | Max:  3m 21s | Hits: 100%/585   
  🟩 Clang18            Pass: 100%/1   | Total:  3m 24s | Avg:  3m 24s | Max:  3m 24s | Hits: 100%/585   
  🟩 Clang19            Pass: 100%/4   | Total: 17m 36s | Avg:  4m 24s | Max:  8m 24s | Hits: 100%/2340  
  🟩 GCC10              Pass: 100%/2   | Total:  6m 48s | Avg:  3m 24s | Max:  3m 39s | Hits:  99%/1174  
  🟩 GCC11              Pass: 100%/1   | Total:  3m 31s | Avg:  3m 31s | Max:  3m 31s | Hits:  99%/585   
  🟩 GCC12              Pass: 100%/1   | Total:  3m 29s | Avg:  3m 29s | Max:  3m 29s | Hits:  99%/585   
  🟩 GCC13              Pass: 100%/8   | Total: 37m 10s | Avg:  4m 38s | Max:  9m 17s | Hits:  97%/4680  
  🟩 MSVC14.39          Pass: 100%/1   | Total: 10m 46s | Avg: 10m 46s | Max: 10m 46s | Hits:  95%/286   
  🟩 MSVC14.42          Pass: 100%/1   | Total: 10m 06s | Avg: 10m 06s | Max: 10m 06s | Hits:  95%/286   
  🟩 NVHPC25.3          Pass: 100%/2   | Total: 16m 21s | Avg:  8m 10s | Max:  8m 42s | Hits:  97%/1166  
🟩 cxx_family
  🟩 Clang              Pass: 100%/10  | Total: 38m 05s | Avg:  3m 48s | Max:  8m 24s | Hits: 100%/5854  
  🟩 GCC                Pass: 100%/12  | Total: 50m 58s | Avg:  4m 14s | Max:  9m 17s | Hits:  98%/7024  
  🟩 MSVC               Pass: 100%/2   | Total: 20m 52s | Avg: 10m 26s | Max: 10m 46s | Hits:  95%/572   
  🟩 NVHPC              Pass: 100%/2   | Total: 16m 21s | Avg:  8m 10s | Max:  8m 42s | Hits:  97%/1166  
🟩 gpu
  🟩 h100               Pass: 100%/2   | Total: 11m 12s | Avg:  5m 36s | Max:  7m 17s | Hits:  95%/1170  
  🟩 rtx2080            Pass: 100%/24  | Total:  1h 55m | Avg:  4m 47s | Max: 10m 46s | Hits:  99%/13446 
🟩 jobs
  🟩 Build              Pass: 100%/23  | Total:  1h 41m | Avg:  4m 24s | Max: 10m 46s | Hits:  98%/12861 
  🟩 Test               Pass: 100%/3   | Total: 24m 58s | Avg:  8m 19s | Max:  9m 17s | Hits:  99%/1755  
🟩 sm
  🟩 90                 Pass: 100%/3   | Total: 14m 57s | Avg:  4m 59s | Max:  7m 17s | Hits:  93%/1755  
  🟩 90a                Pass: 100%/1   | Total:  3m 06s | Avg:  3m 06s | Max:  3m 06s | Hits:  99%/585   
🟩 std
  🟩 17                 Pass: 100%/4   | Total: 18m 25s | Avg:  4m 36s | Max:  8m 42s | Hits:  96%/2338  
  🟩 20                 Pass: 100%/22  | Total:  1h 47m | Avg:  4m 54s | Max: 10m 46s | Hits:  99%/12278 
```

</details>

<li>
<details><summary><h3>🟩 stdpar: Pass: 100%/4   | Total: 21m 52s | Avg:  5m 28s | Max:  6m 05s</h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/2   | Total: 12m 04s | Avg:  6m 02s | Max:  6m 05s
  🟩 arm64              Pass: 100%/2   | Total:  9m 48s | Avg:  4m 54s | Max:  4m 55s
🟩 ctk
  🟩 12.8               Pass: 100%/4   | Total: 21m 52s | Avg:  5m 28s | Max:  6m 05s
🟩 cudacxx
  🟩 nvcc12.8           Pass: 100%/4   | Total: 21m 52s | Avg:  5m 28s | Max:  6m 05s
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/4   | Total: 21m 52s | Avg:  5m 28s | Max:  6m 05s
🟩 cxx
  🟩 NVHPC25.3          Pass: 100%/4   | Total: 21m 52s | Avg:  5m 28s | Max:  6m 05s
🟩 cxx_family
  🟩 NVHPC              Pass: 100%/4   | Total: 21m 52s | Avg:  5m 28s | Max:  6m 05s
🟩 gpu
  🟩 rtx2080            Pass: 100%/4   | Total: 21m 52s | Avg:  5m 28s | Max:  6m 05s
🟩 jobs
  🟩 Build              Pass: 100%/4   | Total: 21m 52s | Avg:  5m 28s | Max:  6m 05s
🟩 std
  🟩 17                 Pass: 100%/2   | Total: 10m 52s | Avg:  5m 26s | Max:  5m 59s
  🟩 20                 Pass: 100%/2   | Total: 11m 00s | Avg:  5m 30s | Max:  6m 05s
```

</details>

<li>
<details><summary><h3>🟩 python: Pass: 100%/3   | Total: 29m 45s | Avg:  9m 55s | Max: 15m 33s</h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/3   | Total: 29m 45s | Avg:  9m 55s | Max: 15m 33s
🟩 ctk
  🟩 12.8               Pass: 100%/3   | Total: 29m 45s | Avg:  9m 55s | Max: 15m 33s
🟩 cudacxx
  🟩 nvcc12.8           Pass: 100%/3   | Total: 29m 45s | Avg:  9m 55s | Max: 15m 33s
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/3   | Total: 29m 45s | Avg:  9m 55s | Max: 15m 33s
🟩 cxx
  🟩 GCC13              Pass: 100%/3   | Total: 29m 45s | Avg:  9m 55s | Max: 15m 33s
🟩 cxx_family
  🟩 GCC                Pass: 100%/3   | Total: 29m 45s | Avg:  9m 55s | Max: 15m 33s
🟩 gpu
  🟩 rtx2080            Pass: 100%/3   | Total: 29m 45s | Avg:  9m 55s | Max: 15m 33s
🟩 jobs
  🟩 cuda.cccl          Pass: 100%/1   | Total:  7m 42s | Avg:  7m 42s | Max:  7m 42s
  🟩 cuda.cooperative   Pass: 100%/1   | Total: 15m 33s | Avg: 15m 33s | Max: 15m 33s
  🟩 cuda.parallel      Pass: 100%/1   | Total:  6m 30s | Avg:  6m 30s | Max:  6m 30s
```

</details>

<li>
<details><summary><h3>🟩 cccl_c_parallel: Pass: 100%/2   | Total: 14m 11s | Avg:  7m 05s | Max: 11m 56s | Hits:  98%/326   </h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/2   | Total: 14m 11s | Avg:  7m 05s | Max: 11m 56s | Hits:  98%/326   
🟩 ctk
  🟩 12.8               Pass: 100%/2   | Total: 14m 11s | Avg:  7m 05s | Max: 11m 56s | Hits:  98%/326   
🟩 cudacxx
  🟩 nvcc12.8           Pass: 100%/2   | Total: 14m 11s | Avg:  7m 05s | Max: 11m 56s | Hits:  98%/326   
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/2   | Total: 14m 11s | Avg:  7m 05s | Max: 11m 56s | Hits:  98%/326   
🟩 cxx
  🟩 GCC13              Pass: 100%/2   | Total: 14m 11s | Avg:  7m 05s | Max: 11m 56s | Hits:  98%/326   
🟩 cxx_family
  🟩 GCC                Pass: 100%/2   | Total: 14m 11s | Avg:  7m 05s | Max: 11m 56s | Hits:  98%/326   
🟩 gpu
  🟩 rtx2080            Pass: 100%/2   | Total: 14m 11s | Avg:  7m 05s | Max: 11m 56s | Hits:  98%/326   
🟩 jobs
  🟩 Build              Pass: 100%/1   | Total:  2m 15s | Avg:  2m 15s | Max:  2m 15s | Hits:  98%/163   
  🟩 Test               Pass: 100%/1   | Total: 11m 56s | Avg: 11m 56s | Max: 11m 56s | Hits:  98%/163   
```

</details>

</ul>

<details><summary><h3>👃 Inspect Changes</h3></summary>

### Modifications in project?

|     | Project
|-----|---------
|     | CCCL Infrastructure
| +/- | libcu++
|     | CUB
|     | Thrust
|     | CUDA Experimental
|     | stdpar
|     | python
|     | CCCL C Parallel Library
|     | Catch2Helper

### Modifications in project or dependencies?

|     | Project
|-----|---------
|     | CCCL Infrastructure
| +/- | libcu++
| +/- | CUB
| +/- | Thrust
| +/- | CUDA Experimental
| +/- | stdpar
| +/- | python
| +/- | CCCL C Parallel Library
| +/- | Catch2Helper
</details>


<details><summary><h2>🏃‍ Runner counts (total jobs: 174)</h2></summary>

|  #   | Runner
|------|------
|  123 | `linux-amd64-cpu16`
|   15 | `windows-amd64-cpu16`
|   12 | `linux-arm64-cpu16`
|   10 | `linux-amd64-gpu-rtx2080-latest-1`
|    6 | `linux-amd64-gpu-rtxa6000-latest-1`
|    5 | `linux-amd64-gpu-h100-latest-1`
|    3 | `linux-amd64-gpu-rtx4090-latest-1`


</details>

</details>

author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-05-12T19:00:32Z
body: <details><summary>🟩 CI finished in 1h 42m: Pass: 100%/174 | Total:  3d 16h | Avg: 30m 29s | Max:  1h 32m | Hits:  60%/283177</summary>

<ul>
<li>
<details><summary><h3>🟩 cub: Pass: 100%/47  | Total:  1d 17h | Avg: 52m 24s | Max:  1h 10m | Hits:  34%/56946 </h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/45  | Total:  1d 15h | Avg: 52m 24s | Max:  1h 10m | Hits:  34%/54470 
  🟩 arm64              Pass: 100%/2   | Total:  1h 45m | Avg: 52m 31s | Max: 54m 51s | Hits:  21%/2476  
🟩 ctk
  🟩 12.0               Pass: 100%/5   | Total:  4h 57m | Avg: 59m 24s | Max:  1h 08m | Hits:  20%/6016  
  🟩 12.8               Pass: 100%/42  | Total:  1d 12h | Avg: 51m 34s | Max:  1h 10m | Hits:  35%/50930 
🟩 cudacxx
  🟩 ClangCUDA19        Pass: 100%/2   | Total:  1h 09m | Avg: 34m 35s | Max: 35m 06s | Hits:  20%/2132  
  🟩 nvcc12.0           Pass: 100%/5   | Total:  4h 57m | Avg: 59m 24s | Max:  1h 08m | Hits:  20%/6016  
  🟩 nvcc12.8           Pass: 100%/40  | Total:  1d 10h | Avg: 52m 25s | Max:  1h 10m | Hits:  36%/48798 
🟩 cudacxx_family
  🟩 ClangCUDA          Pass: 100%/2   | Total:  1h 09m | Avg: 34m 35s | Max: 35m 06s | Hits:  20%/2132  
  🟩 nvcc               Pass: 100%/45  | Total:  1d 15h | Avg: 53m 12s | Max:  1h 10m | Hits:  34%/54814 
🟩 cxx
  🟩 Clang14            Pass: 100%/4   | Total:  3h 38m | Avg: 54m 31s | Max: 55m 50s | Hits:  21%/4960  
  🟩 Clang15            Pass: 100%/2   | Total:  1h 49m | Avg: 54m 49s | Max: 57m 48s | Hits:  21%/2476  
  🟩 Clang16            Pass: 100%/2   | Total:  1h 57m | Avg: 58m 45s | Max:  1h 00m | Hits:  21%/2476  
  🟩 Clang17            Pass: 100%/2   | Total:  1h 54m | Avg: 57m 07s | Max:  1h 01m | Hits:  21%/2476  
  🟩 Clang18            Pass: 100%/2   | Total:  1h 48m | Avg: 54m 17s | Max: 54m 25s | Hits:  21%/2476  
  🟩 Clang19            Pass: 100%/7   | Total:  4h 57m | Avg: 42m 29s | Max:  1h 01m | Hits:  44%/8322  
  🟩 GCC7               Pass: 100%/2   | Total:  1h 56m | Avg: 58m 18s | Max: 59m 28s | Hits:  21%/2480  
  🟩 GCC8               Pass: 100%/1   | Total: 56m 47s | Avg: 56m 47s | Max: 56m 47s | Hits:  21%/1240  
  🟩 GCC9               Pass: 100%/2   | Total:  2h 00m | Avg:  1h 00m | Max:  1h 01m | Hits:  21%/2480  
  🟩 GCC10              Pass: 100%/2   | Total:  2h 00m | Avg:  1h 00m | Max:  1h 00m | Hits:  21%/2480  
  🟩 GCC11              Pass: 100%/2   | Total:  1h 53m | Avg: 56m 54s | Max: 58m 37s | Hits:  21%/2476  
  🟩 GCC12              Pass: 100%/2   | Total:  2h 02m | Avg:  1h 01m | Max:  1h 05m | Hits:  21%/2476  
  🟩 GCC13              Pass: 100%/11  | Total:  7h 12m | Avg: 39m 16s | Max:  1h 03m | Hits:  63%/13618 
  🟩 MSVC14.29          Pass: 100%/2   | Total:  2h 18m | Avg:  1h 09m | Max:  1h 09m | Hits:  16%/2112  
  🟩 MSVC14.42          Pass: 100%/2   | Total:  2h 19m | Avg:  1h 09m | Max:  1h 10m | Hits:  16%/2112  
  🟩 NVHPC25.3          Pass: 100%/2   | Total:  2h 17m | Avg:  1h 08m | Max:  1h 09m | Hits:  11%/2286  
🟩 cxx_family
  🟩 Clang              Pass: 100%/19  | Total: 16h 05m | Avg: 50m 49s | Max:  1h 01m | Hits:  29%/23186 
  🟩 GCC                Pass: 100%/22  | Total: 18h 02m | Avg: 49m 13s | Max:  1h 05m | Hits:  42%/27250 
  🟩 MSVC               Pass: 100%/4   | Total:  4h 37m | Avg:  1h 09m | Max:  1h 10m | Hits:  16%/4224  
  🟩 NVHPC              Pass: 100%/2   | Total:  2h 17m | Avg:  1h 08m | Max:  1h 09m | Hits:  11%/2286  
🟩 gpu
  🟩 h100               Pass: 100%/3   | Total:  1h 19m | Avg: 26m 32s | Max: 29m 28s | Hits:  73%/3714  
  🟩 rtx2080            Pass: 100%/36  | Total:  1d 10h | Avg: 58m 03s | Max:  1h 10m | Hits:  20%/43328 
  🟩 rtxa6000           Pass: 100%/8   | Total:  4h 53m | Avg: 36m 39s | Max: 58m 48s | Hits:  80%/9904  
🟩 jobs
  🟩 Build              Pass: 100%/39  | Total:  1d 13h | Avg: 57m 13s | Max:  1h 10m | Hits:  20%/47042 
  🟩 DeviceLaunch       Pass: 100%/1   | Total: 37m 38s | Avg: 37m 38s | Max: 37m 38s | Hits:  99%/1238  
  🟩 GraphCapture       Pass: 100%/1   | Total: 20m 22s | Avg: 20m 22s | Max: 20m 22s | Hits:  99%/1238  
  🟩 HostLaunch         Pass: 100%/3   | Total:  1h 29m | Avg: 29m 49s | Max: 37m 02s | Hits:  99%/3714  
  🟩 TestGPU            Pass: 100%/3   | Total:  1h 24m | Avg: 28m 02s | Max: 37m 14s | Hits:  99%/3714  
🟩 sm
  🟩 90                 Pass: 100%/3   | Total:  1h 19m | Avg: 26m 32s | Max: 29m 28s | Hits:  73%/3714  
  🟩 90;90a;100         Pass: 100%/1   | Total:  1h 03m | Avg:  1h 03m | Max:  1h 03m | Hits:  21%/1238  
🟩 std
  🟩 17                 Pass: 100%/21  | Total: 20h 40m | Avg: 59m 04s | Max:  1h 09m | Hits:  20%/25201 
  🟩 20                 Pass: 100%/26  | Total: 20h 22m | Avg: 47m 01s | Max:  1h 10m | Hits:  45%/31745 
```

</details>

<li>
<details><summary><h3>🟩 thrust: Pass: 100%/47  | Total:  1d 04h | Avg: 37m 00s | Max:  1h 32m | Hits:  54%/84074 </h3></summary>

```
🟩 cmake_options
  🟩 -DTHRUST_DISPATCH_TYPE=Force32bit Pass: 100%/2   | Total: 43m 36s | Avg: 21m 48s | Max: 32m 52s | Hits:  73%/3580  
🟩 cpu
  🟩 amd64              Pass: 100%/45  | Total:  1d 03h | Avg: 37m 11s | Max:  1h 32m | Hits:  54%/80495 
  🟩 arm64              Pass: 100%/2   | Total:  1h 05m | Avg: 32m 53s | Max: 34m 42s | Hits:  45%/3579  
🟩 ctk
  🟩 12.0               Pass: 100%/5   | Total:  3h 23m | Avg: 40m 44s | Max: 59m 54s | Hits:  48%/8941  
  🟩 12.8               Pass: 100%/42  | Total:  1d 01h | Avg: 36m 33s | Max:  1h 32m | Hits:  54%/75133 
🟩 cudacxx
  🟩 ClangCUDA19        Pass: 100%/2   | Total:  1h 00m | Avg: 30m 25s | Max: 31m 46s | Hits:  46%/3578  
  🟩 nvcc12.0           Pass: 100%/5   | Total:  3h 23m | Avg: 40m 44s | Max: 59m 54s | Hits:  48%/8941  
  🟩 nvcc12.8           Pass: 100%/40  | Total:  1d 00h | Avg: 36m 52s | Max:  1h 32m | Hits:  55%/71555 
🟩 cudacxx_family
  🟩 ClangCUDA          Pass: 100%/2   | Total:  1h 00m | Avg: 30m 25s | Max: 31m 46s | Hits:  46%/3578  
  🟩 nvcc               Pass: 100%/45  | Total:  1d 03h | Avg: 37m 18s | Max:  1h 32m | Hits:  54%/80496 
🟩 cxx
  🟩 Clang14            Pass: 100%/4   | Total:  2h 21m | Avg: 35m 17s | Max: 36m 21s | Hits:  55%/7156  
  🟩 Clang15            Pass: 100%/2   | Total:  1h 15m | Avg: 37m 53s | Max: 38m 30s | Hits:  46%/3578  
  🟩 Clang16            Pass: 100%/2   | Total:  1h 12m | Avg: 36m 08s | Max: 36m 18s | Hits:  46%/3578  
  🟩 Clang17            Pass: 100%/2   | Total:  1h 16m | Avg: 38m 19s | Max: 38m 33s | Hits:  46%/3578  
  🟩 Clang18            Pass: 100%/2   | Total:  1h 09m | Avg: 34m 51s | Max: 36m 55s | Hits:  46%/3578  
  🟩 Clang19            Pass: 100%/7   | Total:  2h 59m | Avg: 25m 38s | Max: 35m 02s | Hits:  63%/12523 
  🟩 GCC7               Pass: 100%/2   | Total:  1h 12m | Avg: 36m 09s | Max: 36m 15s | Hits:  53%/3580  
  🟩 GCC8               Pass: 100%/1   | Total: 36m 39s | Avg: 36m 39s | Max: 36m 39s | Hits:  46%/1790  
  🟩 GCC9               Pass: 100%/2   | Total:  1h 13m | Avg: 36m 46s | Max: 36m 57s | Hits:  55%/3580  
  🟩 GCC10              Pass: 100%/2   | Total:  1h 10m | Avg: 35m 08s | Max: 35m 11s | Hits:  46%/3580  
  🟩 GCC11              Pass: 100%/2   | Total:  1h 15m | Avg: 37m 42s | Max: 40m 04s | Hits:  46%/3580  
  🟩 GCC12              Pass: 100%/2   | Total:  1h 18m | Avg: 39m 02s | Max: 42m 14s | Hits:  46%/3580  
  🟩 GCC13              Pass: 100%/10  | Total:  4h 20m | Avg: 26m 03s | Max: 40m 28s | Hits:  68%/17900 
  🟩 MSVC14.29          Pass: 100%/2   | Total:  1h 59m | Avg: 59m 49s | Max: 59m 54s | Hits:  45%/3566  
  🟩 MSVC14.42          Pass: 100%/3   | Total:  2h 34m | Avg: 51m 34s | Max:  1h 07m | Hits:  55%/5349  
  🟩 NVHPC25.3          Pass: 100%/2   | Total:  3h 03m | Avg:  1h 31m | Max:  1h 32m | Hits:  17%/3578  
🟩 cxx_family
  🟩 Clang              Pass: 100%/19  | Total: 10h 15m | Avg: 32m 22s | Max: 38m 33s | Hits:  54%/33991 
  🟩 GCC                Pass: 100%/21  | Total: 11h 06m | Avg: 31m 45s | Max: 42m 14s | Hits:  58%/37590 
  🟩 MSVC               Pass: 100%/5   | Total:  4h 34m | Avg: 54m 52s | Max:  1h 07m | Hits:  51%/8915  
  🟩 NVHPC              Pass: 100%/2   | Total:  3h 03m | Avg:  1h 31m | Max:  1h 32m | Hits:  17%/3578  
🟩 gpu
  🟩 h100               Pass: 100%/2   | Total: 57m 37s | Avg: 28m 48s | Max: 32m 38s | Hits:  47%/3580  
  🟩 rtx2080            Pass: 100%/35  | Total: 23h 55m | Avg: 41m 01s | Max:  1h 32m | Hits:  47%/62611 
  🟩 rtx4090            Pass: 100%/10  | Total:  4h 06m | Avg: 24m 36s | Max:  1h 07m | Hits:  80%/17883 
🟩 jobs
  🟩 Build              Pass: 100%/40  | Total:  1d 03h | Avg: 40m 41s | Max:  1h 32m | Hits:  47%/71553 
  🟩 TestCPU            Pass: 100%/3   | Total: 46m 35s | Avg: 15m 31s | Max: 29m 45s | Hits:  99%/5362  
  🟩 TestGPU            Pass: 100%/4   | Total:  1h 05m | Avg: 16m 15s | Max: 32m 38s | Hits:  87%/7159  
🟩 sm
  🟩 90                 Pass: 100%/2   | Total: 57m 37s | Avg: 28m 48s | Max: 32m 38s | Hits:  47%/3580  
  🟩 90;90a;100         Pass: 100%/1   | Total: 31m 43s | Avg: 31m 43s | Max: 31m 43s | Hits:  75%/1790  
🟩 std
  🟩 17                 Pass: 100%/21  | Total: 14h 59m | Avg: 42m 49s | Max:  1h 32m | Hits:  46%/37560 
  🟩 20                 Pass: 100%/24  | Total: 13h 16m | Avg: 33m 10s | Max:  1h 30m | Hits:  59%/42934 
```

</details>

<li>
<details><summary><h3>🟩 libcudacxx: Pass: 100%/45  | Total: 14h 27m | Avg: 19m 17s | Max: 47m 43s | Hits:  74%/127189</h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/43  | Total: 13h 57m | Avg: 19m 28s | Max: 47m 43s | Hits:  73%/120600
  🟩 arm64              Pass: 100%/2   | Total: 30m 47s | Avg: 15m 23s | Max: 17m 15s | Hits:  80%/6589  
🟩 ctk
  🟩 12.0               Pass: 100%/5   | Total:  1h 24m | Avg: 16m 59s | Max: 28m 38s | Hits:  78%/16101 
  🟩 12.8               Pass: 100%/40  | Total: 13h 03m | Avg: 19m 34s | Max: 47m 43s | Hits:  73%/111088
🟩 cudacxx
  🟩 ClangCUDA19        Pass: 100%/2   | Total: 47m 43s | Avg: 23m 51s | Max: 24m 59s | Hits:  26%/6551  
  🟩 nvcc12.0           Pass: 100%/5   | Total:  1h 24m | Avg: 16m 59s | Max: 28m 38s | Hits:  78%/16101 
  🟩 nvcc12.8           Pass: 100%/38  | Total: 12h 15m | Avg: 19m 21s | Max: 47m 43s | Hits:  76%/104537
🟩 cudacxx_family
  🟩 ClangCUDA          Pass: 100%/2   | Total: 47m 43s | Avg: 23m 51s | Max: 24m 59s | Hits:  26%/6551  
  🟩 nvcc               Pass: 100%/43  | Total: 13h 40m | Avg: 19m 04s | Max: 47m 43s | Hits:  76%/120638
🟩 cxx
  🟩 Clang14            Pass: 100%/4   | Total:  1h 03m | Avg: 15m 45s | Max: 20m 04s | Hits:  80%/13058 
  🟩 Clang15            Pass: 100%/2   | Total: 41m 53s | Avg: 20m 56s | Max: 23m 31s | Hits:  63%/6547  
  🟩 Clang16            Pass: 100%/2   | Total: 33m 16s | Avg: 16m 38s | Max: 18m 55s | Hits:  80%/6547  
  🟩 Clang17            Pass: 100%/2   | Total: 37m 35s | Avg: 18m 47s | Max: 19m 32s | Hits:  73%/6547  
  🟩 Clang18            Pass: 100%/2   | Total: 36m 49s | Avg: 18m 24s | Max: 18m 35s | Hits:  73%/6547  
  🟩 Clang19            Pass: 100%/6   | Total:  2h 05m | Avg: 20m 58s | Max: 34m 47s | Hits:  63%/16392 
  🟩 GCC7               Pass: 100%/2   | Total: 23m 08s | Avg: 11m 34s | Max: 12m 31s | Hits:  74%/6481  
  🟩 GCC8               Pass: 100%/1   | Total:  8m 35s | Avg:  8m 35s | Max:  8m 35s | Hits:  87%/3251  
  🟩 GCC9               Pass: 100%/2   | Total: 36m 33s | Avg: 18m 16s | Max: 20m 13s | Hits:  64%/6493  
  🟩 GCC10              Pass: 100%/2   | Total: 27m 12s | Avg: 13m 36s | Max: 13m 56s | Hits:  89%/6549  
  🟩 GCC11              Pass: 100%/2   | Total: 35m 21s | Avg: 17m 40s | Max: 18m 08s | Hits:  73%/6545  
  🟩 GCC12              Pass: 100%/2   | Total: 37m 57s | Avg: 18m 58s | Max: 19m 39s | Hits:  72%/6549  
  🟩 GCC13              Pass: 100%/10  | Total:  2h 47m | Avg: 16m 47s | Max: 27m 12s | Hits:  74%/16638 
  🟩 MSVC14.29          Pass: 100%/2   | Total: 58m 33s | Avg: 29m 16s | Max: 29m 55s | Hits:  86%/6225  
  🟩 MSVC14.42          Pass: 100%/2   | Total:  1h 05m | Avg: 32m 47s | Max: 34m 21s | Hits:  90%/6283  
  🟩 NVHPC25.3          Pass: 100%/2   | Total:  1h 08m | Avg: 34m 23s | Max: 47m 43s | Hits:  56%/6537  
🟩 cxx_family
  🟩 Clang              Pass: 100%/18  | Total:  5h 38m | Avg: 18m 48s | Max: 34m 47s | Hits:  71%/55638 
  🟩 GCC                Pass: 100%/21  | Total:  5h 36m | Avg: 16m 01s | Max: 27m 12s | Hits:  75%/52506 
  🟩 MSVC               Pass: 100%/4   | Total:  2h 04m | Avg: 31m 01s | Max: 34m 21s | Hits:  88%/12508 
  🟩 NVHPC              Pass: 100%/2   | Total:  1h 08m | Avg: 34m 23s | Max: 47m 43s | Hits:  56%/6537  
🟩 gpu
  🟩 h100               Pass: 100%/2   | Total: 23m 10s | Avg: 11m 35s | Max: 15m 15s | Hits:  89%/3377  
  🟩 rtx2080            Pass: 100%/43  | Total: 14h 04m | Avg: 19m 38s | Max: 47m 43s | Hits:  73%/123812
🟩 jobs
  🟩 Build              Pass: 100%/39  | Total: 12h 28m | Avg: 19m 10s | Max: 47m 43s | Hits:  74%/127149
  🟩 NVRTC              Pass: 100%/2   | Total: 40m 27s | Avg: 20m 13s | Max: 21m 18s | Hits:  90%/40    
  🟩 Test               Pass: 100%/3   | Total:  1h 17m | Avg: 25m 44s | Max: 34m 47s
  🟩 VerifyCodegen      Pass: 100%/1   | Total:  2m 09s | Avg:  2m 09s | Max:  2m 09s
🟩 sm
  🟩 75                 Pass: 100%/2   | Total: 40m 27s | Avg: 20m 13s | Max: 21m 18s | Hits:  90%/40    
  🟩 90                 Pass: 100%/2   | Total: 23m 10s | Avg: 11m 35s | Max: 15m 15s | Hits:  89%/3377  
  🟩 90;90a;100         Pass: 100%/1   | Total: 16m 05s | Avg: 16m 05s | Max: 16m 05s | Hits:  89%/3377  
🟩 std
  🟩 17                 Pass: 100%/22  | Total:  6h 46m | Avg: 18m 27s | Max: 31m 13s | Hits:  76%/67861 
  🟩 20                 Pass: 100%/22  | Total:  7h 39m | Avg: 20m 53s | Max: 47m 43s | Hits:  71%/59328 
```

</details>

<li>
<details><summary><h3>🟩 cudax: Pass: 100%/26  | Total:  2h 54m | Avg:  6m 42s | Max: 13m 00s | Hits:  87%/14642 </h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/22  | Total:  2h 33m | Avg:  6m 59s | Max: 13m 00s | Hits:  87%/12298 
  🟩 arm64              Pass: 100%/4   | Total: 20m 33s | Avg:  5m 08s | Max:  5m 34s | Hits:  86%/2344  
🟩 ctk
  🟩 12.0               Pass: 100%/3   | Total: 22m 40s | Avg:  7m 33s | Max: 13m 00s | Hits:  83%/1463  
  🟩 12.8               Pass: 100%/23  | Total:  2h 31m | Avg:  6m 35s | Max: 12m 08s | Hits:  87%/13179 
🟩 cudacxx
  🟩 nvcc12.0           Pass: 100%/3   | Total: 22m 40s | Avg:  7m 33s | Max: 13m 00s | Hits:  83%/1463  
  🟩 nvcc12.8           Pass: 100%/23  | Total:  2h 31m | Avg:  6m 35s | Max: 12m 08s | Hits:  87%/13179 
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/26  | Total:  2h 54m | Avg:  6m 42s | Max: 13m 00s | Hits:  87%/14642 
🟩 cxx
  🟩 Clang14            Pass: 100%/2   | Total:  9m 46s | Avg:  4m 53s | Max:  5m 13s | Hits:  86%/1176  
  🟩 Clang15            Pass: 100%/1   | Total:  5m 33s | Avg:  5m 33s | Max:  5m 33s | Hits:  86%/586   
  🟩 Clang16            Pass: 100%/1   | Total:  5m 48s | Avg:  5m 48s | Max:  5m 48s | Hits:  86%/586   
  🟩 Clang17            Pass: 100%/1   | Total:  5m 45s | Avg:  5m 45s | Max:  5m 45s | Hits:  86%/586   
  🟩 Clang18            Pass: 100%/1   | Total:  5m 24s | Avg:  5m 24s | Max:  5m 24s | Hits:  86%/586   
  🟩 Clang19            Pass: 100%/4   | Total: 23m 45s | Avg:  5m 56s | Max:  8m 24s | Hits:  90%/2344  
  🟩 GCC10              Pass: 100%/2   | Total: 10m 57s | Avg:  5m 28s | Max:  5m 50s | Hits:  86%/1176  
  🟩 GCC11              Pass: 100%/1   | Total:  5m 35s | Avg:  5m 35s | Max:  5m 35s | Hits:  86%/586   
  🟩 GCC12              Pass: 100%/1   | Total:  5m 51s | Avg:  5m 51s | Max:  5m 51s | Hits:  86%/586   
  🟩 GCC13              Pass: 100%/8   | Total: 49m 22s | Avg:  6m 10s | Max:  9m 52s | Hits:  89%/4688  
  🟩 MSVC14.39          Pass: 100%/1   | Total: 13m 00s | Avg: 13m 00s | Max: 13m 00s | Hits:  70%/287   
  🟩 MSVC14.42          Pass: 100%/1   | Total: 12m 08s | Avg: 12m 08s | Max: 12m 08s | Hits:  70%/287   
  🟩 NVHPC25.3          Pass: 100%/2   | Total: 21m 31s | Avg: 10m 45s | Max: 10m 58s | Hits:  83%/1168  
🟩 cxx_family
  🟩 Clang              Pass: 100%/10  | Total: 56m 01s | Avg:  5m 36s | Max:  8m 24s | Hits:  88%/5864  
  🟩 GCC                Pass: 100%/12  | Total:  1h 11m | Avg:  5m 58s | Max:  9m 52s | Hits:  88%/7036  
  🟩 MSVC               Pass: 100%/2   | Total: 25m 08s | Avg: 12m 34s | Max: 13m 00s | Hits:  70%/574   
  🟩 NVHPC              Pass: 100%/2   | Total: 21m 31s | Avg: 10m 45s | Max: 10m 58s | Hits:  83%/1168  
🟩 gpu
  🟩 h100               Pass: 100%/2   | Total: 13m 22s | Avg:  6m 41s | Max:  8m 12s | Hits:  93%/1172  
  🟩 rtx2080            Pass: 100%/24  | Total:  2h 41m | Avg:  6m 42s | Max: 13m 00s | Hits:  86%/13470 
🟩 jobs
  🟩 Build              Pass: 100%/23  | Total:  2h 27m | Avg:  6m 25s | Max: 13m 00s | Hits:  85%/12884 
  🟩 Test               Pass: 100%/3   | Total: 26m 28s | Avg:  8m 49s | Max:  9m 52s | Hits:  99%/1758  
🟩 sm
  🟩 90                 Pass: 100%/3   | Total: 17m 49s | Avg:  5m 56s | Max:  8m 12s | Hits:  90%/1758  
  🟩 90a                Pass: 100%/1   | Total:  4m 28s | Avg:  4m 28s | Max:  4m 28s | Hits:  86%/586   
🟩 std
  🟩 17                 Pass: 100%/4   | Total: 24m 55s | Avg:  6m 13s | Max: 10m 33s | Hits:  85%/2342  
  🟩 20                 Pass: 100%/22  | Total:  2h 29m | Avg:  6m 47s | Max: 13m 00s | Hits:  87%/12300 
```

</details>

<li>
<details><summary><h3>🟩 stdpar: Pass: 100%/4   | Total: 19m 39s | Avg:  4m 54s | Max:  5m 50s</h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/2   | Total: 11m 26s | Avg:  5m 43s | Max:  5m 50s
  🟩 arm64              Pass: 100%/2   | Total:  8m 13s | Avg:  4m 06s | Max:  4m 07s
🟩 ctk
  🟩 12.8               Pass: 100%/4   | Total: 19m 39s | Avg:  4m 54s | Max:  5m 50s
🟩 cudacxx
  🟩 nvcc12.8           Pass: 100%/4   | Total: 19m 39s | Avg:  4m 54s | Max:  5m 50s
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/4   | Total: 19m 39s | Avg:  4m 54s | Max:  5m 50s
🟩 cxx
  🟩 NVHPC25.3          Pass: 100%/4   | Total: 19m 39s | Avg:  4m 54s | Max:  5m 50s
🟩 cxx_family
  🟩 NVHPC              Pass: 100%/4   | Total: 19m 39s | Avg:  4m 54s | Max:  5m 50s
🟩 gpu
  🟩 rtx2080            Pass: 100%/4   | Total: 19m 39s | Avg:  4m 54s | Max:  5m 50s
🟩 jobs
  🟩 Build              Pass: 100%/4   | Total: 19m 39s | Avg:  4m 54s | Max:  5m 50s
🟩 std
  🟩 17                 Pass: 100%/2   | Total:  9m 43s | Avg:  4m 51s | Max:  5m 36s
  🟩 20                 Pass: 100%/2   | Total:  9m 56s | Avg:  4m 58s | Max:  5m 50s
```

</details>

<li>
<details><summary><h3>🟩 python: Pass: 100%/3   | Total: 25m 03s | Avg:  8m 21s | Max: 14m 58s</h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/3   | Total: 25m 03s | Avg:  8m 21s | Max: 14m 58s
🟩 ctk
  🟩 12.8               Pass: 100%/3   | Total: 25m 03s | Avg:  8m 21s | Max: 14m 58s
🟩 cudacxx
  🟩 nvcc12.8           Pass: 100%/3   | Total: 25m 03s | Avg:  8m 21s | Max: 14m 58s
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/3   | Total: 25m 03s | Avg:  8m 21s | Max: 14m 58s
🟩 cxx
  🟩 GCC13              Pass: 100%/3   | Total: 25m 03s | Avg:  8m 21s | Max: 14m 58s
🟩 cxx_family
  🟩 GCC                Pass: 100%/3   | Total: 25m 03s | Avg:  8m 21s | Max: 14m 58s
🟩 gpu
  🟩 rtx2080            Pass: 100%/3   | Total: 25m 03s | Avg:  8m 21s | Max: 14m 58s
🟩 jobs
  🟩 cuda.cccl          Pass: 100%/1   | Total:  2m 41s | Avg:  2m 41s | Max:  2m 41s
  🟩 cuda.cooperative   Pass: 100%/1   | Total: 14m 58s | Avg: 14m 58s | Max: 14m 58s
  🟩 cuda.parallel      Pass: 100%/1   | Total:  7m 24s | Avg:  7m 24s | Max:  7m 24s
```

</details>

<li>
<details><summary><h3>🟩 cccl_c_parallel: Pass: 100%/2   | Total: 14m 46s | Avg:  7m 23s | Max: 11m 24s | Hits:  93%/326   </h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/2   | Total: 14m 46s | Avg:  7m 23s | Max: 11m 24s | Hits:  93%/326   
🟩 ctk
  🟩 12.8               Pass: 100%/2   | Total: 14m 46s | Avg:  7m 23s | Max: 11m 24s | Hits:  93%/326   
🟩 cudacxx
  🟩 nvcc12.8           Pass: 100%/2   | Total: 14m 46s | Avg:  7m 23s | Max: 11m 24s | Hits:  93%/326   
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/2   | Total: 14m 46s | Avg:  7m 23s | Max: 11m 24s | Hits:  93%/326   
🟩 cxx
  🟩 GCC13              Pass: 100%/2   | Total: 14m 46s | Avg:  7m 23s | Max: 11m 24s | Hits:  93%/326   
🟩 cxx_family
  🟩 GCC                Pass: 100%/2   | Total: 14m 46s | Avg:  7m 23s | Max: 11m 24s | Hits:  93%/326   
🟩 gpu
  🟩 rtx2080            Pass: 100%/2   | Total: 14m 46s | Avg:  7m 23s | Max: 11m 24s | Hits:  93%/326   
🟩 jobs
  🟩 Build              Pass: 100%/1   | Total:  3m 22s | Avg:  3m 22s | Max:  3m 22s | Hits:  87%/163   
  🟩 Test               Pass: 100%/1   | Total: 11m 24s | Avg: 11m 24s | Max: 11m 24s | Hits:  98%/163   
```

</details>

</ul>

<details><summary><h3>👃 Inspect Changes</h3></summary>

### Modifications in project?

|     | Project
|-----|---------
|     | CCCL Infrastructure
| +/- | libcu++
|     | CUB
|     | Thrust
|     | CUDA Experimental
|     | stdpar
|     | python
|     | CCCL C Parallel Library
|     | Catch2Helper

### Modifications in project or dependencies?

|     | Project
|-----|---------
|     | CCCL Infrastructure
| +/- | libcu++
| +/- | CUB
| +/- | Thrust
| +/- | CUDA Experimental
| +/- | stdpar
| +/- | python
| +/- | CCCL C Parallel Library
| +/- | Catch2Helper
</details>


<details><summary><h2>🏃‍ Runner counts (total jobs: 174)</h2></summary>

|  #   | Runner
|------|------
|  123 | `linux-amd64-cpu16`
|   15 | `windows-amd64-cpu16`
|   12 | `linux-arm64-cpu16`
|   10 | `linux-amd64-gpu-rtx2080-latest-1`
|    6 | `linux-amd64-gpu-rtxa6000-latest-1`
|    5 | `linux-amd64-gpu-h100-latest-1`
|    3 | `linux-amd64-gpu-rtx4090-latest-1`


</details>

</details>

author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-05-13T09:44:21Z
body: <details><summary>🟨 CI finished in 1h 42m: Pass:  99%/174 | Total:  2d 15h | Avg: 21m 48s | Max:  1h 05m | Hits:  62%/282080</summary>

<ul>
<li>
<details><summary><h3>🟨 cub: Pass:  97%/47  | Total: 23h 01m | Avg: 29m 23s | Max: 59m 13s | Hits:  68%/55849 </h3></summary>

```
🔍 cpu: amd64 🔍
  🔍 amd64              Pass:  97%/45  | Total: 22h 01m | Avg: 29m 22s | Max: 59m 13s | Hits:  69%/53371 
  🟩 arm64              Pass: 100%/2   | Total: 59m 28s | Avg: 29m 44s | Max: 51m 27s | Hits:  57%/2478  
🔍 ctk: 12.8 🔍
  🟩 12.0               Pass: 100%/5   | Total:  2h 36m | Avg: 31m 15s | Max: 56m 37s | Hits:  65%/6021  
  🔍 12.8               Pass:  97%/42  | Total: 20h 24m | Avg: 29m 09s | Max: 59m 13s | Hits:  68%/49828 
🔍 cudacxx: nvcc12.8 🔍
  🟩 ClangCUDA19        Pass: 100%/2   | Total:  1h 15m | Avg: 37m 47s | Max: 40m 02s | Hits:  14%/2134  
  🟩 nvcc12.0           Pass: 100%/5   | Total:  2h 36m | Avg: 31m 15s | Max: 56m 37s | Hits:  65%/6021  
  🔍 nvcc12.8           Pass:  97%/40  | Total: 19h 09m | Avg: 28m 43s | Max: 59m 13s | Hits:  71%/47694 
🔍 cudacxx_family: nvcc 🔍
  🟩 ClangCUDA          Pass: 100%/2   | Total:  1h 15m | Avg: 37m 47s | Max: 40m 02s | Hits:  14%/2134  
  🔍 nvcc               Pass:  97%/45  | Total: 21h 45m | Avg: 29m 00s | Max: 59m 13s | Hits:  70%/53715 
🔍 cxx: NVHPC25.3 🔍
  🟩 Clang14            Pass: 100%/4   | Total:  3h 43m | Avg: 55m 48s | Max: 57m 31s | Hits:  16%/4964  
  🟩 Clang15            Pass: 100%/2   | Total:  1h 55m | Avg: 57m 50s | Max: 59m 13s | Hits:  16%/2478  
  🟩 Clang16            Pass: 100%/2   | Total:  1h 49m | Avg: 54m 36s | Max: 54m 59s | Hits:  16%/2478  
  🟩 Clang17            Pass: 100%/2   | Total:  1h 51m | Avg: 55m 54s | Max: 56m 08s | Hits:  16%/2478  
  🟩 Clang18            Pass: 100%/2   | Total:  1h 54m | Avg: 57m 01s | Max: 58m 10s | Hits:  16%/2478  
  🟩 Clang19            Pass: 100%/7   | Total:  4h 37m | Avg: 39m 41s | Max: 54m 07s | Hits:  40%/8329  
  🟩 GCC7               Pass: 100%/2   | Total: 16m 37s | Avg:  8m 18s | Max:  8m 56s | Hits:  99%/2482  
  🟩 GCC8               Pass: 100%/1   | Total:  8m 09s | Avg:  8m 09s | Max:  8m 09s | Hits:  99%/1241  
  🟩 GCC9               Pass: 100%/2   | Total: 17m 48s | Avg:  8m 54s | Max:  9m 17s | Hits:  99%/2482  
  🟩 GCC10              Pass: 100%/2   | Total: 17m 07s | Avg:  8m 33s | Max:  8m 34s | Hits:  99%/2482  
  🟩 GCC11              Pass: 100%/2   | Total: 17m 56s | Avg:  8m 58s | Max:  9m 20s | Hits:  99%/2478  
  🟩 GCC12              Pass: 100%/2   | Total: 18m 40s | Avg:  9m 20s | Max:  9m 21s | Hits:  99%/2478  
  🟩 GCC13              Pass: 100%/11  | Total:  3h 10m | Avg: 17m 16s | Max: 27m 44s | Hits:  99%/13629 
  🟩 MSVC14.29          Pass: 100%/2   | Total: 58m 34s | Avg: 29m 17s | Max: 29m 57s | Hits:  99%/2114  
  🟩 MSVC14.42          Pass: 100%/2   | Total: 56m 24s | Avg: 28m 12s | Max: 28m 22s | Hits:  99%/2114  
  🔍 NVHPC25.3          Pass:  50%/2   | Total: 28m 03s | Avg: 14m 01s | Max: 14m 47s | Hits:  98%/1144  
🔍 cxx_family: NVHPC 🔍
  🟩 Clang              Pass: 100%/19  | Total: 15h 51m | Avg: 50m 05s | Max: 59m 13s | Hits:  24%/23205 
  🟩 GCC                Pass: 100%/22  | Total:  4h 46m | Avg: 13m 00s | Max: 27m 44s | Hits:  99%/27272 
  🟩 MSVC               Pass: 100%/4   | Total:  1h 54m | Avg: 28m 44s | Max: 29m 57s | Hits:  99%/4228  
  🔍 NVHPC              Pass:  50%/2   | Total: 28m 03s | Avg: 14m 01s | Max: 14m 47s | Hits:  98%/1144  
🔍 gpu: rtx2080 🔍
  🟩 h100               Pass: 100%/3   | Total: 57m 32s | Avg: 19m 10s | Max: 27m 44s | Hits:  99%/3717  
  🔍 rtx2080            Pass:  97%/36  | Total: 18h 40m | Avg: 31m 07s | Max: 59m 13s | Hits:  60%/42220 
  🟩 rtxa6000           Pass: 100%/8   | Total:  3h 23m | Avg: 25m 22s | Max: 54m 07s | Hits:  89%/9912  
🔍 jobs: Build 🔍
  🔍 Build              Pass:  97%/39  | Total: 19h 50m | Avg: 30m 31s | Max: 59m 13s | Hits:  61%/45937 
  🟩 DeviceLaunch       Pass: 100%/1   | Total: 26m 28s | Avg: 26m 28s | Max: 26m 28s | Hits:  99%/1239  
  🟩 GraphCapture       Pass: 100%/1   | Total: 20m 47s | Avg: 20m 47s | Max: 20m 47s | Hits:  99%/1239  
  🟩 HostLaunch         Pass: 100%/3   | Total:  1h 18m | Avg: 26m 06s | Max: 27m 44s | Hits:  99%/3717  
  🟩 TestGPU            Pass: 100%/3   | Total:  1h 05m | Avg: 21m 45s | Max: 23m 26s | Hits:  99%/3717  
🔍 std: 20 🔍
  🟩 17                 Pass: 100%/21  | Total: 10h 09m | Avg: 29m 00s | Max: 58m 10s | Hits:  67%/25222 
  🔍 20                 Pass:  96%/26  | Total: 12h 51m | Avg: 29m 41s | Max: 59m 13s | Hits:  69%/30627 
🟩 sm
  🟩 90                 Pass: 100%/3   | Total: 57m 32s | Avg: 19m 10s | Max: 27m 44s | Hits:  99%/3717  
  🟩 90;90a;100         Pass: 100%/1   | Total:  9m 34s | Avg:  9m 34s | Max:  9m 34s | Hits:  99%/1239  
```

</details>

<li>
<details><summary><h3>🟩 thrust: Pass: 100%/47  | Total: 17h 29m | Avg: 22m 20s | Max: 45m 05s | Hits:  78%/84074 </h3></summary>

```
🟩 cmake_options
  🟩 -DTHRUST_DISPATCH_TYPE=Force32bit Pass: 100%/2   | Total: 52m 29s | Avg: 26m 14s | Max: 45m 05s | Hits:  74%/3580  
🟩 cpu
  🟩 amd64              Pass: 100%/45  | Total: 16h 51m | Avg: 22m 28s | Max: 45m 05s | Hits:  78%/80495 
  🟩 arm64              Pass: 100%/2   | Total: 38m 30s | Avg: 19m 15s | Max: 31m 46s | Hits:  69%/3579  
🟩 ctk
  🟩 12.0               Pass: 100%/5   | Total:  1h 54m | Avg: 22m 51s | Max: 37m 37s | Hits:  77%/8941  
  🟩 12.8               Pass: 100%/42  | Total: 15h 35m | Avg: 22m 16s | Max: 45m 05s | Hits:  78%/75133 
🟩 cudacxx
  🟩 ClangCUDA19        Pass: 100%/2   | Total:  1h 04m | Avg: 32m 12s | Max: 34m 14s | Hits:  40%/3578  
  🟩 nvcc12.0           Pass: 100%/5   | Total:  1h 54m | Avg: 22m 51s | Max: 37m 37s | Hits:  77%/8941  
  🟩 nvcc12.8           Pass: 100%/40  | Total: 14h 31m | Avg: 21m 46s | Max: 45m 05s | Hits:  79%/71555 
🟩 cudacxx_family
  🟩 ClangCUDA          Pass: 100%/2   | Total:  1h 04m | Avg: 32m 12s | Max: 34m 14s | Hits:  40%/3578  
  🟩 nvcc               Pass: 100%/45  | Total: 16h 25m | Avg: 21m 53s | Max: 45m 05s | Hits:  79%/80496 
🟩 cxx
  🟩 Clang14            Pass: 100%/4   | Total:  2h 24m | Avg: 36m 10s | Max: 37m 42s | Hits:  49%/7156  
  🟩 Clang15            Pass: 100%/2   | Total:  1h 15m | Avg: 37m 51s | Max: 39m 55s | Hits:  38%/3578  
  🟩 Clang16            Pass: 100%/2   | Total:  1h 18m | Avg: 39m 08s | Max: 40m 07s | Hits:  38%/3578  
  🟩 Clang17            Pass: 100%/2   | Total:  1h 16m | Avg: 38m 24s | Max: 41m 42s | Hits:  38%/3578  
  🟩 Clang18            Pass: 100%/2   | Total:  1h 08m | Avg: 34m 11s | Max: 34m 37s | Hits:  38%/3578  
  🟩 Clang19            Pass: 100%/7   | Total:  3h 05m | Avg: 26m 29s | Max: 35m 54s | Hits:  60%/12523 
  🟩 GCC7               Pass: 100%/2   | Total: 13m 32s | Avg:  6m 46s | Max:  7m 14s | Hits:  99%/3580  
  🟩 GCC8               Pass: 100%/1   | Total:  7m 18s | Avg:  7m 18s | Max:  7m 18s | Hits:  99%/1790  
  🟩 GCC9               Pass: 100%/2   | Total: 13m 59s | Avg:  6m 59s | Max:  7m 18s | Hits:  99%/3580  
  🟩 GCC10              Pass: 100%/2   | Total: 14m 13s | Avg:  7m 06s | Max:  7m 20s | Hits:  99%/3580  
  🟩 GCC11              Pass: 100%/2   | Total: 14m 33s | Avg:  7m 16s | Max:  7m 18s | Hits:  99%/3580  
  🟩 GCC12              Pass: 100%/2   | Total: 15m 04s | Avg:  7m 32s | Max:  7m 43s | Hits:  99%/3580  
  🟩 GCC13              Pass: 100%/10  | Total:  2h 04m | Avg: 12m 27s | Max: 45m 05s | Hits:  94%/17900 
  🟩 MSVC14.29          Pass: 100%/2   | Total: 56m 12s | Avg: 28m 06s | Max: 29m 03s | Hits:  99%/3566  
  🟩 MSVC14.42          Pass: 100%/3   | Total:  1h 36m | Avg: 32m 14s | Max: 36m 34s | Hits:  99%/5349  
  🟩 NVHPC25.3          Pass: 100%/2   | Total:  1h 04m | Avg: 32m 10s | Max: 32m 25s | Hits:  99%/3578  
🟩 cxx_family
  🟩 Clang              Pass: 100%/19  | Total: 10h 29m | Avg: 33m 07s | Max: 41m 42s | Hits:  48%/33991 
  🟩 GCC                Pass: 100%/21  | Total:  3h 23m | Avg:  9m 40s | Max: 45m 05s | Hits:  97%/37590 
  🟩 MSVC               Pass: 100%/5   | Total:  2h 32m | Avg: 30m 35s | Max: 36m 34s | Hits:  99%/8915  
  🟩 NVHPC              Pass: 100%/2   | Total:  1h 04m | Avg: 32m 10s | Max: 32m 25s | Hits:  99%/3578  
🟩 gpu
  🟩 h100               Pass: 100%/2   | Total: 17m 56s | Avg:  8m 58s | Max: 12m 05s | Hits:  99%/3580  
  🟩 rtx2080            Pass: 100%/35  | Total: 13h 46m | Avg: 23m 36s | Max: 41m 42s | Hits:  73%/62611 
  🟩 rtx4090            Pass: 100%/10  | Total:  3h 25m | Avg: 20m 34s | Max: 45m 05s | Hits:  89%/17883 
🟩 jobs
  🟩 Build              Pass: 100%/40  | Total: 15h 13m | Avg: 22m 50s | Max: 41m 42s | Hits:  75%/71553 
  🟩 TestCPU            Pass: 100%/3   | Total: 53m 46s | Avg: 17m 55s | Max: 36m 34s | Hits:  99%/5362  
  🟩 TestGPU            Pass: 100%/4   | Total:  1h 22m | Avg: 20m 32s | Max: 45m 05s | Hits:  87%/7159  
🟩 sm
  🟩 90                 Pass: 100%/2   | Total: 17m 56s | Avg:  8m 58s | Max: 12m 05s | Hits:  99%/3580  
  🟩 90;90a;100         Pass: 100%/1   | Total:  7m 34s | Avg:  7m 34s | Max:  7m 34s | Hits:  99%/1790  
🟩 std
  🟩 17                 Pass: 100%/21  | Total:  8h 01m | Avg: 22m 56s | Max: 41m 42s | Hits:  78%/37560 
  🟩 20                 Pass: 100%/24  | Total:  8h 35m | Avg: 21m 28s | Max: 40m 07s | Hits:  78%/42934 
```

</details>

<li>
<details><summary><h3>🟩 libcudacxx: Pass: 100%/45  | Total: 17h 28m | Avg: 23m 17s | Max:  1h 05m | Hits:  47%/127189</h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/43  | Total: 16h 28m | Avg: 22m 58s | Max:  1h 05m | Hits:  48%/120600
  🟩 arm64              Pass: 100%/2   | Total: 59m 52s | Avg: 29m 56s | Max: 30m 58s | Hits:  18%/6589  
🟩 ctk
  🟩 12.0               Pass: 100%/5   | Total:  1h 45m | Avg: 21m 09s | Max: 29m 10s | Hits:  53%/16101 
  🟩 12.8               Pass: 100%/40  | Total: 15h 42m | Avg: 23m 33s | Max:  1h 05m | Hits:  46%/111088
🟩 cudacxx
  🟩 ClangCUDA19        Pass: 100%/2   | Total: 53m 33s | Avg: 26m 46s | Max: 29m 13s | Hits:  17%/6551  
  🟩 nvcc12.0           Pass: 100%/5   | Total:  1h 45m | Avg: 21m 09s | Max: 29m 10s | Hits:  53%/16101 
  🟩 nvcc12.8           Pass: 100%/38  | Total: 14h 48m | Avg: 23m 23s | Max:  1h 05m | Hits:  48%/104537
🟩 cudacxx_family
  🟩 ClangCUDA          Pass: 100%/2   | Total: 53m 33s | Avg: 26m 46s | Max: 29m 13s | Hits:  17%/6551  
  🟩 nvcc               Pass: 100%/43  | Total: 16h 34m | Avg: 23m 07s | Max:  1h 05m | Hits:  49%/120638
🟩 cxx
  🟩 Clang14            Pass: 100%/4   | Total:  2h 04m | Avg: 31m 11s | Max: 34m 19s | Hits:   7%/13058 
  🟩 Clang15            Pass: 100%/2   | Total:  1h 04m | Avg: 32m 11s | Max: 33m 50s | Hits:   7%/6547  
  🟩 Clang16            Pass: 100%/2   | Total:  1h 03m | Avg: 31m 57s | Max: 33m 20s | Hits:   7%/6547  
  🟩 Clang17            Pass: 100%/2   | Total:  1h 04m | Avg: 32m 01s | Max: 33m 36s | Hits:   7%/6547  
  🟩 Clang18            Pass: 100%/2   | Total:  1h 06m | Avg: 33m 16s | Max: 33m 26s | Hits:   7%/6547  
  🟩 Clang19            Pass: 100%/6   | Total:  3h 35m | Avg: 35m 56s | Max:  1h 05m | Hits:  11%/16392 
  🟩 GCC7               Pass: 100%/2   | Total: 11m 25s | Avg:  5m 42s | Max:  6m 00s | Hits:  94%/6481  
  🟩 GCC8               Pass: 100%/1   | Total: 19m 39s | Avg: 19m 39s | Max: 19m 39s | Hits:  52%/3251  
  🟩 GCC9               Pass: 100%/2   | Total: 34m 15s | Avg: 17m 07s | Max: 19m 22s | Hits:  69%/6493  
  🟩 GCC10              Pass: 100%/2   | Total: 39m 14s | Avg: 19m 37s | Max: 26m 41s | Hits:  65%/6549  
  🟩 GCC11              Pass: 100%/2   | Total: 12m 26s | Avg:  6m 13s | Max:  6m 18s | Hits:  94%/6545  
  🟩 GCC12              Pass: 100%/2   | Total: 50m 01s | Avg: 25m 00s | Max: 28m 57s | Hits:  52%/6549  
  🟩 GCC13              Pass: 100%/10  | Total:  2h 09m | Avg: 12m 59s | Max: 28m 54s | Hits:  81%/16638 
  🟩 MSVC14.29          Pass: 100%/2   | Total: 59m 04s | Avg: 29m 32s | Max: 29m 54s | Hits:  94%/6225  
  🟩 MSVC14.42          Pass: 100%/2   | Total:  1h 04m | Avg: 32m 21s | Max: 35m 32s | Hits:  56%/6283  
  🟩 NVHPC25.3          Pass: 100%/2   | Total: 28m 11s | Avg: 14m 05s | Max: 14m 49s | Hits:  93%/6537  
🟩 cxx_family
  🟩 Clang              Pass: 100%/18  | Total:  9h 59m | Avg: 33m 17s | Max:  1h 05m | Hits:   8%/55638 
  🟩 GCC                Pass: 100%/21  | Total:  4h 56m | Avg: 14m 08s | Max: 28m 57s | Hits:  75%/52506 
  🟩 MSVC               Pass: 100%/4   | Total:  2h 03m | Avg: 30m 56s | Max: 35m 32s | Hits:  75%/12508 
  🟩 NVHPC              Pass: 100%/2   | Total: 28m 11s | Avg: 14m 05s | Max: 14m 49s | Hits:  93%/6537  
🟩 gpu
  🟩 h100               Pass: 100%/2   | Total: 19m 08s | Avg:  9m 34s | Max: 13m 00s | Hits:  94%/3377  
  🟩 rtx2080            Pass: 100%/43  | Total: 17h 08m | Avg: 23m 55s | Max:  1h 05m | Hits:  46%/123812
🟩 jobs
  🟩 Build              Pass: 100%/39  | Total: 15h 08m | Avg: 23m 17s | Max: 35m 32s | Hits:  47%/127149
  🟩 NVRTC              Pass: 100%/2   | Total: 43m 42s | Avg: 21m 51s | Max: 22m 08s | Hits:  90%/40    
  🟩 Test               Pass: 100%/3   | Total:  1h 33m | Avg: 31m 08s | Max:  1h 05m
  🟩 VerifyCodegen      Pass: 100%/1   | Total:  2m 18s | Avg:  2m 18s | Max:  2m 18s
🟩 sm
  🟩 75                 Pass: 100%/2   | Total: 43m 42s | Avg: 21m 51s | Max: 22m 08s | Hits:  90%/40    
  🟩 90                 Pass: 100%/2   | Total: 19m 08s | Avg:  9m 34s | Max: 13m 00s | Hits:  94%/3377  
  🟩 90;90a;100         Pass: 100%/1   | Total:  7m 28s | Avg:  7m 28s | Max:  7m 28s | Hits:  94%/3377  
🟩 std
  🟩 17                 Pass: 100%/22  | Total:  8h 04m | Avg: 22m 02s | Max: 34m 09s | Hits:  53%/67861 
  🟩 20                 Pass: 100%/22  | Total:  9h 20m | Avg: 25m 29s | Max:  1h 05m | Hits:  40%/59328 
```

</details>

<li>
<details><summary><h3>🟩 cudax: Pass: 100%/26  | Total:  4h 09m | Avg:  9m 36s | Max: 18m 47s | Hits:  72%/14642 </h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/22  | Total:  3h 33m | Avg:  9m 41s | Max: 18m 47s | Hits:  74%/12298 
  🟩 arm64              Pass: 100%/4   | Total: 36m 33s | Avg:  9m 08s | Max: 15m 23s | Hits:  62%/2344  
🟩 ctk
  🟩 12.0               Pass: 100%/3   | Total: 29m 12s | Avg:  9m 44s | Max: 15m 33s | Hits:  68%/1463  
  🟩 12.8               Pass: 100%/23  | Total:  3h 40m | Avg:  9m 35s | Max: 18m 47s | Hits:  72%/13179 
🟩 cudacxx
  🟩 nvcc12.0           Pass: 100%/3   | Total: 29m 12s | Avg:  9m 44s | Max: 15m 33s | Hits:  68%/1463  
  🟩 nvcc12.8           Pass: 100%/23  | Total:  3h 40m | Avg:  9m 35s | Max: 18m 47s | Hits:  72%/13179 
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/26  | Total:  4h 09m | Avg:  9m 36s | Max: 18m 47s | Hits:  72%/14642 
🟩 cxx
  🟩 Clang14            Pass: 100%/2   | Total: 31m 33s | Avg: 15m 46s | Max: 16m 00s | Hits:  25%/1176  
  🟩 Clang15            Pass: 100%/1   | Total: 17m 22s | Avg: 17m 22s | Max: 17m 22s | Hits:  24%/586   
  🟩 Clang16            Pass: 100%/1   | Total: 17m 56s | Avg: 17m 56s | Max: 17m 56s | Hits:  24%/586   
  🟩 Clang17            Pass: 100%/1   | Total: 18m 26s | Avg: 18m 26s | Max: 18m 26s | Hits:  24%/586   
  🟩 Clang18            Pass: 100%/1   | Total: 17m 05s | Avg: 17m 05s | Max: 17m 05s | Hits:  24%/586   
  🟩 Clang19            Pass: 100%/4   | Total: 56m 36s | Avg: 14m 09s | Max: 18m 47s | Hits:  43%/2344  
  🟩 GCC10              Pass: 100%/2   | Total:  7m 31s | Avg:  3m 45s | Max:  4m 07s | Hits:  99%/1176  
  🟩 GCC11              Pass: 100%/1   | Total:  3m 43s | Avg:  3m 43s | Max:  3m 43s | Hits:  99%/586   
  🟩 GCC12              Pass: 100%/1   | Total:  3m 59s | Avg:  3m 59s | Max:  3m 59s | Hits:  99%/586   
  🟩 GCC13              Pass: 100%/8   | Total: 39m 00s | Avg:  4m 52s | Max:  9m 32s | Hits:  99%/4688  
  🟩 MSVC14.39          Pass: 100%/1   | Total: 10m 15s | Avg: 10m 15s | Max: 10m 15s | Hits:  95%/287   
  🟩 MSVC14.42          Pass: 100%/1   | Total: 10m 44s | Avg: 10m 44s | Max: 10m 44s | Hits:  95%/287   
  🟩 NVHPC25.3          Pass: 100%/2   | Total: 15m 42s | Avg:  7m 51s | Max:  7m 52s | Hits:  97%/1168  
🟩 cxx_family
  🟩 Clang              Pass: 100%/10  | Total:  2h 38m | Avg: 15m 53s | Max: 18m 47s | Hits:  32%/5864  
  🟩 GCC                Pass: 100%/12  | Total: 54m 13s | Avg:  4m 31s | Max:  9m 32s | Hits:  99%/7036  
  🟩 MSVC               Pass: 100%/2   | Total: 20m 59s | Avg: 10m 29s | Max: 10m 44s | Hits:  95%/574   
  🟩 NVHPC              Pass: 100%/2   | Total: 15m 42s | Avg:  7m 51s | Max:  7m 52s | Hits:  97%/1168  
🟩 gpu
  🟩 h100               Pass: 100%/2   | Total: 11m 31s | Avg:  5m 45s | Max:  7m 41s | Hits:  99%/1172  
  🟩 rtx2080            Pass: 100%/24  | Total:  3h 58m | Avg:  9m 55s | Max: 18m 47s | Hits:  69%/13470 
🟩 jobs
  🟩 Build              Pass: 100%/23  | Total:  3h 44m | Avg:  9m 45s | Max: 18m 47s | Hits:  68%/12884 
  🟩 Test               Pass: 100%/3   | Total: 25m 22s | Avg:  8m 27s | Max:  9m 32s | Hits:  99%/1758  
🟩 sm
  🟩 90                 Pass: 100%/3   | Total: 15m 01s | Avg:  5m 00s | Max:  7m 41s | Hits:  99%/1758  
  🟩 90a                Pass: 100%/1   | Total:  3m 16s | Avg:  3m 16s | Max:  3m 16s | Hits:  99%/586   
🟩 std
  🟩 17                 Pass: 100%/4   | Total: 29m 04s | Avg:  7m 16s | Max: 14m 17s | Hits:  80%/2342  
  🟩 20                 Pass: 100%/22  | Total:  3h 40m | Avg: 10m 02s | Max: 18m 47s | Hits:  70%/12300 
```

</details>

<li>
<details><summary><h3>🟩 stdpar: Pass: 100%/4   | Total: 18m 30s | Avg:  4m 37s | Max:  5m 29s</h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/2   | Total: 10m 42s | Avg:  5m 21s | Max:  5m 29s
  🟩 arm64              Pass: 100%/2   | Total:  7m 48s | Avg:  3m 54s | Max:  3m 56s
🟩 ctk
  🟩 12.8               Pass: 100%/4   | Total: 18m 30s | Avg:  4m 37s | Max:  5m 29s
🟩 cudacxx
  🟩 nvcc12.8           Pass: 100%/4   | Total: 18m 30s | Avg:  4m 37s | Max:  5m 29s
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/4   | Total: 18m 30s | Avg:  4m 37s | Max:  5m 29s
🟩 cxx
  🟩 NVHPC25.3          Pass: 100%/4   | Total: 18m 30s | Avg:  4m 37s | Max:  5m 29s
🟩 cxx_family
  🟩 NVHPC              Pass: 100%/4   | Total: 18m 30s | Avg:  4m 37s | Max:  5m 29s
🟩 gpu
  🟩 rtx2080            Pass: 100%/4   | Total: 18m 30s | Avg:  4m 37s | Max:  5m 29s
🟩 jobs
  🟩 Build              Pass: 100%/4   | Total: 18m 30s | Avg:  4m 37s | Max:  5m 29s
🟩 std
  🟩 17                 Pass: 100%/2   | Total:  9m 09s | Avg:  4m 34s | Max:  5m 13s
  🟩 20                 Pass: 100%/2   | Total:  9m 21s | Avg:  4m 40s | Max:  5m 29s
```

</details>

<li>
<details><summary><h3>🟩 python: Pass: 100%/3   | Total: 31m 48s | Avg: 10m 36s | Max: 15m 42s</h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/3   | Total: 31m 48s | Avg: 10m 36s | Max: 15m 42s
🟩 ctk
  🟩 12.8               Pass: 100%/3   | Total: 31m 48s | Avg: 10m 36s | Max: 15m 42s
🟩 cudacxx
  🟩 nvcc12.8           Pass: 100%/3   | Total: 31m 48s | Avg: 10m 36s | Max: 15m 42s
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/3   | Total: 31m 48s | Avg: 10m 36s | Max: 15m 42s
🟩 cxx
  🟩 GCC13              Pass: 100%/3   | Total: 31m 48s | Avg: 10m 36s | Max: 15m 42s
🟩 cxx_family
  🟩 GCC                Pass: 100%/3   | Total: 31m 48s | Avg: 10m 36s | Max: 15m 42s
🟩 gpu
  🟩 rtx2080            Pass: 100%/3   | Total: 31m 48s | Avg: 10m 36s | Max: 15m 42s
🟩 jobs
  🟩 cuda.cccl          Pass: 100%/1   | Total:  7m 20s | Avg:  7m 20s | Max:  7m 20s
  🟩 cuda.cooperative   Pass: 100%/1   | Total: 15m 42s | Avg: 15m 42s | Max: 15m 42s
  🟩 cuda.parallel      Pass: 100%/1   | Total:  8m 46s | Avg:  8m 46s | Max:  8m 46s
```

</details>

<li>
<details><summary><h3>🟩 cccl_c_parallel: Pass: 100%/2   | Total: 15m 11s | Avg:  7m 35s | Max: 12m 09s | Hits:  93%/326   </h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/2   | Total: 15m 11s | Avg:  7m 35s | Max: 12m 09s | Hits:  93%/326   
🟩 ctk
  🟩 12.8               Pass: 100%/2   | Total: 15m 11s | Avg:  7m 35s | Max: 12m 09s | Hits:  93%/326   
🟩 cudacxx
  🟩 nvcc12.8           Pass: 100%/2   | Total: 15m 11s | Avg:  7m 35s | Max: 12m 09s | Hits:  93%/326   
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/2   | Total: 15m 11s | Avg:  7m 35s | Max: 12m 09s | Hits:  93%/326   
🟩 cxx
  🟩 GCC13              Pass: 100%/2   | Total: 15m 11s | Avg:  7m 35s | Max: 12m 09s | Hits:  93%/326   
🟩 cxx_family
  🟩 GCC                Pass: 100%/2   | Total: 15m 11s | Avg:  7m 35s | Max: 12m 09s | Hits:  93%/326   
🟩 gpu
  🟩 rtx2080            Pass: 100%/2   | Total: 15m 11s | Avg:  7m 35s | Max: 12m 09s | Hits:  93%/326   
🟩 jobs
  🟩 Build              Pass: 100%/1   | Total:  3m 02s | Avg:  3m 02s | Max:  3m 02s | Hits:  88%/163   
  🟩 Test               Pass: 100%/1   | Total: 12m 09s | Avg: 12m 09s | Max: 12m 09s | Hits:  98%/163   
```

</details>

</ul>

<details><summary><h3>👃 Inspect Changes</h3></summary>

### Modifications in project?

|     | Project
|-----|---------
|     | CCCL Infrastructure
| +/- | libcu++
|     | CUB
|     | Thrust
|     | CUDA Experimental
|     | stdpar
|     | python
|     | CCCL C Parallel Library
|     | Catch2Helper

### Modifications in project or dependencies?

|     | Project
|-----|---------
|     | CCCL Infrastructure
| +/- | libcu++
| +/- | CUB
| +/- | Thrust
| +/- | CUDA Experimental
| +/- | stdpar
| +/- | python
| +/- | CCCL C Parallel Library
| +/- | Catch2Helper
</details>


<details><summary><h2>🏃‍ Runner counts (total jobs: 174)</h2></summary>

|  #   | Runner
|------|------
|  123 | `linux-amd64-cpu16`
|   15 | `windows-amd64-cpu16`
|   12 | `linux-arm64-cpu16`
|   10 | `linux-amd64-gpu-rtx2080-latest-1`
|    6 | `linux-amd64-gpu-rtxa6000-latest-1`
|    5 | `linux-amd64-gpu-h100-latest-1`
|    3 | `linux-amd64-gpu-rtx4090-latest-1`


</details>

</details>

author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-05-13T15:54:08Z
body: <details><summary>🟨 CI finished in 1h 36m: Pass:  99%/174 | Total:  1d 09h | Avg: 11m 35s | Max:  1h 04m | Hits:  88%/281977</summary>

<ul>
<li>
<details><summary><h3>🟨 cub: Pass:  97%/47  | Total:  9h 15m | Avg: 11m 49s | Max: 28m 16s | Hits:  99%/55746 </h3></summary>

```
🔍 cpu: amd64 🔍
  🔍 amd64              Pass:  97%/45  | Total:  9h 01m | Avg: 12m 02s | Max: 28m 16s | Hits:  99%/53268 
  🟩 arm64              Pass: 100%/2   | Total: 14m 01s | Avg:  7m 00s | Max:  7m 58s | Hits:  99%/2478  
🔍 ctk: 12.8 🔍
  🟩 12.0               Pass: 100%/5   | Total: 54m 29s | Avg: 10m 53s | Max: 25m 40s | Hits:  98%/6021  
  🔍 12.8               Pass:  97%/42  | Total:  8h 21m | Avg: 11m 56s | Max: 28m 16s | Hits:  99%/49725 
🔍 cudacxx: nvcc12.8 🔍
  🟩 ClangCUDA19        Pass: 100%/2   | Total: 10m 54s | Avg:  5m 27s | Max:  5m 40s | Hits: 100%/2134  
  🟩 nvcc12.0           Pass: 100%/5   | Total: 54m 29s | Avg: 10m 53s | Max: 25m 40s | Hits:  98%/6021  
  🔍 nvcc12.8           Pass:  97%/40  | Total:  8h 10m | Avg: 12m 15s | Max: 28m 16s | Hits:  99%/47591 
🔍 cudacxx_family: nvcc 🔍
  🟩 ClangCUDA          Pass: 100%/2   | Total: 10m 54s | Avg:  5m 27s | Max:  5m 40s | Hits: 100%/2134  
  🔍 nvcc               Pass:  97%/45  | Total:  9h 05m | Avg: 12m 06s | Max: 28m 16s | Hits:  99%/53612 
🔍 cxx: GCC13 🔍
  🟩 Clang14            Pass: 100%/4   | Total: 26m 35s | Avg:  6m 38s | Max:  6m 57s | Hits: 100%/4964  
  🟩 Clang15            Pass: 100%/2   | Total: 14m 15s | Avg:  7m 07s | Max:  7m 11s | Hits: 100%/2478  
  🟩 Clang16            Pass: 100%/2   | Total: 14m 07s | Avg:  7m 03s | Max:  7m 09s | Hits: 100%/2478  
  🟩 Clang17            Pass: 100%/2   | Total: 13m 41s | Avg:  6m 50s | Max:  6m 54s | Hits: 100%/2478  
  🟩 Clang18            Pass: 100%/2   | Total: 13m 11s | Avg:  6m 35s | Max:  6m 39s | Hits: 100%/2478  
  🟩 Clang19            Pass: 100%/7   | Total:  1h 15m | Avg: 10m 44s | Max: 25m 11s | Hits:  99%/8329  
  🟩 GCC7               Pass: 100%/2   | Total: 16m 21s | Avg:  8m 10s | Max:  8m 29s | Hits:  99%/2482  
  🟩 GCC8               Pass: 100%/1   | Total:  8m 13s | Avg:  8m 13s | Max:  8m 13s | Hits:  99%/1241  
  🟩 GCC9               Pass: 100%/2   | Total: 16m 41s | Avg:  8m 20s | Max:  8m 34s | Hits:  99%/2482  
  🟩 GCC10              Pass: 100%/2   | Total: 17m 44s | Avg:  8m 52s | Max:  9m 22s | Hits:  99%/2482  
  🟩 GCC11              Pass: 100%/2   | Total: 17m 34s | Avg:  8m 47s | Max:  8m 51s | Hits:  99%/2478  
  🟩 GCC12              Pass: 100%/2   | Total: 17m 59s | Avg:  8m 59s | Max:  9m 31s | Hits:  99%/2478  
  🔍 GCC13              Pass:  90%/11  | Total:  2h 47m | Avg: 15m 11s | Max: 27m 15s | Hits:  99%/12390 
  🟩 MSVC14.29          Pass: 100%/2   | Total: 53m 53s | Avg: 26m 56s | Max: 28m 13s | Hits:  95%/2114  
  🟩 MSVC14.42          Pass: 100%/2   | Total: 56m 18s | Avg: 28m 09s | Max: 28m 16s | Hits:  99%/2114  
  🟩 NVHPC25.3          Pass: 100%/2   | Total: 27m 15s | Avg: 13m 37s | Max: 13m 44s | Hits:  98%/2280  
🔍 cxx_family: GCC 🔍
  🟩 Clang              Pass: 100%/19  | Total:  2h 36m | Avg:  8m 15s | Max: 25m 11s | Hits:  99%/23205 
  🔍 GCC                Pass:  95%/22  | Total:  4h 21m | Avg: 11m 53s | Max: 27m 15s | Hits:  99%/26033 
  🟩 MSVC               Pass: 100%/4   | Total:  1h 50m | Avg: 27m 32s | Max: 28m 16s | Hits:  97%/4228  
  🟩 NVHPC              Pass: 100%/2   | Total: 27m 15s | Avg: 13m 37s | Max: 13m 44s | Hits:  98%/2280  
🔍 gpu: h100 🔍
  🔍 h100               Pass:  66%/3   | Total: 33m 56s | Avg: 11m 18s | Max: 27m 15s | Hits:  99%/2478  
  🟩 rtx2080            Pass: 100%/36  | Total:  6h 03m | Avg: 10m 06s | Max: 28m 16s | Hits:  99%/43356 
  🟩 rtxa6000           Pass: 100%/8   | Total:  2h 38m | Avg: 19m 48s | Max: 26m 34s | Hits:  99%/9912  
🔍 jobs: TestGPU 🔍
  🟩 Build              Pass: 100%/39  | Total:  6h 27m | Avg:  9m 55s | Max: 28m 16s | Hits:  99%/47073 
  🟩 DeviceLaunch       Pass: 100%/1   | Total: 25m 49s | Avg: 25m 49s | Max: 25m 49s | Hits:  99%/1239  
  🟩 GraphCapture       Pass: 100%/1   | Total: 21m 17s | Avg: 21m 17s | Max: 21m 17s | Hits:  99%/1239  
  🟩 HostLaunch         Pass: 100%/3   | Total:  1h 19m | Avg: 26m 20s | Max: 27m 15s | Hits:  99%/3717  
  🔍 TestGPU            Pass:  66%/3   | Total: 42m 47s | Avg: 14m 15s | Max: 23m 26s | Hits:  99%/2478  
🔍 sm: 90 🔍
  🔍 90                 Pass:  66%/3   | Total: 33m 56s | Avg: 11m 18s | Max: 27m 15s | Hits:  99%/2478  
  🟩 90;90a;100         Pass: 100%/1   | Total:  9m 04s | Avg:  9m 04s | Max:  9m 04s | Hits:  99%/1239  
🔍 std: 20 🔍
  🟩 17                 Pass: 100%/21  | Total:  3h 46m | Avg: 10m 46s | Max: 28m 16s | Hits:  99%/25218 
  🔍 20                 Pass:  96%/26  | Total:  5h 29m | Avg: 12m 40s | Max: 28m 02s | Hits:  99%/30528 
```

</details>

<li>
<details><summary><h3>🟩 thrust: Pass: 100%/47  | Total:  8h 16m | Avg: 10m 34s | Max: 33m 52s | Hits:  99%/84074 </h3></summary>

```
🟩 cmake_options
  🟩 -DTHRUST_DISPATCH_TYPE=Force32bit Pass: 100%/2   | Total: 21m 54s | Avg: 10m 57s | Max: 14m 21s | Hits:  99%/3580  
🟩 cpu
  🟩 amd64              Pass: 100%/45  | Total:  8h 04m | Avg: 10m 46s | Max: 33m 52s | Hits:  99%/80495 
  🟩 arm64              Pass: 100%/2   | Total: 11m 52s | Avg:  5m 56s | Max:  6m 40s | Hits:  99%/3579  
🟩 ctk
  🟩 12.0               Pass: 100%/5   | Total: 49m 53s | Avg:  9m 58s | Max: 25m 07s | Hits:  99%/8941  
  🟩 12.8               Pass: 100%/42  | Total:  7h 26m | Avg: 10m 38s | Max: 33m 52s | Hits:  99%/75133 
🟩 cudacxx
  🟩 ClangCUDA19        Pass: 100%/2   | Total: 11m 30s | Avg:  5m 45s | Max:  5m 50s | Hits: 100%/3578  
  🟩 nvcc12.0           Pass: 100%/5   | Total: 49m 53s | Avg:  9m 58s | Max: 25m 07s | Hits:  99%/8941  
  🟩 nvcc12.8           Pass: 100%/40  | Total:  7h 15m | Avg: 10m 52s | Max: 33m 52s | Hits:  99%/71555 
🟩 cudacxx_family
  🟩 ClangCUDA          Pass: 100%/2   | Total: 11m 30s | Avg:  5m 45s | Max:  5m 50s | Hits: 100%/3578  
  🟩 nvcc               Pass: 100%/45  | Total:  8h 05m | Avg: 10m 46s | Max: 33m 52s | Hits:  99%/80496 
🟩 cxx
  🟩 Clang14            Pass: 100%/4   | Total: 23m 08s | Avg:  5m 47s | Max:  6m 05s | Hits: 100%/7156  
  🟩 Clang15            Pass: 100%/2   | Total: 12m 15s | Avg:  6m 07s | Max:  6m 26s | Hits: 100%/3578  
  🟩 Clang16            Pass: 100%/2   | Total: 12m 09s | Avg:  6m 04s | Max:  6m 19s | Hits: 100%/3578  
  🟩 Clang17            Pass: 100%/2   | Total: 12m 08s | Avg:  6m 04s | Max:  6m 23s | Hits: 100%/3578  
  🟩 Clang18            Pass: 100%/2   | Total: 11m 41s | Avg:  5m 50s | Max:  5m 57s | Hits: 100%/3578  
  🟩 Clang19            Pass: 100%/7   | Total: 47m 42s | Avg:  6m 48s | Max: 10m 52s | Hits: 100%/12523 
  🟩 GCC7               Pass: 100%/2   | Total: 13m 29s | Avg:  6m 44s | Max:  7m 19s | Hits:  99%/3580  
  🟩 GCC8               Pass: 100%/1   | Total:  7m 13s | Avg:  7m 13s | Max:  7m 13s | Hits:  99%/1790  
  🟩 GCC9               Pass: 100%/2   | Total: 14m 42s | Avg:  7m 21s | Max:  7m 33s | Hits:  99%/3580  
  🟩 GCC10              Pass: 100%/2   | Total: 14m 27s | Avg:  7m 13s | Max:  7m 26s | Hits:  99%/3580  
  🟩 GCC11              Pass: 100%/2   | Total: 15m 13s | Avg:  7m 36s | Max:  7m 55s | Hits:  99%/3580  
  🟩 GCC12              Pass: 100%/2   | Total: 14m 59s | Avg:  7m 29s | Max:  7m 32s | Hits:  99%/3580  
  🟩 GCC13              Pass: 100%/10  | Total:  1h 33m | Avg:  9m 19s | Max: 14m 21s | Hits:  99%/17900 
  🟩 MSVC14.29          Pass: 100%/2   | Total: 51m 50s | Avg: 25m 55s | Max: 26m 43s | Hits:  99%/3566  
  🟩 MSVC14.42          Pass: 100%/3   | Total:  1h 28m | Avg: 29m 37s | Max: 33m 52s | Hits:  99%/5349  
  🟩 NVHPC25.3          Pass: 100%/2   | Total:  1h 03m | Avg: 31m 47s | Max: 33m 01s | Hits:  99%/3578  
🟩 cxx_family
  🟩 Clang              Pass: 100%/19  | Total:  1h 59m | Avg:  6m 15s | Max: 10m 52s | Hits: 100%/33991 
  🟩 GCC                Pass: 100%/21  | Total:  2h 53m | Avg:  8m 15s | Max: 14m 21s | Hits:  99%/37590 
  🟩 MSVC               Pass: 100%/5   | Total:  2h 20m | Avg: 28m 08s | Max: 33m 52s | Hits:  99%/8915  
  🟩 NVHPC              Pass: 100%/2   | Total:  1h 03m | Avg: 31m 47s | Max: 33m 01s | Hits:  99%/3578  
🟩 gpu
  🟩 h100               Pass: 100%/2   | Total: 17m 49s | Avg:  8m 54s | Max: 12m 14s | Hits:  99%/3580  
  🟩 rtx2080            Pass: 100%/35  | Total:  5h 39m | Avg:  9m 42s | Max: 33m 01s | Hits:  99%/62611 
  🟩 rtx4090            Pass: 100%/10  | Total:  2h 19m | Avg: 13m 54s | Max: 33m 52s | Hits:  99%/17883 
🟩 jobs
  🟩 Build              Pass: 100%/40  | Total:  6h 34m | Avg:  9m 51s | Max: 33m 01s | Hits:  99%/71553 
  🟩 TestCPU            Pass: 100%/3   | Total: 51m 54s | Avg: 17m 18s | Max: 33m 52s | Hits:  99%/5362  
  🟩 TestGPU            Pass: 100%/4   | Total: 50m 40s | Avg: 12m 40s | Max: 14m 21s | Hits:  99%/7159  
🟩 sm
  🟩 90                 Pass: 100%/2   | Total: 17m 49s | Avg:  8m 54s | Max: 12m 14s | Hits:  99%/3580  
  🟩 90;90a;100         Pass: 100%/1   | Total:  7m 49s | Avg:  7m 49s | Max:  7m 49s | Hits:  99%/1790  
🟩 std
  🟩 17                 Pass: 100%/21  | Total:  3h 43m | Avg: 10m 37s | Max: 30m 34s | Hits:  99%/37560 
  🟩 20                 Pass: 100%/24  | Total:  4h 11m | Avg: 10m 28s | Max: 33m 52s | Hits:  99%/42934 
```

</details>

<li>
<details><summary><h3>🟩 libcudacxx: Pass: 100%/45  | Total: 12h 41m | Avg: 16m 55s | Max:  1h 04m | Hits:  74%/127189</h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/43  | Total: 12h 31m | Avg: 17m 28s | Max:  1h 04m | Hits:  73%/120600
  🟩 arm64              Pass: 100%/2   | Total: 10m 05s | Avg:  5m 02s | Max:  5m 46s | Hits:  96%/6589  
🟩 ctk
  🟩 12.0               Pass: 100%/5   | Total:  1h 08m | Avg: 13m 37s | Max: 28m 39s | Hits:  84%/16101 
  🟩 12.8               Pass: 100%/40  | Total: 11h 33m | Avg: 17m 19s | Max:  1h 04m | Hits:  72%/111088
🟩 cudacxx
  🟩 ClangCUDA19        Pass: 100%/2   | Total: 49m 06s | Avg: 24m 33s | Max: 26m 11s | Hits:  26%/6551  
  🟩 nvcc12.0           Pass: 100%/5   | Total:  1h 08m | Avg: 13m 37s | Max: 28m 39s | Hits:  84%/16101 
  🟩 nvcc12.8           Pass: 100%/38  | Total: 10h 44m | Avg: 16m 57s | Max:  1h 04m | Hits:  75%/104537
🟩 cudacxx_family
  🟩 ClangCUDA          Pass: 100%/2   | Total: 49m 06s | Avg: 24m 33s | Max: 26m 11s | Hits:  26%/6551  
  🟩 nvcc               Pass: 100%/43  | Total: 11h 52m | Avg: 16m 33s | Max:  1h 04m | Hits:  76%/120638
🟩 cxx
  🟩 Clang14            Pass: 100%/4   | Total:  1h 26m | Avg: 21m 35s | Max: 28m 14s | Hits:  49%/13058 
  🟩 Clang15            Pass: 100%/2   | Total: 36m 36s | Avg: 18m 18s | Max: 31m 00s | Hits:  64%/6547  
  🟩 Clang16            Pass: 100%/2   | Total: 59m 20s | Avg: 29m 40s | Max: 29m 47s | Hits:  30%/6547  
  🟩 Clang17            Pass: 100%/2   | Total: 58m 06s | Avg: 29m 03s | Max: 29m 46s | Hits:  30%/6547  
  🟩 Clang18            Pass: 100%/2   | Total:  9m 40s | Avg:  4m 50s | Max:  4m 53s | Hits:  99%/6547  
  🟩 Clang19            Pass: 100%/6   | Total:  2h 34m | Avg: 25m 49s | Max:  1h 04m | Hits:  55%/16392 
  🟩 GCC7               Pass: 100%/2   | Total: 11m 38s | Avg:  5m 49s | Max:  6m 27s | Hits:  94%/6481  
  🟩 GCC8               Pass: 100%/1   | Total:  4m 40s | Avg:  4m 40s | Max:  4m 40s | Hits:  99%/3251  
  🟩 GCC9               Pass: 100%/2   | Total: 21m 17s | Avg: 10m 38s | Max: 17m 10s | Hits:  80%/6493  
  🟩 GCC10              Pass: 100%/2   | Total: 11m 05s | Avg:  5m 32s | Max:  6m 05s | Hits:  96%/6549  
  🟩 GCC11              Pass: 100%/2   | Total: 49m 15s | Avg: 24m 37s | Max: 30m 59s | Hits:  51%/6545  
  🟩 GCC12              Pass: 100%/2   | Total: 11m 27s | Avg:  5m 43s | Max:  6m 46s | Hits:  96%/6549  
  🟩 GCC13              Pass: 100%/10  | Total:  1h 37m | Avg:  9m 42s | Max: 20m 42s | Hits:  95%/16638 
  🟩 MSVC14.29          Pass: 100%/2   | Total: 55m 26s | Avg: 27m 43s | Max: 28m 39s | Hits:  96%/6225  
  🟩 MSVC14.42          Pass: 100%/2   | Total: 59m 41s | Avg: 29m 50s | Max: 32m 31s | Hits:  94%/6283  
  🟩 NVHPC25.3          Pass: 100%/2   | Total: 34m 45s | Avg: 17m 22s | Max: 22m 58s | Hits:  89%/6537  
🟩 cxx_family
  🟩 Clang              Pass: 100%/18  | Total:  6h 45m | Avg: 22m 30s | Max:  1h 04m | Hits:  54%/55638 
  🟩 GCC                Pass: 100%/21  | Total:  3h 26m | Avg:  9m 49s | Max: 30m 59s | Hits:  88%/52506 
  🟩 MSVC               Pass: 100%/4   | Total:  1h 55m | Avg: 28m 46s | Max: 32m 31s | Hits:  95%/12508 
  🟩 NVHPC              Pass: 100%/2   | Total: 34m 45s | Avg: 17m 22s | Max: 22m 58s | Hits:  89%/6537  
🟩 gpu
  🟩 h100               Pass: 100%/2   | Total: 19m 47s | Avg:  9m 53s | Max: 14m 47s | Hits:  99%/3377  
  🟩 rtx2080            Pass: 100%/43  | Total: 12h 21m | Avg: 17m 14s | Max:  1h 04m | Hits:  73%/123812
🟩 jobs
  🟩 Build              Pass: 100%/39  | Total: 10h 30m | Avg: 16m 10s | Max: 32m 31s | Hits:  74%/127149
  🟩 NVRTC              Pass: 100%/2   | Total: 38m 26s | Avg: 19m 13s | Max: 20m 42s | Hits:  90%/40    
  🟩 Test               Pass: 100%/3   | Total:  1h 29m | Avg: 29m 51s | Max:  1h 04m
  🟩 VerifyCodegen      Pass: 100%/1   | Total:  2m 19s | Avg:  2m 19s | Max:  2m 19s
🟩 sm
  🟩 75                 Pass: 100%/2   | Total: 38m 26s | Avg: 19m 13s | Max: 20m 42s | Hits:  90%/40    
  🟩 90                 Pass: 100%/2   | Total: 19m 47s | Avg:  9m 53s | Max: 14m 47s | Hits:  99%/3377  
  🟩 90;90a;100         Pass: 100%/1   | Total:  6m 54s | Avg:  6m 54s | Max:  6m 54s | Hits:  94%/3377  
🟩 std
  🟩 17                 Pass: 100%/22  | Total:  5h 39m | Avg: 15m 25s | Max: 29m 33s | Hits:  78%/67861 
  🟩 20                 Pass: 100%/22  | Total:  6h 59m | Avg: 19m 04s | Max:  1h 04m | Hits:  69%/59328 
```

</details>

<li>
<details><summary><h3>🟩 cudax: Pass: 100%/26  | Total:  2h 17m | Avg:  5m 16s | Max: 12m 30s | Hits:  99%/14642 </h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/22  | Total:  2h 03m | Avg:  5m 38s | Max: 12m 30s | Hits:  99%/12298 
  🟩 arm64              Pass: 100%/4   | Total: 13m 07s | Avg:  3m 16s | Max:  3m 30s | Hits:  99%/2344  
🟩 ctk
  🟩 12.0               Pass: 100%/3   | Total: 17m 35s | Avg:  5m 51s | Max: 11m 04s | Hits:  98%/1463  
  🟩 12.8               Pass: 100%/23  | Total:  1h 59m | Avg:  5m 11s | Max: 12m 30s | Hits:  99%/13179 
🟩 cudacxx
  🟩 nvcc12.0           Pass: 100%/3   | Total: 17m 35s | Avg:  5m 51s | Max: 11m 04s | Hits:  98%/1463  
  🟩 nvcc12.8           Pass: 100%/23  | Total:  1h 59m | Avg:  5m 11s | Max: 12m 30s | Hits:  99%/13179 
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/26  | Total:  2h 17m | Avg:  5m 16s | Max: 12m 30s | Hits:  99%/14642 
🟩 cxx
  🟩 Clang14            Pass: 100%/2   | Total:  6m 41s | Avg:  3m 20s | Max:  3m 40s | Hits: 100%/1176  
  🟩 Clang15            Pass: 100%/1   | Total:  3m 31s | Avg:  3m 31s | Max:  3m 31s | Hits: 100%/586   
  🟩 Clang16            Pass: 100%/1   | Total:  3m 29s | Avg:  3m 29s | Max:  3m 29s | Hits: 100%/586   
  🟩 Clang17            Pass: 100%/1   | Total:  3m 35s | Avg:  3m 35s | Max:  3m 35s | Hits: 100%/586   
  🟩 Clang18            Pass: 100%/1   | Total:  3m 45s | Avg:  3m 45s | Max:  3m 45s | Hits: 100%/586   
  🟩 Clang19            Pass: 100%/4   | Total: 18m 37s | Avg:  4m 39s | Max:  8m 54s | Hits: 100%/2344  
  🟩 GCC10              Pass: 100%/2   | Total:  7m 19s | Avg:  3m 39s | Max:  3m 49s | Hits:  99%/1176  
  🟩 GCC11              Pass: 100%/1   | Total:  3m 57s | Avg:  3m 57s | Max:  3m 57s | Hits:  99%/586   
  🟩 GCC12              Pass: 100%/1   | Total:  3m 58s | Avg:  3m 58s | Max:  3m 58s | Hits:  99%/586   
  🟩 GCC13              Pass: 100%/8   | Total: 41m 31s | Avg:  5m 11s | Max: 10m 40s | Hits:  99%/4688  
  🟩 MSVC14.39          Pass: 100%/1   | Total: 11m 04s | Avg: 11m 04s | Max: 11m 04s | Hits:  95%/287   
  🟩 MSVC14.42          Pass: 100%/1   | Total: 12m 30s | Avg: 12m 30s | Max: 12m 30s | Hits:  95%/287   
  🟩 NVHPC25.3          Pass: 100%/2   | Total: 17m 09s | Avg:  8m 34s | Max:  8m 35s | Hits:  97%/1168  
🟩 cxx_family
  🟩 Clang              Pass: 100%/10  | Total: 39m 38s | Avg:  3m 57s | Max:  8m 54s | Hits: 100%/5864  
  🟩 GCC                Pass: 100%/12  | Total: 56m 45s | Avg:  4m 43s | Max: 10m 40s | Hits:  99%/7036  
  🟩 MSVC               Pass: 100%/2   | Total: 23m 34s | Avg: 11m 47s | Max: 12m 30s | Hits:  95%/574   
  🟩 NVHPC              Pass: 100%/2   | Total: 17m 09s | Avg:  8m 34s | Max:  8m 35s | Hits:  97%/1168  
🟩 gpu
  🟩 h100               Pass: 100%/2   | Total: 12m 35s | Avg:  6m 17s | Max:  9m 01s | Hits:  99%/1172  
  🟩 rtx2080            Pass: 100%/24  | Total:  2h 04m | Avg:  5m 11s | Max: 12m 30s | Hits:  99%/13470 
🟩 jobs
  🟩 Build              Pass: 100%/23  | Total:  1h 48m | Avg:  4m 43s | Max: 12m 30s | Hits:  99%/12884 
  🟩 Test               Pass: 100%/3   | Total: 28m 35s | Avg:  9m 31s | Max: 10m 40s | Hits:  99%/1758  
🟩 sm
  🟩 90                 Pass: 100%/3   | Total: 15m 58s | Avg:  5m 19s | Max:  9m 01s | Hits:  99%/1758  
  🟩 90a                Pass: 100%/1   | Total:  3m 32s | Avg:  3m 32s | Max:  3m 32s | Hits:  99%/586   
🟩 std
  🟩 17                 Pass: 100%/4   | Total: 18m 31s | Avg:  4m 37s | Max:  8m 34s | Hits:  99%/2342  
  🟩 20                 Pass: 100%/22  | Total:  1h 58m | Avg:  5m 23s | Max: 12m 30s | Hits:  99%/12300 
```

</details>

<li>
<details><summary><h3>🟩 stdpar: Pass: 100%/4   | Total: 18m 38s | Avg:  4m 39s | Max:  5m 38s</h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/2   | Total: 10m 58s | Avg:  5m 29s | Max:  5m 38s
  🟩 arm64              Pass: 100%/2   | Total:  7m 40s | Avg:  3m 50s | Max:  3m 52s
🟩 ctk
  🟩 12.8               Pass: 100%/4   | Total: 18m 38s | Avg:  4m 39s | Max:  5m 38s
🟩 cudacxx
  🟩 nvcc12.8           Pass: 100%/4   | Total: 18m 38s | Avg:  4m 39s | Max:  5m 38s
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/4   | Total: 18m 38s | Avg:  4m 39s | Max:  5m 38s
🟩 cxx
  🟩 NVHPC25.3          Pass: 100%/4   | Total: 18m 38s | Avg:  4m 39s | Max:  5m 38s
🟩 cxx_family
  🟩 NVHPC              Pass: 100%/4   | Total: 18m 38s | Avg:  4m 39s | Max:  5m 38s
🟩 gpu
  🟩 rtx2080            Pass: 100%/4   | Total: 18m 38s | Avg:  4m 39s | Max:  5m 38s
🟩 jobs
  🟩 Build              Pass: 100%/4   | Total: 18m 38s | Avg:  4m 39s | Max:  5m 38s
🟩 std
  🟩 17                 Pass: 100%/2   | Total:  9m 30s | Avg:  4m 45s | Max:  5m 38s
  🟩 20                 Pass: 100%/2   | Total:  9m 08s | Avg:  4m 34s | Max:  5m 20s
```

</details>

<li>
<details><summary><h3>🟩 python: Pass: 100%/3   | Total: 32m 31s | Avg: 10m 50s | Max: 18m 51s</h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/3   | Total: 32m 31s | Avg: 10m 50s | Max: 18m 51s
🟩 ctk
  🟩 12.8               Pass: 100%/3   | Total: 32m 31s | Avg: 10m 50s | Max: 18m 51s
🟩 cudacxx
  🟩 nvcc12.8           Pass: 100%/3   | Total: 32m 31s | Avg: 10m 50s | Max: 18m 51s
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/3   | Total: 32m 31s | Avg: 10m 50s | Max: 18m 51s
🟩 cxx
  🟩 GCC13              Pass: 100%/3   | Total: 32m 31s | Avg: 10m 50s | Max: 18m 51s
🟩 cxx_family
  🟩 GCC                Pass: 100%/3   | Total: 32m 31s | Avg: 10m 50s | Max: 18m 51s
🟩 gpu
  🟩 rtx2080            Pass: 100%/3   | Total: 32m 31s | Avg: 10m 50s | Max: 18m 51s
🟩 jobs
  🟩 cuda.cccl          Pass: 100%/1   | Total:  5m 57s | Avg:  5m 57s | Max:  5m 57s
  🟩 cuda.cooperative   Pass: 100%/1   | Total: 18m 51s | Avg: 18m 51s | Max: 18m 51s
  🟩 cuda.parallel      Pass: 100%/1   | Total:  7m 43s | Avg:  7m 43s | Max:  7m 43s
```

</details>

<li>
<details><summary><h3>🟩 cccl_c_parallel: Pass: 100%/2   | Total: 16m 05s | Avg:  8m 02s | Max: 13m 45s | Hits:  98%/326   </h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/2   | Total: 16m 05s | Avg:  8m 02s | Max: 13m 45s | Hits:  98%/326   
🟩 ctk
  🟩 12.8               Pass: 100%/2   | Total: 16m 05s | Avg:  8m 02s | Max: 13m 45s | Hits:  98%/326   
🟩 cudacxx
  🟩 nvcc12.8           Pass: 100%/2   | Total: 16m 05s | Avg:  8m 02s | Max: 13m 45s | Hits:  98%/326   
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/2   | Total: 16m 05s | Avg:  8m 02s | Max: 13m 45s | Hits:  98%/326   
🟩 cxx
  🟩 GCC13              Pass: 100%/2   | Total: 16m 05s | Avg:  8m 02s | Max: 13m 45s | Hits:  98%/326   
🟩 cxx_family
  🟩 GCC                Pass: 100%/2   | Total: 16m 05s | Avg:  8m 02s | Max: 13m 45s | Hits:  98%/326   
🟩 gpu
  🟩 rtx2080            Pass: 100%/2   | Total: 16m 05s | Avg:  8m 02s | Max: 13m 45s | Hits:  98%/326   
🟩 jobs
  🟩 Build              Pass: 100%/1   | Total:  2m 20s | Avg:  2m 20s | Max:  2m 20s | Hits:  98%/163   
  🟩 Test               Pass: 100%/1   | Total: 13m 45s | Avg: 13m 45s | Max: 13m 45s | Hits:  98%/163   
```

</details>

</ul>

<details><summary><h3>👃 Inspect Changes</h3></summary>

### Modifications in project?

|     | Project
|-----|---------
|     | CCCL Infrastructure
| +/- | libcu++
|     | CUB
|     | Thrust
|     | CUDA Experimental
|     | stdpar
|     | python
|     | CCCL C Parallel Library
|     | Catch2Helper

### Modifications in project or dependencies?

|     | Project
|-----|---------
|     | CCCL Infrastructure
| +/- | libcu++
| +/- | CUB
| +/- | Thrust
| +/- | CUDA Experimental
| +/- | stdpar
| +/- | python
| +/- | CCCL C Parallel Library
| +/- | Catch2Helper
</details>


<details><summary><h2>🏃‍ Runner counts (total jobs: 174)</h2></summary>

|  #   | Runner
|------|------
|  123 | `linux-amd64-cpu16`
|   15 | `windows-amd64-cpu16`
|   12 | `linux-arm64-cpu16`
|   10 | `linux-amd64-gpu-rtx2080-latest-1`
|    6 | `linux-amd64-gpu-rtxa6000-latest-1`
|    5 | `linux-amd64-gpu-h100-latest-1`
|    3 | `linux-amd64-gpu-rtx4090-latest-1`


</details>

</details>

author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-05-13T16:42:01Z
body: <details><summary>🟩 CI finished in 2h 23m: Pass: 100%/174 | Total:  1d 10h | Avg: 11m 43s | Max:  1h 04m | Hits:  88%/283216</summary>

<ul>
<li>
<details><summary><h3>🟩 cub: Pass: 100%/47  | Total:  9h 39m | Avg: 12m 19s | Max: 28m 16s | Hits:  99%/56985 </h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/45  | Total:  9h 25m | Avg: 12m 33s | Max: 28m 16s | Hits:  99%/54507 
  🟩 arm64              Pass: 100%/2   | Total: 14m 01s | Avg:  7m 00s | Max:  7m 58s | Hits:  99%/2478  
🟩 ctk
  🟩 12.0               Pass: 100%/5   | Total: 54m 29s | Avg: 10m 53s | Max: 25m 40s | Hits:  98%/6021  
  🟩 12.8               Pass: 100%/42  | Total:  8h 44m | Avg: 12m 29s | Max: 28m 16s | Hits:  99%/50964 
🟩 cudacxx
  🟩 ClangCUDA19        Pass: 100%/2   | Total: 10m 54s | Avg:  5m 27s | Max:  5m 40s | Hits: 100%/2134  
  🟩 nvcc12.0           Pass: 100%/5   | Total: 54m 29s | Avg: 10m 53s | Max: 25m 40s | Hits:  98%/6021  
  🟩 nvcc12.8           Pass: 100%/40  | Total:  8h 33m | Avg: 12m 50s | Max: 28m 16s | Hits:  99%/48830 
🟩 cudacxx_family
  🟩 ClangCUDA          Pass: 100%/2   | Total: 10m 54s | Avg:  5m 27s | Max:  5m 40s | Hits: 100%/2134  
  🟩 nvcc               Pass: 100%/45  | Total:  9h 28m | Avg: 12m 37s | Max: 28m 16s | Hits:  99%/54851 
🟩 cxx
  🟩 Clang14            Pass: 100%/4   | Total: 26m 35s | Avg:  6m 38s | Max:  6m 57s | Hits: 100%/4964  
  🟩 Clang15            Pass: 100%/2   | Total: 14m 15s | Avg:  7m 07s | Max:  7m 11s | Hits: 100%/2478  
  🟩 Clang16            Pass: 100%/2   | Total: 14m 07s | Avg:  7m 03s | Max:  7m 09s | Hits: 100%/2478  
  🟩 Clang17            Pass: 100%/2   | Total: 13m 41s | Avg:  6m 50s | Max:  6m 54s | Hits: 100%/2478  
  🟩 Clang18            Pass: 100%/2   | Total: 13m 11s | Avg:  6m 35s | Max:  6m 39s | Hits: 100%/2478  
  🟩 Clang19            Pass: 100%/7   | Total:  1h 15m | Avg: 10m 44s | Max: 25m 11s | Hits:  99%/8329  
  🟩 GCC7               Pass: 100%/2   | Total: 16m 21s | Avg:  8m 10s | Max:  8m 29s | Hits:  99%/2482  
  🟩 GCC8               Pass: 100%/1   | Total:  8m 13s | Avg:  8m 13s | Max:  8m 13s | Hits:  99%/1241  
  🟩 GCC9               Pass: 100%/2   | Total: 16m 41s | Avg:  8m 20s | Max:  8m 34s | Hits:  99%/2482  
  🟩 GCC10              Pass: 100%/2   | Total: 17m 44s | Avg:  8m 52s | Max:  9m 22s | Hits:  99%/2482  
  🟩 GCC11              Pass: 100%/2   | Total: 17m 34s | Avg:  8m 47s | Max:  8m 51s | Hits:  99%/2478  
  🟩 GCC12              Pass: 100%/2   | Total: 17m 59s | Avg:  8m 59s | Max:  9m 31s | Hits:  99%/2478  
  🟩 GCC13              Pass: 100%/11  | Total:  3h 10m | Avg: 17m 17s | Max: 27m 15s | Hits:  99%/13629 
  🟩 MSVC14.29          Pass: 100%/2   | Total: 53m 53s | Avg: 26m 56s | Max: 28m 13s | Hits:  95%/2114  
  🟩 MSVC14.42          Pass: 100%/2   | Total: 56m 18s | Avg: 28m 09s | Max: 28m 16s | Hits:  99%/2114  
  🟩 NVHPC25.3          Pass: 100%/2   | Total: 27m 15s | Avg: 13m 37s | Max: 13m 44s | Hits:  98%/2280  
🟩 cxx_family
  🟩 Clang              Pass: 100%/19  | Total:  2h 36m | Avg:  8m 15s | Max: 25m 11s | Hits:  99%/23205 
  🟩 GCC                Pass: 100%/22  | Total:  4h 44m | Avg: 12m 56s | Max: 27m 15s | Hits:  99%/27272 
  🟩 MSVC               Pass: 100%/4   | Total:  1h 50m | Avg: 27m 32s | Max: 28m 16s | Hits:  97%/4228  
  🟩 NVHPC              Pass: 100%/2   | Total: 27m 15s | Avg: 13m 37s | Max: 13m 44s | Hits:  98%/2280  
🟩 gpu
  🟩 h100               Pass: 100%/3   | Total: 57m 10s | Avg: 19m 03s | Max: 27m 15s | Hits:  99%/3717  
  🟩 rtx2080            Pass: 100%/36  | Total:  6h 03m | Avg: 10m 06s | Max: 28m 16s | Hits:  99%/43356 
  🟩 rtxa6000           Pass: 100%/8   | Total:  2h 38m | Avg: 19m 48s | Max: 26m 34s | Hits:  99%/9912  
🟩 jobs
  🟩 Build              Pass: 100%/39  | Total:  6h 27m | Avg:  9m 55s | Max: 28m 16s | Hits:  99%/47073 
  🟩 DeviceLaunch       Pass: 100%/1   | Total: 25m 49s | Avg: 25m 49s | Max: 25m 49s | Hits:  99%/1239  
  🟩 GraphCapture       Pass: 100%/1   | Total: 21m 17s | Avg: 21m 17s | Max: 21m 17s | Hits:  99%/1239  
  🟩 HostLaunch         Pass: 100%/3   | Total:  1h 19m | Avg: 26m 20s | Max: 27m 15s | Hits:  99%/3717  
  🟩 TestGPU            Pass: 100%/3   | Total:  1h 06m | Avg: 22m 00s | Max: 23m 39s | Hits:  99%/3717  
🟩 sm
  🟩 90                 Pass: 100%/3   | Total: 57m 10s | Avg: 19m 03s | Max: 27m 15s | Hits:  99%/3717  
  🟩 90;90a;100         Pass: 100%/1   | Total:  9m 04s | Avg:  9m 04s | Max:  9m 04s | Hits:  99%/1239  
🟩 std
  🟩 17                 Pass: 100%/21  | Total:  3h 46m | Avg: 10m 46s | Max: 28m 16s | Hits:  99%/25218 
  🟩 20                 Pass: 100%/26  | Total:  5h 52m | Avg: 13m 34s | Max: 28m 02s | Hits:  99%/31767 
```

</details>

<li>
<details><summary><h3>🟩 thrust: Pass: 100%/47  | Total:  8h 16m | Avg: 10m 34s | Max: 33m 52s | Hits:  99%/84074 </h3></summary>

```
🟩 cmake_options
  🟩 -DTHRUST_DISPATCH_TYPE=Force32bit Pass: 100%/2   | Total: 21m 54s | Avg: 10m 57s | Max: 14m 21s | Hits:  99%/3580  
🟩 cpu
  🟩 amd64              Pass: 100%/45  | Total:  8h 04m | Avg: 10m 46s | Max: 33m 52s | Hits:  99%/80495 
  🟩 arm64              Pass: 100%/2   | Total: 11m 52s | Avg:  5m 56s | Max:  6m 40s | Hits:  99%/3579  
🟩 ctk
  🟩 12.0               Pass: 100%/5   | Total: 49m 53s | Avg:  9m 58s | Max: 25m 07s | Hits:  99%/8941  
  🟩 12.8               Pass: 100%/42  | Total:  7h 26m | Avg: 10m 38s | Max: 33m 52s | Hits:  99%/75133 
🟩 cudacxx
  🟩 ClangCUDA19        Pass: 100%/2   | Total: 11m 30s | Avg:  5m 45s | Max:  5m 50s | Hits: 100%/3578  
  🟩 nvcc12.0           Pass: 100%/5   | Total: 49m 53s | Avg:  9m 58s | Max: 25m 07s | Hits:  99%/8941  
  🟩 nvcc12.8           Pass: 100%/40  | Total:  7h 15m | Avg: 10m 52s | Max: 33m 52s | Hits:  99%/71555 
🟩 cudacxx_family
  🟩 ClangCUDA          Pass: 100%/2   | Total: 11m 30s | Avg:  5m 45s | Max:  5m 50s | Hits: 100%/3578  
  🟩 nvcc               Pass: 100%/45  | Total:  8h 05m | Avg: 10m 46s | Max: 33m 52s | Hits:  99%/80496 
🟩 cxx
  🟩 Clang14            Pass: 100%/4   | Total: 23m 08s | Avg:  5m 47s | Max:  6m 05s | Hits: 100%/7156  
  🟩 Clang15            Pass: 100%/2   | Total: 12m 15s | Avg:  6m 07s | Max:  6m 26s | Hits: 100%/3578  
  🟩 Clang16            Pass: 100%/2   | Total: 12m 09s | Avg:  6m 04s | Max:  6m 19s | Hits: 100%/3578  
  🟩 Clang17            Pass: 100%/2   | Total: 12m 08s | Avg:  6m 04s | Max:  6m 23s | Hits: 100%/3578  
  🟩 Clang18            Pass: 100%/2   | Total: 11m 41s | Avg:  5m 50s | Max:  5m 57s | Hits: 100%/3578  
  🟩 Clang19            Pass: 100%/7   | Total: 47m 42s | Avg:  6m 48s | Max: 10m 52s | Hits: 100%/12523 
  🟩 GCC7               Pass: 100%/2   | Total: 13m 29s | Avg:  6m 44s | Max:  7m 19s | Hits:  99%/3580  
  🟩 GCC8               Pass: 100%/1   | Total:  7m 13s | Avg:  7m 13s | Max:  7m 13s | Hits:  99%/1790  
  🟩 GCC9               Pass: 100%/2   | Total: 14m 42s | Avg:  7m 21s | Max:  7m 33s | Hits:  99%/3580  
  🟩 GCC10              Pass: 100%/2   | Total: 14m 27s | Avg:  7m 13s | Max:  7m 26s | Hits:  99%/3580  
  🟩 GCC11              Pass: 100%/2   | Total: 15m 13s | Avg:  7m 36s | Max:  7m 55s | Hits:  99%/3580  
  🟩 GCC12              Pass: 100%/2   | Total: 14m 59s | Avg:  7m 29s | Max:  7m 32s | Hits:  99%/3580  
  🟩 GCC13              Pass: 100%/10  | Total:  1h 33m | Avg:  9m 19s | Max: 14m 21s | Hits:  99%/17900 
  🟩 MSVC14.29          Pass: 100%/2   | Total: 51m 50s | Avg: 25m 55s | Max: 26m 43s | Hits:  99%/3566  
  🟩 MSVC14.42          Pass: 100%/3   | Total:  1h 28m | Avg: 29m 37s | Max: 33m 52s | Hits:  99%/5349  
  🟩 NVHPC25.3          Pass: 100%/2   | Total:  1h 03m | Avg: 31m 47s | Max: 33m 01s | Hits:  99%/3578  
🟩 cxx_family
  🟩 Clang              Pass: 100%/19  | Total:  1h 59m | Avg:  6m 15s | Max: 10m 52s | Hits: 100%/33991 
  🟩 GCC                Pass: 100%/21  | Total:  2h 53m | Avg:  8m 15s | Max: 14m 21s | Hits:  99%/37590 
  🟩 MSVC               Pass: 100%/5   | Total:  2h 20m | Avg: 28m 08s | Max: 33m 52s | Hits:  99%/8915  
  🟩 NVHPC              Pass: 100%/2   | Total:  1h 03m | Avg: 31m 47s | Max: 33m 01s | Hits:  99%/3578  
🟩 gpu
  🟩 h100               Pass: 100%/2   | Total: 17m 49s | Avg:  8m 54s | Max: 12m 14s | Hits:  99%/3580  
  🟩 rtx2080            Pass: 100%/35  | Total:  5h 39m | Avg:  9m 42s | Max: 33m 01s | Hits:  99%/62611 
  🟩 rtx4090            Pass: 100%/10  | Total:  2h 19m | Avg: 13m 54s | Max: 33m 52s | Hits:  99%/17883 
🟩 jobs
  🟩 Build              Pass: 100%/40  | Total:  6h 34m | Avg:  9m 51s | Max: 33m 01s | Hits:  99%/71553 
  🟩 TestCPU            Pass: 100%/3   | Total: 51m 54s | Avg: 17m 18s | Max: 33m 52s | Hits:  99%/5362  
  🟩 TestGPU            Pass: 100%/4   | Total: 50m 40s | Avg: 12m 40s | Max: 14m 21s | Hits:  99%/7159  
🟩 sm
  🟩 90                 Pass: 100%/2   | Total: 17m 49s | Avg:  8m 54s | Max: 12m 14s | Hits:  99%/3580  
  🟩 90;90a;100         Pass: 100%/1   | Total:  7m 49s | Avg:  7m 49s | Max:  7m 49s | Hits:  99%/1790  
🟩 std
  🟩 17                 Pass: 100%/21  | Total:  3h 43m | Avg: 10m 37s | Max: 30m 34s | Hits:  99%/37560 
  🟩 20                 Pass: 100%/24  | Total:  4h 11m | Avg: 10m 28s | Max: 33m 52s | Hits:  99%/42934 
```

</details>

<li>
<details><summary><h3>🟩 libcudacxx: Pass: 100%/45  | Total: 12h 41m | Avg: 16m 55s | Max:  1h 04m | Hits:  74%/127189</h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/43  | Total: 12h 31m | Avg: 17m 28s | Max:  1h 04m | Hits:  73%/120600
  🟩 arm64              Pass: 100%/2   | Total: 10m 05s | Avg:  5m 02s | Max:  5m 46s | Hits:  96%/6589  
🟩 ctk
  🟩 12.0               Pass: 100%/5   | Total:  1h 08m | Avg: 13m 37s | Max: 28m 39s | Hits:  84%/16101 
  🟩 12.8               Pass: 100%/40  | Total: 11h 33m | Avg: 17m 19s | Max:  1h 04m | Hits:  72%/111088
🟩 cudacxx
  🟩 ClangCUDA19        Pass: 100%/2   | Total: 49m 06s | Avg: 24m 33s | Max: 26m 11s | Hits:  26%/6551  
  🟩 nvcc12.0           Pass: 100%/5   | Total:  1h 08m | Avg: 13m 37s | Max: 28m 39s | Hits:  84%/16101 
  🟩 nvcc12.8           Pass: 100%/38  | Total: 10h 44m | Avg: 16m 57s | Max:  1h 04m | Hits:  75%/104537
🟩 cudacxx_family
  🟩 ClangCUDA          Pass: 100%/2   | Total: 49m 06s | Avg: 24m 33s | Max: 26m 11s | Hits:  26%/6551  
  🟩 nvcc               Pass: 100%/43  | Total: 11h 52m | Avg: 16m 33s | Max:  1h 04m | Hits:  76%/120638
🟩 cxx
  🟩 Clang14            Pass: 100%/4   | Total:  1h 26m | Avg: 21m 35s | Max: 28m 14s | Hits:  49%/13058 
  🟩 Clang15            Pass: 100%/2   | Total: 36m 36s | Avg: 18m 18s | Max: 31m 00s | Hits:  64%/6547  
  🟩 Clang16            Pass: 100%/2   | Total: 59m 20s | Avg: 29m 40s | Max: 29m 47s | Hits:  30%/6547  
  🟩 Clang17            Pass: 100%/2   | Total: 58m 06s | Avg: 29m 03s | Max: 29m 46s | Hits:  30%/6547  
  🟩 Clang18            Pass: 100%/2   | Total:  9m 40s | Avg:  4m 50s | Max:  4m 53s | Hits:  99%/6547  
  🟩 Clang19            Pass: 100%/6   | Total:  2h 34m | Avg: 25m 49s | Max:  1h 04m | Hits:  55%/16392 
  🟩 GCC7               Pass: 100%/2   | Total: 11m 38s | Avg:  5m 49s | Max:  6m 27s | Hits:  94%/6481  
  🟩 GCC8               Pass: 100%/1   | Total:  4m 40s | Avg:  4m 40s | Max:  4m 40s | Hits:  99%/3251  
  🟩 GCC9               Pass: 100%/2   | Total: 21m 17s | Avg: 10m 38s | Max: 17m 10s | Hits:  80%/6493  
  🟩 GCC10              Pass: 100%/2   | Total: 11m 05s | Avg:  5m 32s | Max:  6m 05s | Hits:  96%/6549  
  🟩 GCC11              Pass: 100%/2   | Total: 49m 15s | Avg: 24m 37s | Max: 30m 59s | Hits:  51%/6545  
  🟩 GCC12              Pass: 100%/2   | Total: 11m 27s | Avg:  5m 43s | Max:  6m 46s | Hits:  96%/6549  
  🟩 GCC13              Pass: 100%/10  | Total:  1h 37m | Avg:  9m 42s | Max: 20m 42s | Hits:  95%/16638 
  🟩 MSVC14.29          Pass: 100%/2   | Total: 55m 26s | Avg: 27m 43s | Max: 28m 39s | Hits:  96%/6225  
  🟩 MSVC14.42          Pass: 100%/2   | Total: 59m 41s | Avg: 29m 50s | Max: 32m 31s | Hits:  94%/6283  
  🟩 NVHPC25.3          Pass: 100%/2   | Total: 34m 45s | Avg: 17m 22s | Max: 22m 58s | Hits:  89%/6537  
🟩 cxx_family
  🟩 Clang              Pass: 100%/18  | Total:  6h 45m | Avg: 22m 30s | Max:  1h 04m | Hits:  54%/55638 
  🟩 GCC                Pass: 100%/21  | Total:  3h 26m | Avg:  9m 49s | Max: 30m 59s | Hits:  88%/52506 
  🟩 MSVC               Pass: 100%/4   | Total:  1h 55m | Avg: 28m 46s | Max: 32m 31s | Hits:  95%/12508 
  🟩 NVHPC              Pass: 100%/2   | Total: 34m 45s | Avg: 17m 22s | Max: 22m 58s | Hits:  89%/6537  
🟩 gpu
  🟩 h100               Pass: 100%/2   | Total: 19m 47s | Avg:  9m 53s | Max: 14m 47s | Hits:  99%/3377  
  🟩 rtx2080            Pass: 100%/43  | Total: 12h 21m | Avg: 17m 14s | Max:  1h 04m | Hits:  73%/123812
🟩 jobs
  🟩 Build              Pass: 100%/39  | Total: 10h 30m | Avg: 16m 10s | Max: 32m 31s | Hits:  74%/127149
  🟩 NVRTC              Pass: 100%/2   | Total: 38m 26s | Avg: 19m 13s | Max: 20m 42s | Hits:  90%/40    
  🟩 Test               Pass: 100%/3   | Total:  1h 29m | Avg: 29m 51s | Max:  1h 04m
  🟩 VerifyCodegen      Pass: 100%/1   | Total:  2m 19s | Avg:  2m 19s | Max:  2m 19s
🟩 sm
  🟩 75                 Pass: 100%/2   | Total: 38m 26s | Avg: 19m 13s | Max: 20m 42s | Hits:  90%/40    
  🟩 90                 Pass: 100%/2   | Total: 19m 47s | Avg:  9m 53s | Max: 14m 47s | Hits:  99%/3377  
  🟩 90;90a;100         Pass: 100%/1   | Total:  6m 54s | Avg:  6m 54s | Max:  6m 54s | Hits:  94%/3377  
🟩 std
  🟩 17                 Pass: 100%/22  | Total:  5h 39m | Avg: 15m 25s | Max: 29m 33s | Hits:  78%/67861 
  🟩 20                 Pass: 100%/22  | Total:  6h 59m | Avg: 19m 04s | Max:  1h 04m | Hits:  69%/59328 
```

</details>

<li>
<details><summary><h3>🟩 cudax: Pass: 100%/26  | Total:  2h 17m | Avg:  5m 16s | Max: 12m 30s | Hits:  99%/14642 </h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/22  | Total:  2h 03m | Avg:  5m 38s | Max: 12m 30s | Hits:  99%/12298 
  🟩 arm64              Pass: 100%/4   | Total: 13m 07s | Avg:  3m 16s | Max:  3m 30s | Hits:  99%/2344  
🟩 ctk
  🟩 12.0               Pass: 100%/3   | Total: 17m 35s | Avg:  5m 51s | Max: 11m 04s | Hits:  98%/1463  
  🟩 12.8               Pass: 100%/23  | Total:  1h 59m | Avg:  5m 11s | Max: 12m 30s | Hits:  99%/13179 
🟩 cudacxx
  🟩 nvcc12.0           Pass: 100%/3   | Total: 17m 35s | Avg:  5m 51s | Max: 11m 04s | Hits:  98%/1463  
  🟩 nvcc12.8           Pass: 100%/23  | Total:  1h 59m | Avg:  5m 11s | Max: 12m 30s | Hits:  99%/13179 
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/26  | Total:  2h 17m | Avg:  5m 16s | Max: 12m 30s | Hits:  99%/14642 
🟩 cxx
  🟩 Clang14            Pass: 100%/2   | Total:  6m 41s | Avg:  3m 20s | Max:  3m 40s | Hits: 100%/1176  
  🟩 Clang15            Pass: 100%/1   | Total:  3m 31s | Avg:  3m 31s | Max:  3m 31s | Hits: 100%/586   
  🟩 Clang16            Pass: 100%/1   | Total:  3m 29s | Avg:  3m 29s | Max:  3m 29s | Hits: 100%/586   
  🟩 Clang17            Pass: 100%/1   | Total:  3m 35s | Avg:  3m 35s | Max:  3m 35s | Hits: 100%/586   
  🟩 Clang18            Pass: 100%/1   | Total:  3m 45s | Avg:  3m 45s | Max:  3m 45s | Hits: 100%/586   
  🟩 Clang19            Pass: 100%/4   | Total: 18m 37s | Avg:  4m 39s | Max:  8m 54s | Hits: 100%/2344  
  🟩 GCC10              Pass: 100%/2   | Total:  7m 19s | Avg:  3m 39s | Max:  3m 49s | Hits:  99%/1176  
  🟩 GCC11              Pass: 100%/1   | Total:  3m 57s | Avg:  3m 57s | Max:  3m 57s | Hits:  99%/586   
  🟩 GCC12              Pass: 100%/1   | Total:  3m 58s | Avg:  3m 58s | Max:  3m 58s | Hits:  99%/586   
  🟩 GCC13              Pass: 100%/8   | Total: 41m 31s | Avg:  5m 11s | Max: 10m 40s | Hits:  99%/4688  
  🟩 MSVC14.39          Pass: 100%/1   | Total: 11m 04s | Avg: 11m 04s | Max: 11m 04s | Hits:  95%/287   
  🟩 MSVC14.42          Pass: 100%/1   | Total: 12m 30s | Avg: 12m 30s | Max: 12m 30s | Hits:  95%/287   
  🟩 NVHPC25.3          Pass: 100%/2   | Total: 17m 09s | Avg:  8m 34s | Max:  8m 35s | Hits:  97%/1168  
🟩 cxx_family
  🟩 Clang              Pass: 100%/10  | Total: 39m 38s | Avg:  3m 57s | Max:  8m 54s | Hits: 100%/5864  
  🟩 GCC                Pass: 100%/12  | Total: 56m 45s | Avg:  4m 43s | Max: 10m 40s | Hits:  99%/7036  
  🟩 MSVC               Pass: 100%/2   | Total: 23m 34s | Avg: 11m 47s | Max: 12m 30s | Hits:  95%/574   
  🟩 NVHPC              Pass: 100%/2   | Total: 17m 09s | Avg:  8m 34s | Max:  8m 35s | Hits:  97%/1168  
🟩 gpu
  🟩 h100               Pass: 100%/2   | Total: 12m 35s | Avg:  6m 17s | Max:  9m 01s | Hits:  99%/1172  
  🟩 rtx2080            Pass: 100%/24  | Total:  2h 04m | Avg:  5m 11s | Max: 12m 30s | Hits:  99%/13470 
🟩 jobs
  🟩 Build              Pass: 100%/23  | Total:  1h 48m | Avg:  4m 43s | Max: 12m 30s | Hits:  99%/12884 
  🟩 Test               Pass: 100%/3   | Total: 28m 35s | Avg:  9m 31s | Max: 10m 40s | Hits:  99%/1758  
🟩 sm
  🟩 90                 Pass: 100%/3   | Total: 15m 58s | Avg:  5m 19s | Max:  9m 01s | Hits:  99%/1758  
  🟩 90a                Pass: 100%/1   | Total:  3m 32s | Avg:  3m 32s | Max:  3m 32s | Hits:  99%/586   
🟩 std
  🟩 17                 Pass: 100%/4   | Total: 18m 31s | Avg:  4m 37s | Max:  8m 34s | Hits:  99%/2342  
  🟩 20                 Pass: 100%/22  | Total:  1h 58m | Avg:  5m 23s | Max: 12m 30s | Hits:  99%/12300 
```

</details>

<li>
<details><summary><h3>🟩 stdpar: Pass: 100%/4   | Total: 18m 38s | Avg:  4m 39s | Max:  5m 38s</h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/2   | Total: 10m 58s | Avg:  5m 29s | Max:  5m 38s
  🟩 arm64              Pass: 100%/2   | Total:  7m 40s | Avg:  3m 50s | Max:  3m 52s
🟩 ctk
  🟩 12.8               Pass: 100%/4   | Total: 18m 38s | Avg:  4m 39s | Max:  5m 38s
🟩 cudacxx
  🟩 nvcc12.8           Pass: 100%/4   | Total: 18m 38s | Avg:  4m 39s | Max:  5m 38s
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/4   | Total: 18m 38s | Avg:  4m 39s | Max:  5m 38s
🟩 cxx
  🟩 NVHPC25.3          Pass: 100%/4   | Total: 18m 38s | Avg:  4m 39s | Max:  5m 38s
🟩 cxx_family
  🟩 NVHPC              Pass: 100%/4   | Total: 18m 38s | Avg:  4m 39s | Max:  5m 38s
🟩 gpu
  🟩 rtx2080            Pass: 100%/4   | Total: 18m 38s | Avg:  4m 39s | Max:  5m 38s
🟩 jobs
  🟩 Build              Pass: 100%/4   | Total: 18m 38s | Avg:  4m 39s | Max:  5m 38s
🟩 std
  🟩 17                 Pass: 100%/2   | Total:  9m 30s | Avg:  4m 45s | Max:  5m 38s
  🟩 20                 Pass: 100%/2   | Total:  9m 08s | Avg:  4m 34s | Max:  5m 20s
```

</details>

<li>
<details><summary><h3>🟩 python: Pass: 100%/3   | Total: 32m 31s | Avg: 10m 50s | Max: 18m 51s</h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/3   | Total: 32m 31s | Avg: 10m 50s | Max: 18m 51s
🟩 ctk
  🟩 12.8               Pass: 100%/3   | Total: 32m 31s | Avg: 10m 50s | Max: 18m 51s
🟩 cudacxx
  🟩 nvcc12.8           Pass: 100%/3   | Total: 32m 31s | Avg: 10m 50s | Max: 18m 51s
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/3   | Total: 32m 31s | Avg: 10m 50s | Max: 18m 51s
🟩 cxx
  🟩 GCC13              Pass: 100%/3   | Total: 32m 31s | Avg: 10m 50s | Max: 18m 51s
🟩 cxx_family
  🟩 GCC                Pass: 100%/3   | Total: 32m 31s | Avg: 10m 50s | Max: 18m 51s
🟩 gpu
  🟩 rtx2080            Pass: 100%/3   | Total: 32m 31s | Avg: 10m 50s | Max: 18m 51s
🟩 jobs
  🟩 cuda.cccl          Pass: 100%/1   | Total:  5m 57s | Avg:  5m 57s | Max:  5m 57s
  🟩 cuda.cooperative   Pass: 100%/1   | Total: 18m 51s | Avg: 18m 51s | Max: 18m 51s
  🟩 cuda.parallel      Pass: 100%/1   | Total:  7m 43s | Avg:  7m 43s | Max:  7m 43s
```

</details>

<li>
<details><summary><h3>🟩 cccl_c_parallel: Pass: 100%/2   | Total: 16m 05s | Avg:  8m 02s | Max: 13m 45s | Hits:  98%/326   </h3></summary>

```
🟩 cpu
  🟩 amd64              Pass: 100%/2   | Total: 16m 05s | Avg:  8m 02s | Max: 13m 45s | Hits:  98%/326   
🟩 ctk
  🟩 12.8               Pass: 100%/2   | Total: 16m 05s | Avg:  8m 02s | Max: 13m 45s | Hits:  98%/326   
🟩 cudacxx
  🟩 nvcc12.8           Pass: 100%/2   | Total: 16m 05s | Avg:  8m 02s | Max: 13m 45s | Hits:  98%/326   
🟩 cudacxx_family
  🟩 nvcc               Pass: 100%/2   | Total: 16m 05s | Avg:  8m 02s | Max: 13m 45s | Hits:  98%/326   
🟩 cxx
  🟩 GCC13              Pass: 100%/2   | Total: 16m 05s | Avg:  8m 02s | Max: 13m 45s | Hits:  98%/326   
🟩 cxx_family
  🟩 GCC                Pass: 100%/2   | Total: 16m 05s | Avg:  8m 02s | Max: 13m 45s | Hits:  98%/326   
🟩 gpu
  🟩 rtx2080            Pass: 100%/2   | Total: 16m 05s | Avg:  8m 02s | Max: 13m 45s | Hits:  98%/326   
🟩 jobs
  🟩 Build              Pass: 100%/1   | Total:  2m 20s | Avg:  2m 20s | Max:  2m 20s | Hits:  98%/163   
  🟩 Test               Pass: 100%/1   | Total: 13m 45s | Avg: 13m 45s | Max: 13m 45s | Hits:  98%/163   
```

</details>

</ul>

<details><summary><h3>👃 Inspect Changes</h3></summary>

### Modifications in project?

|     | Project
|-----|---------
|     | CCCL Infrastructure
| +/- | libcu++
|     | CUB
|     | Thrust
|     | CUDA Experimental
|     | stdpar
|     | python
|     | CCCL C Parallel Library
|     | Catch2Helper

### Modifications in project or dependencies?

|     | Project
|-----|---------
|     | CCCL Infrastructure
| +/- | libcu++
| +/- | CUB
| +/- | Thrust
| +/- | CUDA Experimental
| +/- | stdpar
| +/- | python
| +/- | CCCL C Parallel Library
| +/- | Catch2Helper
</details>


<details><summary><h2>🏃‍ Runner counts (total jobs: 174)</h2></summary>

|  #   | Runner
|------|------
|  123 | `linux-amd64-cpu16`
|   15 | `windows-amd64-cpu16`
|   12 | `linux-arm64-cpu16`
|   10 | `linux-amd64-gpu-rtx2080-latest-1`
|    6 | `linux-amd64-gpu-rtxa6000-latest-1`
|    5 | `linux-amd64-gpu-h100-latest-1`
|    3 | `linux-amd64-gpu-rtx4090-latest-1`


</details>

</details>

author_association: CONTRIBUTOR