Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

help the ranges concepts recognize standard contiguous iterators in c++14/17 #3202

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

ericniebler
Copy link
Collaborator

Description

In range-v3, @CaseyCarter and I found a sneaky way to "detect" the contiguous iterators of the 3 major stdlib implementations: libstdc++, libc++, and msvc's stdlib. This PR ports the implementation over so that the following standard containers are now recognized as contiguous:

  • std::vector
  • std::array
  • std::string
  • std::string_view

this PR also removes a hack in cudax that was only necessary because the std:: containers weren't considered contiguous in c++17.

Checklist

  • New or existing tests cover these changes.
  • The documentation is up to date with these changes.

@ericniebler ericniebler requested review from a team as code owners December 19, 2024 20:17
Copy link

copy-pr-bot bot commented Dec 19, 2024

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@ericniebler ericniebler force-pushed the cpp17-contiguous-ranges branch from d527d62 to 21907a4 Compare December 19, 2024 20:23
Copy link
Collaborator

@miscco miscco left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really did not wanted to do that, but its most likely the easiest solution.

Can you please then fix our span to always use the proper range constructor and not the pre-ranges hack?

_LIBCUDACXX_HIDE_FROM_ABI auto __iter_concept_fn(_Iter, __priority_tag<3>) -> contiguous_iterator_tag;
_CCCL_TEMPLATE(class _Iter)
_CCCL_REQUIRES(_IsSame<_Iter, class _Iter::_Span_iterator>::value)
_LIBCUDACXX_HIDE_FROM_ABI auto __iter_concept_fn(_Iter, __priority_tag<3>) -> contiguous_iterator_tag;
Copy link

@CaseyCarter CaseyCarter Dec 19, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can probably do this more cleanly in MSVC by detecting if our iterator unwrapping machinery produces a pointer from a given iterator type. std::is_pointer_v<std::_Unwrapped_t<_Iter>> is true for the STL's contiguous iterators, and for gsl:span's iterators as well. (I didn't tell you to take this dependency on STL internals, I was never here. 😜)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hrm. we need to support older versions of msvc. when did this change go in?

Copy link

@CaseyCarter CaseyCarter Dec 20, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't recall precisely when we defined the alias _Unwrapped_t, but is_pointer_v<decltype(::std::_Get_unwrapped(::std::declval<_Iter>()))> isn't much more to type and should work back to at least VS2015. CE only goes back to 16.0 (https://www.godbolt.org/z/h4Wa1YvEc), and that works. I don't have a readily available VS2015 to test. Is that old enough?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Works fine with VS2017 v15.9, not at all with VS2015.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We only support 2017 gladly

Copy link
Contributor

🟩 CI finished in 2h 39m: Pass: 100%/170 | Total: 3d 18h | Avg: 31m 55s | Max: 1h 19m | Hits: 33%/22510
  • 🟩 libcudacxx: Pass: 100%/48 | Total: 14h 59m | Avg: 18m 44s | Max: 51m 36s | Hits: 46%/9814

    🟩 cpu
      🟩 amd64              Pass: 100%/46  | Total: 14h 21m | Avg: 18m 43s | Max: 51m 36s | Hits:  46%/9814  
      🟩 arm64              Pass: 100%/2   | Total: 38m 05s | Avg: 19m 02s | Max: 21m 38s
    🟩 ctk
      🟩 11.1               Pass: 100%/7   | Total:  2h 09m | Avg: 18m 29s | Max: 26m 23s | Hits:  49%/2239  
      🟩 12.5               Pass: 100%/2   | Total: 52m 26s | Avg: 26m 13s | Max: 28m 21s
      🟩 12.6               Pass: 100%/39  | Total: 11h 57m | Avg: 18m 24s | Max: 51m 36s | Hits:  45%/7575  
    🟩 cudacxx
      🟩 ClangCUDA18        Pass: 100%/4   | Total:  1h 08m | Avg: 17m 12s | Max: 22m 39s
      🟩 nvcc11.1           Pass: 100%/7   | Total:  2h 09m | Avg: 18m 29s | Max: 26m 23s | Hits:  49%/2239  
      🟩 nvcc12.5           Pass: 100%/2   | Total: 52m 26s | Avg: 26m 13s | Max: 28m 21s
      🟩 nvcc12.6           Pass: 100%/35  | Total: 10h 48m | Avg: 18m 32s | Max: 51m 36s | Hits:  45%/7575  
    🟩 cudacxx_family
      🟩 ClangCUDA          Pass: 100%/4   | Total:  1h 08m | Avg: 17m 12s | Max: 22m 39s
      🟩 nvcc               Pass: 100%/44  | Total: 13h 50m | Avg: 18m 52s | Max: 51m 36s | Hits:  46%/9814  
    🟩 cxx
      🟩 Clang9             Pass: 100%/4   | Total:  1h 01m | Avg: 15m 18s | Max: 19m 59s
      🟩 Clang10            Pass: 100%/1   | Total: 17m 17s | Avg: 17m 17s | Max: 17m 17s
      🟩 Clang11            Pass: 100%/1   | Total: 15m 10s | Avg: 15m 10s | Max: 15m 10s
      🟩 Clang12            Pass: 100%/1   | Total: 15m 13s | Avg: 15m 13s | Max: 15m 13s
      🟩 Clang13            Pass: 100%/1   | Total: 15m 29s | Avg: 15m 29s | Max: 15m 29s
      🟩 Clang14            Pass: 100%/1   | Total: 15m 29s | Avg: 15m 29s | Max: 15m 29s
      🟩 Clang15            Pass: 100%/1   | Total: 17m 19s | Avg: 17m 19s | Max: 17m 19s
      🟩 Clang16            Pass: 100%/1   | Total: 18m 02s | Avg: 18m 02s | Max: 18m 02s
      🟩 Clang17            Pass: 100%/1   | Total: 16m 50s | Avg: 16m 50s | Max: 16m 50s
      🟩 Clang18            Pass: 100%/8   | Total:  2h 18m | Avg: 17m 21s | Max: 22m 39s
      🟩 GCC6               Pass: 100%/2   | Total: 35m 18s | Avg: 17m 39s | Max: 22m 14s
      🟩 GCC7               Pass: 100%/2   | Total: 25m 18s | Avg: 12m 39s | Max: 13m 23s
      🟩 GCC8               Pass: 100%/1   | Total: 14m 54s | Avg: 14m 54s | Max: 14m 54s
      🟩 GCC9               Pass: 100%/3   | Total: 52m 26s | Avg: 17m 28s | Max: 20m 24s
      🟩 GCC10              Pass: 100%/1   | Total: 16m 29s | Avg: 16m 29s | Max: 16m 29s
      🟩 GCC11              Pass: 100%/1   | Total: 16m 47s | Avg: 16m 47s | Max: 16m 47s
      🟩 GCC12              Pass: 100%/1   | Total: 17m 10s | Avg: 17m 10s | Max: 17m 10s
      🟩 GCC13              Pass: 100%/10  | Total:  3h 27m | Avg: 20m 42s | Max: 51m 36s
      🟩 Intel2023.2.0      Pass: 100%/1   | Total: 18m 12s | Avg: 18m 12s | Max: 18m 12s
      🟩 MSVC14.16          Pass: 100%/1   | Total: 26m 23s | Avg: 26m 23s | Max: 26m 23s | Hits:  49%/2239  
      🟩 MSVC14.29          Pass: 100%/1   | Total: 27m 55s | Avg: 27m 55s | Max: 27m 55s | Hits:  46%/2476  
      🟩 MSVC14.39          Pass: 100%/2   | Total: 58m 25s | Avg: 29m 12s | Max: 30m 16s | Hits:  45%/5099  
      🟩 NVHPC24.7          Pass: 100%/2   | Total: 52m 26s | Avg: 26m 13s | Max: 28m 21s
    🟩 cxx_family
      🟩 Clang              Pass: 100%/20  | Total:  5h 30m | Avg: 16m 32s | Max: 22m 39s
      🟩 GCC                Pass: 100%/21  | Total:  6h 25m | Avg: 18m 21s | Max: 51m 36s
      🟩 Intel              Pass: 100%/1   | Total: 18m 12s | Avg: 18m 12s | Max: 18m 12s
      🟩 MSVC               Pass: 100%/4   | Total:  1h 52m | Avg: 28m 10s | Max: 30m 16s | Hits:  46%/9814  
      🟩 NVHPC              Pass: 100%/2   | Total: 52m 26s | Avg: 26m 13s | Max: 28m 21s
    🟩 gpu
      🟩 v100               Pass: 100%/48  | Total: 14h 59m | Avg: 18m 44s | Max: 51m 36s | Hits:  46%/9814  
    🟩 jobs
      🟩 Build              Pass: 100%/41  | Total: 12h 18m | Avg: 18m 00s | Max: 30m 16s | Hits:  46%/9814  
      🟩 NVRTC              Pass: 100%/4   | Total:  1h 28m | Avg: 22m 05s | Max: 24m 54s
      🟩 Test               Pass: 100%/2   | Total:  1h 11m | Avg: 35m 32s | Max: 51m 36s
      🟩 VerifyCodegen      Pass: 100%/1   | Total:  2m 00s | Avg:  2m 00s | Max:  2m 00s
    🟩 sm
      🟩 90                 Pass: 100%/1   | Total: 13m 55s | Avg: 13m 55s | Max: 13m 55s
      🟩 90a                Pass: 100%/2   | Total: 24m 20s | Avg: 12m 10s | Max: 13m 17s
    🟩 std
      🟩 11                 Pass: 100%/6   | Total:  1h 48m | Avg: 18m 08s | Max: 22m 14s
      🟩 14                 Pass: 100%/5   | Total:  1h 31m | Avg: 18m 15s | Max: 26m 23s | Hits:  49%/2239  
      🟩 17                 Pass: 100%/13  | Total:  4h 09m | Avg: 19m 09s | Max: 28m 09s | Hits:  46%/4952  
      🟩 20                 Pass: 100%/23  | Total:  7h 28m | Avg: 19m 29s | Max: 51m 36s | Hits:  44%/2623  
    
  • 🟩 cub: Pass: 100%/47 | Total: 1d 15h | Avg: 50m 41s | Max: 1h 07m | Hits: 3%/3124

    🟩 cpu
      🟩 amd64              Pass: 100%/45  | Total:  1d 13h | Avg: 50m 20s | Max:  1h 07m | Hits:   3%/3124  
      🟩 arm64              Pass: 100%/2   | Total:  1h 57m | Avg: 58m 34s | Max:  1h 00m
    🟩 ctk
      🟩 11.1               Pass: 100%/7   | Total:  6h 03m | Avg: 51m 55s | Max: 57m 58s | Hits:   2%/781   
      🟩 12.5               Pass: 100%/2   | Total:  2h 15m | Avg:  1h 07m | Max:  1h 07m
      🟩 12.6               Pass: 100%/38  | Total:  1d 07h | Avg: 49m 34s | Max:  1h 05m | Hits:   3%/2343  
    🟩 cudacxx
      🟩 ClangCUDA18        Pass: 100%/2   | Total:  2h 03m | Avg:  1h 01m | Max:  1h 02m
      🟩 nvcc11.1           Pass: 100%/7   | Total:  6h 03m | Avg: 51m 55s | Max: 57m 58s | Hits:   2%/781   
      🟩 nvcc12.5           Pass: 100%/2   | Total:  2h 15m | Avg:  1h 07m | Max:  1h 07m
      🟩 nvcc12.6           Pass: 100%/36  | Total:  1d 05h | Avg: 48m 53s | Max:  1h 05m | Hits:   3%/2343  
    🟩 cudacxx_family
      🟩 ClangCUDA          Pass: 100%/2   | Total:  2h 03m | Avg:  1h 01m | Max:  1h 02m
      🟩 nvcc               Pass: 100%/45  | Total:  1d 13h | Avg: 50m 12s | Max:  1h 07m | Hits:   3%/3124  
    🟩 cxx
      🟩 Clang9             Pass: 100%/4   | Total:  3h 36m | Avg: 54m 04s | Max: 58m 08s
      🟩 Clang10            Pass: 100%/1   | Total: 57m 05s | Avg: 57m 05s | Max: 57m 05s
      🟩 Clang11            Pass: 100%/1   | Total: 56m 39s | Avg: 56m 39s | Max: 56m 39s
      🟩 Clang12            Pass: 100%/1   | Total: 55m 15s | Avg: 55m 15s | Max: 55m 15s
      🟩 Clang13            Pass: 100%/1   | Total:  1h 01m | Avg:  1h 01m | Max:  1h 01m
      🟩 Clang14            Pass: 100%/1   | Total: 59m 20s | Avg: 59m 20s | Max: 59m 20s
      🟩 Clang15            Pass: 100%/1   | Total: 59m 36s | Avg: 59m 36s | Max: 59m 36s
      🟩 Clang16            Pass: 100%/1   | Total:  1h 04m | Avg:  1h 04m | Max:  1h 04m
      🟩 Clang17            Pass: 100%/1   | Total:  1h 01m | Avg:  1h 01m | Max:  1h 01m
      🟩 Clang18            Pass: 100%/7   | Total:  5h 35m | Avg: 47m 58s | Max:  1h 02m
      🟩 GCC6               Pass: 100%/2   | Total:  1h 40m | Avg: 50m 00s | Max: 51m 54s
      🟩 GCC7               Pass: 100%/2   | Total:  1h 47m | Avg: 53m 37s | Max: 53m 58s
      🟩 GCC8               Pass: 100%/1   | Total: 53m 22s | Avg: 53m 22s | Max: 53m 22s
      🟩 GCC9               Pass: 100%/3   | Total:  2h 43m | Avg: 54m 29s | Max:  1h 00m
      🟩 GCC10              Pass: 100%/1   | Total: 56m 59s | Avg: 56m 59s | Max: 56m 59s
      🟩 GCC11              Pass: 100%/1   | Total: 54m 42s | Avg: 54m 42s | Max: 54m 42s
      🟩 GCC12              Pass: 100%/3   | Total:  1h 36m | Avg: 32m 01s | Max: 55m 08s
      🟩 GCC13              Pass: 100%/8   | Total:  4h 36m | Avg: 34m 32s | Max:  1h 00m
      🟩 Intel2023.2.0      Pass: 100%/1   | Total:  1h 02m | Avg:  1h 02m | Max:  1h 02m
      🟩 MSVC14.16          Pass: 100%/1   | Total: 57m 58s | Avg: 57m 58s | Max: 57m 58s | Hits:   2%/781   
      🟩 MSVC14.29          Pass: 100%/1   | Total:  1h 02m | Avg:  1h 02m | Max:  1h 02m | Hits:   2%/781   
      🟩 MSVC14.39          Pass: 100%/2   | Total:  2h 08m | Avg:  1h 04m | Max:  1h 05m | Hits:   3%/1562  
      🟩 NVHPC24.7          Pass: 100%/2   | Total:  2h 15m | Avg:  1h 07m | Max:  1h 07m
    🟩 cxx_family
      🟩 Clang              Pass: 100%/19  | Total: 17h 07m | Avg: 54m 04s | Max:  1h 04m
      🟩 GCC                Pass: 100%/21  | Total: 15h 08m | Avg: 43m 14s | Max:  1h 00m
      🟩 Intel              Pass: 100%/1   | Total:  1h 02m | Avg:  1h 02m | Max:  1h 02m
      🟩 MSVC               Pass: 100%/4   | Total:  4h 09m | Avg:  1h 02m | Max:  1h 05m | Hits:   3%/3124  
      🟩 NVHPC              Pass: 100%/2   | Total:  2h 15m | Avg:  1h 07m | Max:  1h 07m
    🟩 gpu
      🟩 h100               Pass: 100%/2   | Total: 40m 57s | Avg: 20m 28s | Max: 25m 05s
      🟩 v100               Pass: 100%/45  | Total:  1d 15h | Avg: 52m 02s | Max:  1h 07m | Hits:   3%/3124  
    🟩 jobs
      🟩 Build              Pass: 100%/40  | Total:  1d 13h | Avg: 56m 13s | Max:  1h 07m | Hits:   3%/3124  
      🟩 DeviceLaunch       Pass: 100%/1   | Total: 21m 45s | Avg: 21m 45s | Max: 21m 45s
      🟩 GraphCapture       Pass: 100%/1   | Total: 14m 35s | Avg: 14m 35s | Max: 14m 35s
      🟩 HostLaunch         Pass: 100%/3   | Total: 49m 16s | Avg: 16m 25s | Max: 17m 06s
      🟩 TestGPU            Pass: 100%/2   | Total: 47m 57s | Avg: 23m 58s | Max: 25m 42s
    🟩 sm
      🟩 90                 Pass: 100%/2   | Total: 40m 57s | Avg: 20m 28s | Max: 25m 05s
      🟩 90a                Pass: 100%/1   | Total: 26m 35s | Avg: 26m 35s | Max: 26m 35s
    🟩 std
      🟩 11                 Pass: 100%/5   | Total:  4h 23m | Avg: 52m 37s | Max: 58m 08s
      🟩 14                 Pass: 100%/4   | Total:  3h 35m | Avg: 53m 48s | Max: 57m 58s | Hits:   2%/781   
      🟩 17                 Pass: 100%/12  | Total: 11h 45m | Avg: 58m 48s | Max:  1h 07m | Hits:   2%/1562  
      🟩 20                 Pass: 100%/26  | Total: 19h 58m | Avg: 46m 05s | Max:  1h 07m | Hits:   3%/781   
    
  • 🟩 thrust: Pass: 100%/46 | Total: 1d 05h | Avg: 37m 57s | Max: 1h 19m | Hits: 30%/9260

    🟩 cmake_options
      🟩 -DTHRUST_DISPATCH_TYPE=Force32bit Pass: 100%/2   | Total: 47m 18s | Avg: 23m 39s | Max: 35m 09s
    🟩 cpu
      🟩 amd64              Pass: 100%/44  | Total:  1d 03h | Avg: 37m 57s | Max:  1h 19m | Hits:  30%/9260  
      🟩 arm64              Pass: 100%/2   | Total:  1h 15m | Avg: 37m 48s | Max: 39m 51s
    🟩 ctk
      🟩 11.1               Pass: 100%/7   | Total:  4h 13m | Avg: 36m 15s | Max:  1h 06m | Hits:  12%/1852  
      🟩 12.5               Pass: 100%/2   | Total:  2h 23m | Avg:  1h 11m | Max:  1h 15m
      🟩 12.6               Pass: 100%/37  | Total: 22h 28m | Avg: 36m 27s | Max:  1h 19m | Hits:  34%/7408  
    🟩 cudacxx
      🟩 ClangCUDA18        Pass: 100%/2   | Total:  1h 06m | Avg: 33m 05s | Max: 33m 09s
      🟩 nvcc11.1           Pass: 100%/7   | Total:  4h 13m | Avg: 36m 15s | Max:  1h 06m | Hits:  12%/1852  
      🟩 nvcc12.5           Pass: 100%/2   | Total:  2h 23m | Avg:  1h 11m | Max:  1h 15m
      🟩 nvcc12.6           Pass: 100%/35  | Total: 21h 22m | Avg: 36m 38s | Max:  1h 19m | Hits:  34%/7408  
    🟩 cudacxx_family
      🟩 ClangCUDA          Pass: 100%/2   | Total:  1h 06m | Avg: 33m 05s | Max: 33m 09s
      🟩 nvcc               Pass: 100%/44  | Total:  1d 03h | Avg: 38m 10s | Max:  1h 19m | Hits:  30%/9260  
    🟩 cxx
      🟩 Clang9             Pass: 100%/4   | Total:  2h 12m | Avg: 33m 13s | Max: 35m 15s
      🟩 Clang10            Pass: 100%/1   | Total: 43m 10s | Avg: 43m 10s | Max: 43m 10s
      🟩 Clang11            Pass: 100%/1   | Total: 40m 26s | Avg: 40m 26s | Max: 40m 26s
      🟩 Clang12            Pass: 100%/1   | Total: 39m 02s | Avg: 39m 02s | Max: 39m 02s
      🟩 Clang13            Pass: 100%/1   | Total: 39m 29s | Avg: 39m 29s | Max: 39m 29s
      🟩 Clang14            Pass: 100%/1   | Total: 37m 00s | Avg: 37m 00s | Max: 37m 00s
      🟩 Clang15            Pass: 100%/1   | Total: 37m 25s | Avg: 37m 25s | Max: 37m 25s
      🟩 Clang16            Pass: 100%/1   | Total: 37m 41s | Avg: 37m 41s | Max: 37m 41s
      🟩 Clang17            Pass: 100%/1   | Total: 40m 20s | Avg: 40m 20s | Max: 40m 20s
      🟩 Clang18            Pass: 100%/7   | Total:  3h 16m | Avg: 28m 02s | Max: 36m 36s
      🟩 GCC6               Pass: 100%/2   | Total: 58m 26s | Avg: 29m 13s | Max: 32m 45s
      🟩 GCC7               Pass: 100%/2   | Total:  1h 03m | Avg: 31m 37s | Max: 34m 55s
      🟩 GCC8               Pass: 100%/1   | Total: 39m 40s | Avg: 39m 40s | Max: 39m 40s
      🟩 GCC9               Pass: 100%/3   | Total:  1h 45m | Avg: 35m 17s | Max: 40m 19s
      🟩 GCC10              Pass: 100%/1   | Total: 38m 58s | Avg: 38m 58s | Max: 38m 58s
      🟩 GCC11              Pass: 100%/1   | Total: 38m 51s | Avg: 38m 51s | Max: 38m 51s
      🟩 GCC12              Pass: 100%/1   | Total: 39m 54s | Avg: 39m 54s | Max: 39m 54s
      🟩 GCC13              Pass: 100%/8   | Total:  3h 34m | Avg: 26m 49s | Max: 40m 25s
      🟩 Intel2023.2.0      Pass: 100%/1   | Total: 50m 05s | Avg: 50m 05s | Max: 50m 05s
      🟩 MSVC14.16          Pass: 100%/1   | Total:  1h 06m | Avg:  1h 06m | Max:  1h 06m | Hits:  12%/1852  
      🟩 MSVC14.29          Pass: 100%/1   | Total:  1h 08m | Avg:  1h 08m | Max:  1h 08m | Hits:  12%/1852  
      🟩 MSVC14.39          Pass: 100%/3   | Total:  2h 55m | Avg: 58m 21s | Max:  1h 19m | Hits:  41%/5556  
      🟩 NVHPC24.7          Pass: 100%/2   | Total:  2h 23m | Avg:  1h 11m | Max:  1h 15m
    🟩 cxx_family
      🟩 Clang              Pass: 100%/19  | Total: 10h 43m | Avg: 33m 52s | Max: 43m 10s
      🟩 GCC                Pass: 100%/19  | Total:  9h 59m | Avg: 31m 33s | Max: 40m 25s
      🟩 Intel              Pass: 100%/1   | Total: 50m 05s | Avg: 50m 05s | Max: 50m 05s
      🟩 MSVC               Pass: 100%/5   | Total:  5h 09m | Avg:  1h 01m | Max:  1h 19m | Hits:  30%/9260  
      🟩 NVHPC              Pass: 100%/2   | Total:  2h 23m | Avg:  1h 11m | Max:  1h 15m
    🟩 gpu
      🟩 v100               Pass: 100%/46  | Total:  1d 05h | Avg: 37m 57s | Max:  1h 19m | Hits:  30%/9260  
    🟩 jobs
      🟩 Build              Pass: 100%/40  | Total:  1d 03h | Avg: 41m 42s | Max:  1h 19m | Hits:  12%/7408  
      🟩 TestCPU            Pass: 100%/3   | Total: 38m 37s | Avg: 12m 52s | Max: 24m 00s | Hits:  99%/1852  
      🟩 TestGPU            Pass: 100%/3   | Total: 39m 03s | Avg: 13m 01s | Max: 15m 30s
    🟩 sm
      🟩 90a                Pass: 100%/1   | Total: 29m 03s | Avg: 29m 03s | Max: 29m 03s
    🟩 std
      🟩 11                 Pass: 100%/5   | Total:  2h 26m | Avg: 29m 16s | Max: 34m 18s
      🟩 14                 Pass: 100%/4   | Total:  2h 48m | Avg: 42m 09s | Max:  1h 06m | Hits:  12%/1852  
      🟩 17                 Pass: 100%/12  | Total:  9h 27m | Avg: 47m 18s | Max:  1h 15m | Hits:  12%/3704  
      🟩 20                 Pass: 100%/23  | Total: 13h 35m | Avg: 35m 27s | Max:  1h 19m | Hits:  56%/3704  
    
  • 🟩 cudax: Pass: 100%/26 | Total: 5h 55m | Avg: 13m 40s | Max: 17m 44s | Hits: 34%/312

    🟩 cpu
      🟩 amd64              Pass: 100%/22  | Total:  5h 02m | Avg: 13m 45s | Max: 17m 44s | Hits:  34%/312   
      🟩 arm64              Pass: 100%/4   | Total: 52m 58s | Avg: 13m 14s | Max: 14m 32s
    🟩 ctk
      🟩 12.0               Pass: 100%/3   | Total: 38m 41s | Avg: 12m 53s | Max: 14m 19s | Hits:  34%/156   
      🟩 12.5               Pass: 100%/2   | Total: 18m 43s | Avg:  9m 21s | Max:  9m 27s
      🟩 12.6               Pass: 100%/21  | Total:  4h 58m | Avg: 14m 12s | Max: 17m 44s | Hits:  34%/156   
    🟩 cudacxx
      🟩 nvcc12.0           Pass: 100%/3   | Total: 38m 41s | Avg: 12m 53s | Max: 14m 19s | Hits:  34%/156   
      🟩 nvcc12.5           Pass: 100%/2   | Total: 18m 43s | Avg:  9m 21s | Max:  9m 27s
      🟩 nvcc12.6           Pass: 100%/21  | Total:  4h 58m | Avg: 14m 12s | Max: 17m 44s | Hits:  34%/156   
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/26  | Total:  5h 55m | Avg: 13m 40s | Max: 17m 44s | Hits:  34%/312   
    🟩 cxx
      🟩 Clang9             Pass: 100%/1   | Total: 14m 19s | Avg: 14m 19s | Max: 14m 19s
      🟩 Clang10            Pass: 100%/1   | Total: 15m 50s | Avg: 15m 50s | Max: 15m 50s
      🟩 Clang11            Pass: 100%/1   | Total: 14m 49s | Avg: 14m 49s | Max: 14m 49s
      🟩 Clang12            Pass: 100%/1   | Total: 14m 46s | Avg: 14m 46s | Max: 14m 46s
      🟩 Clang13            Pass: 100%/1   | Total: 13m 19s | Avg: 13m 19s | Max: 13m 19s
      🟩 Clang14            Pass: 100%/1   | Total: 13m 01s | Avg: 13m 01s | Max: 13m 01s
      🟩 Clang15            Pass: 100%/1   | Total: 14m 36s | Avg: 14m 36s | Max: 14m 36s
      🟩 Clang16            Pass: 100%/1   | Total: 14m 58s | Avg: 14m 58s | Max: 14m 58s
      🟩 Clang17            Pass: 100%/1   | Total: 14m 32s | Avg: 14m 32s | Max: 14m 32s
      🟩 Clang18            Pass: 100%/4   | Total: 57m 14s | Avg: 14m 18s | Max: 17m 28s
      🟩 GCC9               Pass: 100%/1   | Total: 14m 00s | Avg: 14m 00s | Max: 14m 00s
      🟩 GCC10              Pass: 100%/1   | Total: 16m 16s | Avg: 16m 16s | Max: 16m 16s
      🟩 GCC11              Pass: 100%/1   | Total: 14m 46s | Avg: 14m 46s | Max: 14m 46s
      🟩 GCC12              Pass: 100%/2   | Total: 33m 12s | Avg: 16m 36s | Max: 17m 44s
      🟩 GCC13              Pass: 100%/4   | Total: 50m 31s | Avg: 12m 37s | Max: 14m 32s
      🟩 MSVC14.36          Pass: 100%/1   | Total: 10m 22s | Avg: 10m 22s | Max: 10m 22s | Hits:  34%/156   
      🟩 MSVC14.39          Pass: 100%/1   | Total: 10m 24s | Avg: 10m 24s | Max: 10m 24s | Hits:  34%/156   
      🟩 NVHPC24.7          Pass: 100%/2   | Total: 18m 43s | Avg:  9m 21s | Max:  9m 27s
    🟩 cxx_family
      🟩 Clang              Pass: 100%/13  | Total:  3h 07m | Avg: 14m 24s | Max: 17m 28s
      🟩 GCC                Pass: 100%/9   | Total:  2h 08m | Avg: 14m 18s | Max: 17m 44s
      🟩 MSVC               Pass: 100%/2   | Total: 20m 46s | Avg: 10m 23s | Max: 10m 24s | Hits:  34%/312   
      🟩 NVHPC              Pass: 100%/2   | Total: 18m 43s | Avg:  9m 21s | Max:  9m 27s
    🟩 gpu
      🟩 v100               Pass: 100%/26  | Total:  5h 55m | Avg: 13m 40s | Max: 17m 44s | Hits:  34%/312   
    🟩 jobs
      🟩 Build              Pass: 100%/24  | Total:  5h 20m | Avg: 13m 21s | Max: 16m 16s | Hits:  34%/312   
      🟩 Test               Pass: 100%/2   | Total: 35m 12s | Avg: 17m 36s | Max: 17m 44s
    🟩 sm
      🟩 90                 Pass: 100%/1   | Total: 11m 18s | Avg: 11m 18s | Max: 11m 18s
      🟩 90a                Pass: 100%/1   | Total: 11m 45s | Avg: 11m 45s | Max: 11m 45s
    🟩 std
      🟩 17                 Pass: 100%/6   | Total:  1h 13m | Avg: 12m 19s | Max: 14m 19s
      🟩 20                 Pass: 100%/20  | Total:  4h 41m | Avg: 14m 05s | Max: 17m 44s | Hits:  34%/312   
    
  • 🟩 cccl_c_parallel: Pass: 100%/2 | Total: 13m 02s | Avg: 6m 31s | Max: 10m 56s

    🟩 cpu
      🟩 amd64              Pass: 100%/2   | Total: 13m 02s | Avg:  6m 31s | Max: 10m 56s
    🟩 ctk
      🟩 12.6               Pass: 100%/2   | Total: 13m 02s | Avg:  6m 31s | Max: 10m 56s
    🟩 cudacxx
      🟩 nvcc12.6           Pass: 100%/2   | Total: 13m 02s | Avg:  6m 31s | Max: 10m 56s
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/2   | Total: 13m 02s | Avg:  6m 31s | Max: 10m 56s
    🟩 cxx
      🟩 GCC13              Pass: 100%/2   | Total: 13m 02s | Avg:  6m 31s | Max: 10m 56s
    🟩 cxx_family
      🟩 GCC                Pass: 100%/2   | Total: 13m 02s | Avg:  6m 31s | Max: 10m 56s
    🟩 gpu
      🟩 v100               Pass: 100%/2   | Total: 13m 02s | Avg:  6m 31s | Max: 10m 56s
    🟩 jobs
      🟩 Build              Pass: 100%/1   | Total:  2m 06s | Avg:  2m 06s | Max:  2m 06s
      🟩 Test               Pass: 100%/1   | Total: 10m 56s | Avg: 10m 56s | Max: 10m 56s
    
  • 🟩 python: Pass: 100%/1 | Total: 29m 24s | Avg: 29m 24s | Max: 29m 24s

    🟩 cpu
      🟩 amd64              Pass: 100%/1   | Total: 29m 24s | Avg: 29m 24s | Max: 29m 24s
    🟩 ctk
      🟩 12.6               Pass: 100%/1   | Total: 29m 24s | Avg: 29m 24s | Max: 29m 24s
    🟩 cudacxx
      🟩 nvcc12.6           Pass: 100%/1   | Total: 29m 24s | Avg: 29m 24s | Max: 29m 24s
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/1   | Total: 29m 24s | Avg: 29m 24s | Max: 29m 24s
    🟩 cxx
      🟩 GCC13              Pass: 100%/1   | Total: 29m 24s | Avg: 29m 24s | Max: 29m 24s
    🟩 cxx_family
      🟩 GCC                Pass: 100%/1   | Total: 29m 24s | Avg: 29m 24s | Max: 29m 24s
    🟩 gpu
      🟩 v100               Pass: 100%/1   | Total: 29m 24s | Avg: 29m 24s | Max: 29m 24s
    🟩 jobs
      🟩 Test               Pass: 100%/1   | Total: 29m 24s | Avg: 29m 24s | Max: 29m 24s
    

👃 Inspect Changes

Modifications in project?

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

Modifications in project or dependencies?

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

🏃‍ Runner counts (total jobs: 170)

# Runner
125 linux-amd64-cpu16
19 linux-amd64-gpu-v100-latest-1
15 windows-amd64-cpu16
10 linux-arm64-cpu16
1 linux-amd64-gpu-h100-latest-1-testing

@ericniebler
Copy link
Collaborator Author

Can you please then fix our span to always use the proper range constructor and not the pre-ranges hack?

i started down this rabbit hole, but the range stuff is only defined in C++17, and (for now) span still supports C++14.

_CCCL_TEMPLATE(class _Iter, class _Ty, class _Range)
_CCCL_REQUIRES(_IsSame<_Iter, ::__gnu_cxx::__normal_iterator<_Ty*, _Range>>::value)
_LIBCUDACXX_HIDE_FROM_ABI auto
__iter_concept_fn(::__gnu_cxx::__normal_iterator<_Ty*, _Range>, __priority_tag<3>) -> contiguous_iterator_tag;
#endif
#if defined(_LIBCPP_VERSION)
# elif defined(_LIBCPP_VERSION)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am sorry, but my comment was erroneous.

We always pull in libstdc++ through some nvcc machinery, so we need to make this a separate branch

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In Review
Development

Successfully merging this pull request may close these issues.

3 participants