Skip to content

Conversation

@davebayer
Copy link
Contributor

@davebayer davebayer commented Jun 16, 2025

This PR introduces demangle function to cuda::experimental. It uses __cu_demangle function from libcufilt.a library which is required to be linked by the user when using this function.

This PR introduces cuda::demangle function for demangling CUDA C++ symbols. It is a function available through <cuda/__binutils_> module which is currently internal. The demangling is implemented by __cu_demangle function from libcufilt.a library that comes with CUDA Toolkit since 11.2.

@davebayer davebayer requested review from a team as code owners June 16, 2025 07:30
@github-project-automation github-project-automation bot moved this to Todo in CCCL Jun 16, 2025
@copy-pr-bot
Copy link
Contributor

copy-pr-bot bot commented Jun 16, 2025

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.

@cccl-authenticator-app cccl-authenticator-app bot moved this from Todo to In Review in CCCL Jun 16, 2025
@bernhardmgruber
Copy link
Contributor

If we added this to libcu++ directly (maybe as an internal function) we could kill c2h::demangle and unittest::demangle. We may also consider adding something like:

template <typename T>
inline const std::string type_name = demangle(typeid(T).name());

@davebayer
Copy link
Contributor Author

davebayer commented Jun 16, 2025

If we added this to libcu++ directly (maybe as an internal function) we could kill c2h::demangle and unittest::demangle. We may also consider adding something like:

template <typename T>
inline const std::string type_name = demangle(typeid(T).name());

Hey, why not! I just a bit unsure whether we want to use std::string for the return value type, because we might have cuda::std::string one day and we may want to use that one.

However, if we keep it internal, there is no such a problem :) I would just change the implementation to get rid of the std::unique_ptr.

We may also add the link of the library to the cccl cmake module file, so the user using cmake needn't to do it himself

@miscco
Copy link
Contributor

miscco commented Jun 16, 2025

/ok to test a8edcd2

@github-actions
Copy link
Contributor

🟨 CI finished in 9m 52s: Pass: 13%/30 | Total: 2h 02m | Avg: 4m 05s | Max: 8m 07s
  • 🟥 cudax: Pass: 0%/26 | Total: 1h 51m | Avg: 4m 16s | Max: 8m 07s

    🟥 cudacxx_family
      🟥 nvcc               Pass:   0%/26  | Total:  1h 51m | Avg:  4m 16s | Max:  8m 07s
    🟥 cpu
      🟥 amd64              Pass:   0%/22  | Total:  1h 34m | Avg:  4m 18s | Max:  8m 07s
      🟥 arm64              Pass:   0%/4   | Total: 16m 23s | Avg:  4m 05s | Max:  4m 10s
    🟥 ctk
      🟥 12.0               Pass:   0%/3   | Total: 16m 51s | Avg:  5m 37s | Max:  8m 07s
      🟥 12.9               Pass:   0%/23  | Total:  1h 34m | Avg:  4m 06s | Max:  7m 54s
    🟥 cudacxx
      🟥 nvcc12.0           Pass:   0%/3   | Total: 16m 51s | Avg:  5m 37s | Max:  8m 07s
      🟥 nvcc12.9           Pass:   0%/23  | Total:  1h 34m | Avg:  4m 06s | Max:  7m 54s
    🟥 cxx
      🟥 Clang14            Pass:   0%/2   | Total:  8m 58s | Avg:  4m 29s | Max:  4m 31s
      🟥 Clang15            Pass:   0%/1   | Total:  4m 28s | Avg:  4m 28s | Max:  4m 28s
      🟥 Clang16            Pass:   0%/1   | Total:  4m 29s | Avg:  4m 29s | Max:  4m 29s
      🟥 Clang17            Pass:   0%/1   | Total:  4m 33s | Avg:  4m 33s | Max:  4m 33s
      🟥 Clang18            Pass:   0%/1   | Total:  4m 39s | Avg:  4m 39s | Max:  4m 39s
      🟥 Clang19            Pass:   0%/4   | Total: 12m 48s | Avg:  3m 12s | Max:  4m 31s
      🟥 GCC10              Pass:   0%/2   | Total:  8m 37s | Avg:  4m 18s | Max:  4m 20s
      🟥 GCC11              Pass:   0%/1   | Total:  4m 14s | Avg:  4m 14s | Max:  4m 14s
      🟥 GCC12              Pass:   0%/1   | Total:  4m 26s | Avg:  4m 26s | Max:  4m 26s
      🟥 GCC13              Pass:   0%/8   | Total: 26m 01s | Avg:  3m 15s | Max:  4m 32s
      🟥 MSVC14.39          Pass:   0%/1   | Total:  8m 07s | Avg:  8m 07s | Max:  8m 07s
      🟥 MSVC14.43          Pass:   0%/1   | Total:  7m 54s | Avg:  7m 54s | Max:  7m 54s
      🟥 NVHPC25.5          Pass:   0%/2   | Total: 11m 59s | Avg:  5m 59s | Max:  6m 16s
    🟥 cxx_family
      🟥 Clang              Pass:   0%/10  | Total: 39m 55s | Avg:  3m 59s | Max:  4m 39s
      🟥 GCC                Pass:   0%/12  | Total: 43m 18s | Avg:  3m 36s | Max:  4m 32s
      🟥 MSVC               Pass:   0%/2   | Total: 16m 01s | Avg:  8m 00s | Max:  8m 07s
      🟥 NVHPC              Pass:   0%/2   | Total: 11m 59s | Avg:  5m 59s | Max:  6m 16s
    🟥 gpu
      🟥 h100               Pass:   0%/2   | Total:  4m 32s | Avg:  2m 16s | Max:  4m 32s
      🟥 rtx2080            Pass:   0%/24  | Total:  1h 46m | Avg:  4m 26s | Max:  8m 07s
    🟥 jobs
      🟥 Build              Pass:   0%/23  | Total:  1h 51m | Avg:  4m 50s | Max:  8m 07s
      🟥 Test               Pass:   0%/3  
    🟥 sm
      🟥 90                 Pass:   0%/3   | Total:  8m 59s | Avg:  2m 59s | Max:  4m 32s
      🟥 90a                Pass:   0%/1   | Total:  4m 29s | Avg:  4m 29s | Max:  4m 29s
    🟥 std
      🟥 17                 Pass:   0%/4   | Total: 18m 56s | Avg:  4m 44s | Max:  6m 16s
      🟥 20                 Pass:   0%/22  | Total:  1h 32m | Avg:  4m 11s | Max:  8m 07s
    
  • 🟩 packaging: Pass: 100%/4 | Total: 11m 23s | Avg: 2m 50s | Max: 2m 56s

    🟩 cpu
      🟩 amd64              Pass: 100%/4   | Total: 11m 23s | Avg:  2m 50s | Max:  2m 56s
    🟩 ctk
      🟩 12.0               Pass: 100%/2   | Total:  5m 36s | Avg:  2m 48s | Max:  2m 56s
      🟩 12.9               Pass: 100%/2   | Total:  5m 47s | Avg:  2m 53s | Max:  2m 54s
    🟩 cudacxx
      🟩 nvcc12.0           Pass: 100%/2   | Total:  5m 36s | Avg:  2m 48s | Max:  2m 56s
      🟩 nvcc12.9           Pass: 100%/2   | Total:  5m 47s | Avg:  2m 53s | Max:  2m 54s
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/4   | Total: 11m 23s | Avg:  2m 50s | Max:  2m 56s
    🟩 cxx
      🟩 Clang14            Pass: 100%/1   | Total:  2m 40s | Avg:  2m 40s | Max:  2m 40s
      🟩 Clang19            Pass: 100%/1   | Total:  2m 54s | Avg:  2m 54s | Max:  2m 54s
      🟩 GCC12              Pass: 100%/1   | Total:  2m 56s | Avg:  2m 56s | Max:  2m 56s
      🟩 GCC13              Pass: 100%/1   | Total:  2m 53s | Avg:  2m 53s | Max:  2m 53s
    🟩 cxx_family
      🟩 Clang              Pass: 100%/2   | Total:  5m 34s | Avg:  2m 47s | Max:  2m 54s
      🟩 GCC                Pass: 100%/2   | Total:  5m 49s | Avg:  2m 54s | Max:  2m 56s
    🟩 gpu
      🟩 rtx2080            Pass: 100%/4   | Total: 11m 23s | Avg:  2m 50s | Max:  2m 56s
    🟩 jobs
      🟩 Test               Pass: 100%/4   | Total: 11m 23s | Avg:  2m 50s | Max:  2m 56s
    

👃 Inspect Changes

Modifications in project?

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

Modifications in project or dependencies?

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

🏃‍ Runner counts (total jobs: 30)

# Runner
17 linux-amd64-cpu16
6 linux-amd64-gpu-rtx2080-latest-1
4 linux-arm64-cpu16
2 windows-amd64-cpu16
1 linux-amd64-gpu-h100-latest-1

@davebayer
Copy link
Contributor Author

davebayer commented Jun 16, 2025

@wmaxey the devcontainers are missing the libcufilt.a library, can we add the cuda-cuxxfilt-MM-mm package to the devcontainer images?

Update: I've made a PR updating the devcontainers rapidsai/devcontainers#530

@ericniebler
Copy link
Contributor

Are we adding a dependency to cccl that may be problematic for some users? The issue with the devcontainers gives me pause.

@trxcllnt
Copy link
Member

trxcllnt commented Jun 16, 2025

I see cu++filt in the image:

$ docker run --rm rapidsai/devcontainers:25.08-cpp-gcc13-cuda12.9 apt-cache policy cuda-cuxxfilt-12-9
cuda-cuxxfilt-12-9:
  Installed: 12.9.19-1
  Candidate: 12.9.19-1
  Version table:
 *** 12.9.19-1 100
        100 /var/lib/dpkg/status

$ docker run --rm rapidsai/devcontainers:25.08-cpp-gcc13-cuda12.9 dpkg -L cuda-cuxxfilt-12-9
/.
/usr
/usr/local
/usr/local/cuda-12.9
/usr/local/cuda-12.9/bin
/usr/local/cuda-12.9/bin/cu++filt
/usr/local/cuda-12.9/targets
/usr/local/cuda-12.9/targets/x86_64-linux
/usr/local/cuda-12.9/targets/x86_64-linux/include
/usr/local/cuda-12.9/targets/x86_64-linux/include/nv_decode.h
/usr/local/cuda-12.9/targets/x86_64-linux/lib
/usr/local/cuda-12.9/targets/x86_64-linux/lib/libcufilt.a
/usr/share
/usr/share/doc
/usr/share/doc/cuda-cuxxfilt-12-9
/usr/share/doc/cuda-cuxxfilt-12-9/changelog.Debian.gz
/usr/share/doc/cuda-cuxxfilt-12-9/copyright
/usr/local/cuda-12.9/include
/usr/local/cuda-12.9/lib64

edit: rapidsai/devcontainers#530 (comment)

@davebayer
Copy link
Contributor Author

davebayer commented Jun 17, 2025

Are we adding a dependency to cccl that may be problematic for some users? The issue with the devcontainers gives me pause.

That is definitely a valid point. But on the other hand it will not cause problems unless the cuda::demangle function is used. We can add that to the documentation.

As @trxcllnt pointed out, the cuda-cuxxfilt-MM-m is a dependency of cuda-compiler-MM-m package which I believe should be always installed. The problem is that the devcontainer image filters out all static libraries.

The idea to provide this function came into my mind after reading #4849. If implemented, it will bring other dependencies to CCCL I believe.

The motivation is to provide e. g. cuda::kernel_ref::pretty_name() method, that would return the demangled name of the kernel.

I understand the concerns and would like to know other's opinions :)

Edit: I don't like that there is no CUDA::cufilt target in FindCUDAToolkit cmake module

@robertmaynard
Copy link
Contributor

Have you looked at using nvrtcGetTypeName? If you care about nvrtc compilation support using that built-in could make it easier.

@miscco
Copy link
Contributor

miscco commented Jun 18, 2025

/ok to test 553fb6b

@github-actions
Copy link
Contributor

🟨 CI finished in 9m 34s: Pass: 13%/30 | Total: 1h 52m | Avg: 3m 45s | Max: 7m 44s
  • 🟥 cudax: Pass: 0%/26 | Total: 1h 38m | Avg: 3m 46s | Max: 7m 44s

    🟥 cudacxx_family
      🟥 nvcc               Pass:   0%/26  | Total:  1h 38m | Avg:  3m 46s | Max:  7m 44s
    🟥 cpu
      🟥 amd64              Pass:   0%/22  | Total:  1h 23m | Avg:  3m 49s | Max:  7m 44s
      🟥 arm64              Pass:   0%/4   | Total: 14m 08s | Avg:  3m 32s | Max:  3m 48s
    🟥 ctk
      🟥 12.0               Pass:   0%/3   | Total: 14m 09s | Avg:  4m 43s | Max:  7m 19s
      🟥 12.9               Pass:   0%/23  | Total:  1h 23m | Avg:  3m 39s | Max:  7m 44s
    🟥 cudacxx
      🟥 nvcc12.0           Pass:   0%/3   | Total: 14m 09s | Avg:  4m 43s | Max:  7m 19s
      🟥 nvcc12.9           Pass:   0%/23  | Total:  1h 23m | Avg:  3m 39s | Max:  7m 44s
    🟥 cxx
      🟥 Clang14            Pass:   0%/2   | Total:  6m 55s | Avg:  3m 27s | Max:  3m 31s
      🟥 Clang15            Pass:   0%/1   | Total:  3m 40s | Avg:  3m 40s | Max:  3m 40s
      🟥 Clang16            Pass:   0%/1   | Total:  3m 41s | Avg:  3m 41s | Max:  3m 41s
      🟥 Clang17            Pass:   0%/1   | Total:  3m 44s | Avg:  3m 44s | Max:  3m 44s
      🟥 Clang18            Pass:   0%/1   | Total:  3m 34s | Avg:  3m 34s | Max:  3m 34s
      🟥 Clang19            Pass:   0%/4   | Total: 10m 24s | Avg:  2m 36s | Max:  3m 45s
      🟥 GCC10              Pass:   0%/2   | Total:  7m 16s | Avg:  3m 38s | Max:  3m 50s
      🟥 GCC11              Pass:   0%/1   | Total:  3m 59s | Avg:  3m 59s | Max:  3m 59s
      🟥 GCC12              Pass:   0%/1   | Total:  4m 14s | Avg:  4m 14s | Max:  4m 14s
      🟥 GCC13              Pass:   0%/8   | Total: 21m 17s | Avg:  2m 39s | Max:  4m 11s
      🟥 MSVC14.39          Pass:   0%/1   | Total:  7m 19s | Avg:  7m 19s | Max:  7m 19s
      🟥 MSVC14.43          Pass:   0%/1   | Total:  7m 44s | Avg:  7m 44s | Max:  7m 44s
      🟥 NVHPC25.5          Pass:   0%/2   | Total: 14m 19s | Avg:  7m 09s | Max:  7m 22s
    🟥 cxx_family
      🟥 Clang              Pass:   0%/10  | Total: 31m 58s | Avg:  3m 11s | Max:  3m 45s
      🟥 GCC                Pass:   0%/12  | Total: 36m 46s | Avg:  3m 03s | Max:  4m 14s
      🟥 MSVC               Pass:   0%/2   | Total: 15m 03s | Avg:  7m 31s | Max:  7m 44s
      🟥 NVHPC              Pass:   0%/2   | Total: 14m 19s | Avg:  7m 09s | Max:  7m 22s
    🟥 gpu
      🟥 h100               Pass:   0%/2   | Total:  3m 21s | Avg:  1m 40s | Max:  3m 21s
      🟥 rtx2080            Pass:   0%/24  | Total:  1h 34m | Avg:  3m 56s | Max:  7m 44s
    🟥 jobs
      🟥 Build              Pass:   0%/23  | Total:  1h 38m | Avg:  4m 15s | Max:  7m 44s
      🟥 Test               Pass:   0%/3  
    🟥 sm
      🟥 90                 Pass:   0%/3   | Total:  6m 28s | Avg:  2m 09s | Max:  3m 21s
      🟥 90a                Pass:   0%/1   | Total:  3m 09s | Avg:  3m 09s | Max:  3m 09s
    🟥 std
      🟥 17                 Pass:   0%/4   | Total: 17m 03s | Avg:  4m 15s | Max:  6m 57s
      🟥 20                 Pass:   0%/22  | Total:  1h 21m | Avg:  3m 41s | Max:  7m 44s
    
  • 🟩 packaging: Pass: 100%/4 | Total: 14m 28s | Avg: 3m 37s | Max: 3m 51s

    🟩 cpu
      🟩 amd64              Pass: 100%/4   | Total: 14m 28s | Avg:  3m 37s | Max:  3m 51s
    🟩 ctk
      🟩 12.0               Pass: 100%/2   | Total:  7m 06s | Avg:  3m 33s | Max:  3m 35s
      🟩 12.9               Pass: 100%/2   | Total:  7m 22s | Avg:  3m 41s | Max:  3m 51s
    🟩 cudacxx
      🟩 nvcc12.0           Pass: 100%/2   | Total:  7m 06s | Avg:  3m 33s | Max:  3m 35s
      🟩 nvcc12.9           Pass: 100%/2   | Total:  7m 22s | Avg:  3m 41s | Max:  3m 51s
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/4   | Total: 14m 28s | Avg:  3m 37s | Max:  3m 51s
    🟩 cxx
      🟩 Clang14            Pass: 100%/1   | Total:  3m 35s | Avg:  3m 35s | Max:  3m 35s
      🟩 Clang19            Pass: 100%/1   | Total:  3m 51s | Avg:  3m 51s | Max:  3m 51s
      🟩 GCC12              Pass: 100%/1   | Total:  3m 31s | Avg:  3m 31s | Max:  3m 31s
      🟩 GCC13              Pass: 100%/1   | Total:  3m 31s | Avg:  3m 31s | Max:  3m 31s
    🟩 cxx_family
      🟩 Clang              Pass: 100%/2   | Total:  7m 26s | Avg:  3m 43s | Max:  3m 51s
      🟩 GCC                Pass: 100%/2   | Total:  7m 02s | Avg:  3m 31s | Max:  3m 31s
    🟩 gpu
      🟩 rtx2080            Pass: 100%/4   | Total: 14m 28s | Avg:  3m 37s | Max:  3m 51s
    🟩 jobs
      🟩 Test               Pass: 100%/4   | Total: 14m 28s | Avg:  3m 37s | Max:  3m 51s
    

👃 Inspect Changes

Modifications in project?

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

Modifications in project or dependencies?

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

🏃‍ Runner counts (total jobs: 30)

# Runner
17 linux-amd64-cpu16
6 linux-amd64-gpu-rtx2080-latest-1
4 linux-arm64-cpu16
2 windows-amd64-cpu16
1 linux-amd64-gpu-h100-latest-1

@davebayer davebayer requested a review from a team as a code owner June 18, 2025 15:03
@davebayer davebayer requested a review from ericniebler June 18, 2025 15:03
@davebayer davebayer changed the title [CUDAX] Implement cudax::demangle Implement cuda::demangle Jun 18, 2025
@davebayer
Copy link
Contributor Author

Have you looked at using nvrtcGetTypeName? If you care about nvrtc compilation support using that built-in could make it easier.

Thanks for the suggestion! Actually, I have. The idea is to provide a simple mangled_name -> demangled_name utility. nvrtcGetTypeName converts std::type_info object or a type to the demangled name. __cu_demangle is more generic as it allows to demangle any string.

The nvrtcGetTypeName was not thread safe in the past and requires RTTI support. Also, when the cu++filt was introduced in CUDA 11.2, the description said:

A preview version of a new tool, cu++filt, is included in this release. NVCC produces mangled names, appearing in PTX files, which do not strictly follow the mangling conventions of the Itanium ABI--and are thus not properly demangled by standard tools such as binutils' c++filt. Specifically, this is true for PTX function parameters. The new cu++filt utility will demangle all of these correctly. As this is a preview version of the utility, feedback is invited. For more information, see cu++filt.

I am not sure whether it is still the case, but I would much prefer to use cu++filt :)

@miscco
Copy link
Contributor

miscco commented Jun 18, 2025

/ok to test 1fb0c8b

@github-actions
Copy link
Contributor

🟨 CI finished in 2h 25m: Pass: 96%/183 | Total: 4d 00h | Avg: 31m 38s | Max: 1h 36m | Hits: 64%/277261
  • 🟨 libcudacxx: Pass: 86%/45 | Total: 15h 00m | Avg: 20m 00s | Max: 1h 14m | Hits: 57%/114120

    🔍 cpu: amd64 🔍
      🔍 amd64              Pass:  86%/43  | Total: 14h 17m | Avg: 19m 56s | Max:  1h 14m | Hits:  58%/107171
      🟩 arm64              Pass: 100%/2   | Total: 43m 02s | Avg: 21m 31s | Max: 30m 07s | Hits:  53%/6949  
    🔍 cudacxx_family: nvcc 🔍
      🟩 ClangCUDA          Pass: 100%/2   | Total: 53m 44s | Avg: 26m 52s | Max: 27m 41s | Hits:  25%/6913  
      🔍 nvcc               Pass:  86%/43  | Total: 14h 06m | Avg: 19m 41s | Max:  1h 14m | Hits:  59%/107207
    🔍 gpu: rtx2080 🔍
      🟩 h100               Pass: 100%/2   | Total: 24m 49s | Avg: 12m 24s | Max: 19m 08s | Hits:  94%/3558  
      🔍 rtx2080            Pass:  86%/43  | Total: 14h 35m | Avg: 20m 21s | Max:  1h 14m | Hits:  56%/110562
    🔍 jobs: Build 🔍
      🔍 Build              Pass:  84%/39  | Total: 12h 00m | Avg: 18m 28s | Max: 37m 49s | Hits:  57%/114080
      🟩 NVRTC              Pass: 100%/2   | Total: 46m 48s | Avg: 23m 24s | Max: 26m 08s | Hits:  90%/40    
      🟩 Test               Pass: 100%/3   | Total:  2h 11m | Avg: 43m 49s | Max:  1h 14m
      🟩 VerifyCodegen      Pass: 100%/1   | Total:  1m 52s | Avg:  1m 52s | Max:  1m 52s
    🟨 cudacxx
      🟩 ClangCUDA19        Pass: 100%/2   | Total: 53m 44s | Avg: 26m 52s | Max: 27m 41s | Hits:  25%/6913  
      🟨 nvcc12.0           Pass:  80%/5   | Total:  1h 17m | Avg: 15m 24s | Max: 28m 02s | Hits:  62%/13720 
      🟨 nvcc12.9           Pass:  86%/38  | Total: 12h 49m | Avg: 20m 15s | Max:  1h 14m | Hits:  59%/93487 
    🟨 cxx
      🟩 Clang14            Pass: 100%/4   | Total:  1h 08m | Avg: 17m 10s | Max: 29m 01s | Hits:  62%/13782 
      🟩 Clang15            Pass: 100%/2   | Total: 37m 46s | Avg: 18m 53s | Max: 31m 08s | Hits:  62%/6909  
      🟩 Clang16            Pass: 100%/2   | Total:  1h 03m | Avg: 31m 32s | Max: 31m 56s | Hits:  29%/6909  
      🟩 Clang17            Pass: 100%/2   | Total: 46m 25s | Avg: 23m 12s | Max: 33m 19s | Hits:  50%/6909  
      🟩 Clang18            Pass: 100%/2   | Total: 45m 35s | Avg: 22m 47s | Max: 28m 31s | Hits:  49%/6909  
      🟩 Clang19            Pass: 100%/6   | Total:  2h 55m | Avg: 29m 11s | Max:  1h 14m | Hits:  52%/17296 
      🟩 GCC7               Pass: 100%/2   | Total: 31m 37s | Avg: 15m 48s | Max: 25m 27s | Hits:  62%/6845  
      🟩 GCC8               Pass: 100%/1   | Total: 27m 01s | Avg: 27m 01s | Max: 27m 01s | Hits:  29%/3433  
      🟩 GCC9               Pass: 100%/2   | Total: 11m 07s | Avg:  5m 33s | Max:  6m 10s | Hits:  95%/6857  
      🟩 GCC10              Pass: 100%/2   | Total: 17m 46s | Avg:  8m 53s | Max: 10m 58s | Hits:  93%/6911  
      🟩 GCC11              Pass: 100%/2   | Total: 37m 37s | Avg: 18m 48s | Max: 31m 36s | Hits:  61%/6907  
      🟩 GCC12              Pass: 100%/2   | Total:  1h 05m | Avg: 32m 44s | Max: 35m 24s | Hits:  29%/6911  
      🟩 GCC13              Pass: 100%/10  | Total:  3h 27m | Avg: 20m 45s | Max: 37m 49s | Hits:  60%/17542 
      🟥 MSVC14.29          Pass:   0%/2   | Total: 26m 20s | Avg: 13m 10s | Max: 13m 24s
      🟥 MSVC14.43          Pass:   0%/2   | Total: 26m 42s | Avg: 13m 21s | Max: 13m 21s
      🟥 NVHPC25.5          Pass:   0%/2   | Total: 12m 42s | Avg:  6m 21s | Max:  6m 21s
    🟨 cxx_family
      🟩 Clang              Pass: 100%/18  | Total:  7h 16m | Avg: 24m 15s | Max:  1h 14m | Hits:  52%/58714 
      🟩 GCC                Pass: 100%/21  | Total:  6h 38m | Avg: 18m 57s | Max: 37m 49s | Hits:  63%/55406 
      🟥 MSVC               Pass:   0%/4   | Total: 53m 02s | Avg: 13m 15s | Max: 13m 24s
      🟥 NVHPC              Pass:   0%/2   | Total: 12m 42s | Avg:  6m 21s | Max:  6m 21s
    🟨 ctk
      🟨 12.0               Pass:  80%/5   | Total:  1h 17m | Avg: 15m 24s | Max: 28m 02s | Hits:  62%/13720 
      🟨 12.9               Pass:  87%/40  | Total: 13h 43m | Avg: 20m 35s | Max:  1h 14m | Hits:  57%/100400
    🟩 sm
      🟩 75                 Pass: 100%/2   | Total: 46m 48s | Avg: 23m 24s | Max: 26m 08s | Hits:  90%/40    
      🟩 90                 Pass: 100%/2   | Total: 24m 49s | Avg: 12m 24s | Max: 19m 08s | Hits:  94%/3558  
      🟩 90;90a;100         Pass: 100%/1   | Total: 37m 49s | Avg: 37m 49s | Max: 37m 49s | Hits:  28%/3558  
    🟨 std
      🟨 17                 Pass:  81%/22  | Total:  6h 12m | Avg: 16m 55s | Max: 31m 56s | Hits:  60%/58362 
      🟨 20                 Pass:  90%/22  | Total:  8h 46m | Avg: 23m 54s | Max:  1h 14m | Hits:  55%/55758 
    
  • 🟩 cub: Pass: 100%/47 | Total: 1d 23h | Avg: 1h 00m | Max: 1h 36m | Hits: 44%/57682

    🟩 cpu
      🟩 amd64              Pass: 100%/45  | Total:  1d 21h | Avg:  1h 00m | Max:  1h 36m | Hits:  45%/55172 
      🟩 arm64              Pass: 100%/2   | Total:  2h 04m | Avg:  1h 02m | Max:  1h 06m | Hits:  33%/2510  
    🟩 ctk
      🟩 12.0               Pass: 100%/5   | Total:  5h 25m | Avg:  1h 05m | Max:  1h 24m | Hits:  32%/6091  
      🟩 12.9               Pass: 100%/42  | Total:  1d 17h | Avg: 59m 46s | Max:  1h 36m | Hits:  45%/51591 
    🟩 cudacxx
      🟩 ClangCUDA19        Pass: 100%/2   | Total:  1h 11m | Avg: 35m 41s | Max: 37m 18s | Hits:  33%/2161  
      🟩 nvcc12.0           Pass: 100%/5   | Total:  5h 25m | Avg:  1h 05m | Max:  1h 24m | Hits:  32%/6091  
      🟩 nvcc12.9           Pass: 100%/40  | Total:  1d 16h | Avg:  1h 00m | Max:  1h 36m | Hits:  46%/49430 
    🟩 cudacxx_family
      🟩 ClangCUDA          Pass: 100%/2   | Total:  1h 11m | Avg: 35m 41s | Max: 37m 18s | Hits:  33%/2161  
      🟩 nvcc               Pass: 100%/45  | Total:  1d 22h | Avg:  1h 01m | Max:  1h 36m | Hits:  44%/55521 
    🟩 cxx
      🟩 Clang14            Pass: 100%/4   | Total:  3h 54m | Avg: 58m 34s | Max:  1h 02m | Hits:  33%/5022  
      🟩 Clang15            Pass: 100%/2   | Total:  2h 12m | Avg:  1h 06m | Max:  1h 11m | Hits:  33%/2507  
      🟩 Clang16            Pass: 100%/2   | Total:  2h 09m | Avg:  1h 04m | Max:  1h 07m | Hits:  33%/2507  
      🟩 Clang17            Pass: 100%/2   | Total:  2h 04m | Avg:  1h 02m | Max:  1h 06m | Hits:  33%/2507  
      🟩 Clang18            Pass: 100%/2   | Total:  2h 08m | Avg:  1h 04m | Max:  1h 08m | Hits:  33%/2507  
      🟩 Clang19            Pass: 100%/7   | Total:  5h 16m | Avg: 45m 15s | Max:  1h 06m | Hits:  53%/8430  
      🟩 GCC7               Pass: 100%/2   | Total:  2h 09m | Avg:  1h 04m | Max:  1h 06m | Hits:  32%/2510  
      🟩 GCC8               Pass: 100%/1   | Total:  1h 12m | Avg:  1h 12m | Max:  1h 12m | Hits:  32%/1255  
      🟩 GCC9               Pass: 100%/2   | Total:  2h 13m | Avg:  1h 06m | Max:  1h 11m | Hits:  32%/2510  
      🟩 GCC10              Pass: 100%/2   | Total:  2h 08m | Avg:  1h 04m | Max:  1h 04m | Hits:  32%/2511  
      🟩 GCC11              Pass: 100%/2   | Total:  2h 15m | Avg:  1h 07m | Max:  1h 11m | Hits:  32%/2507  
      🟩 GCC12              Pass: 100%/2   | Total:  2h 22m | Avg:  1h 11m | Max:  1h 16m | Hits:  32%/2507  
      🟩 GCC13              Pass: 100%/11  | Total:  8h 48m | Avg: 48m 05s | Max:  1h 14m | Hits:  69%/13813 
      🟩 MSVC14.29          Pass: 100%/2   | Total:  2h 51m | Avg:  1h 25m | Max:  1h 26m | Hits:  32%/2140  
      🟩 MSVC14.43          Pass: 100%/2   | Total:  2h 57m | Avg:  1h 28m | Max:  1h 36m | Hits:  32%/2140  
      🟩 NVHPC25.5          Pass: 100%/2   | Total:  2h 29m | Avg:  1h 14m | Max:  1h 16m | Hits:  30%/2309  
    🟩 cxx_family
      🟩 Clang              Pass: 100%/19  | Total: 17h 45m | Avg: 56m 06s | Max:  1h 11m | Hits:  40%/23480 
      🟩 GCC                Pass: 100%/22  | Total: 21h 11m | Avg: 57m 47s | Max:  1h 16m | Hits:  51%/27613 
      🟩 MSVC               Pass: 100%/4   | Total:  5h 48m | Avg:  1h 27m | Max:  1h 36m | Hits:  32%/4280  
      🟩 NVHPC              Pass: 100%/2   | Total:  2h 29m | Avg:  1h 14m | Max:  1h 16m | Hits:  30%/2309  
    🟩 gpu
      🟩 h100               Pass: 100%/3   | Total:  1h 42m | Avg: 34m 07s | Max: 35m 57s | Hits:  77%/3768  
      🟩 rtx2080            Pass: 100%/36  | Total:  1d 15h | Avg:  1h 06m | Max:  1h 36m | Hits:  32%/43872 
      🟩 rtxa6000           Pass: 100%/8   | Total:  5h 51m | Avg: 43m 54s | Max:  1h 14m | Hits:  83%/10042 
    🟩 jobs
      🟩 Build              Pass: 100%/39  | Total:  1d 18h | Avg:  1h 05m | Max:  1h 36m | Hits:  32%/47638 
      🟩 DeviceLaunch       Pass: 100%/1   | Total: 38m 18s | Avg: 38m 18s | Max: 38m 18s | Hits:  99%/1256  
      🟩 GraphCapture       Pass: 100%/1   | Total: 30m 38s | Avg: 30m 38s | Max: 30m 38s | Hits:  99%/1256  
      🟩 HostLaunch         Pass: 100%/3   | Total:  1h 50m | Avg: 36m 47s | Max: 40m 50s | Hits:  99%/3766  
      🟩 TestGPU            Pass: 100%/3   | Total:  1h 38m | Avg: 32m 45s | Max: 39m 36s | Hits:  99%/3766  
    🟩 sm
      🟩 90                 Pass: 100%/3   | Total:  1h 42m | Avg: 34m 07s | Max: 35m 57s | Hits:  77%/3768  
      🟩 90;90a;100         Pass: 100%/1   | Total:  1h 05m | Avg:  1h 05m | Max:  1h 05m | Hits:  32%/1256  
    🟩 std
      🟩 17                 Pass: 100%/21  | Total: 23h 15m | Avg:  1h 06m | Max:  1h 26m | Hits:  32%/25508 
      🟩 20                 Pass: 100%/26  | Total:  1d 00h | Avg: 55m 24s | Max:  1h 36m | Hits:  53%/32174 
    
  • 🟩 thrust: Pass: 100%/47 | Total: 1d 04h | Avg: 36m 51s | Max: 1h 13m | Hits: 80%/89895

    🟩 cmake_options
      🟩 -DTHRUST_DISPATCH_TYPE=Force32bit Pass: 100%/2   | Total: 50m 11s | Avg: 25m 05s | Max: 35m 54s | Hits:  89%/3828  
    🟩 cpu
      🟩 amd64              Pass: 100%/45  | Total:  1d 03h | Avg: 37m 00s | Max:  1h 13m | Hits:  80%/86068 
      🟩 arm64              Pass: 100%/2   | Total:  1h 07m | Avg: 33m 33s | Max: 35m 43s | Hits:  78%/3827  
    🟩 ctk
      🟩 12.0               Pass: 100%/5   | Total:  3h 22m | Avg: 40m 30s | Max:  1h 02m | Hits:  76%/9560  
      🟩 12.9               Pass: 100%/42  | Total:  1d 01h | Avg: 36m 25s | Max:  1h 13m | Hits:  80%/80335 
    🟩 cudacxx
      🟩 ClangCUDA19        Pass: 100%/2   | Total: 56m 21s | Avg: 28m 10s | Max: 30m 02s | Hits:  78%/3826  
      🟩 nvcc12.0           Pass: 100%/5   | Total:  3h 22m | Avg: 40m 30s | Max:  1h 02m | Hits:  76%/9560  
      🟩 nvcc12.9           Pass: 100%/40  | Total:  1d 00h | Avg: 36m 50s | Max:  1h 13m | Hits:  80%/76509 
    🟩 cudacxx_family
      🟩 ClangCUDA          Pass: 100%/2   | Total: 56m 21s | Avg: 28m 10s | Max: 30m 02s | Hits:  78%/3826  
      🟩 nvcc               Pass: 100%/45  | Total:  1d 03h | Avg: 37m 14s | Max:  1h 13m | Hits:  80%/86069 
    🟩 cxx
      🟩 Clang14            Pass: 100%/4   | Total:  2h 15m | Avg: 33m 46s | Max: 36m 51s | Hits:  78%/7652  
      🟩 Clang15            Pass: 100%/2   | Total:  1h 12m | Avg: 36m 05s | Max: 37m 33s | Hits:  78%/3826  
      🟩 Clang16            Pass: 100%/2   | Total:  1h 10m | Avg: 35m 29s | Max: 36m 04s | Hits:  78%/3826  
      🟩 Clang17            Pass: 100%/2   | Total:  1h 15m | Avg: 37m 47s | Max: 39m 44s | Hits:  78%/3826  
      🟩 Clang18            Pass: 100%/2   | Total:  1h 08m | Avg: 34m 18s | Max: 34m 41s | Hits:  78%/3826  
      🟩 Clang19            Pass: 100%/7   | Total:  2h 55m | Avg: 25m 05s | Max: 36m 01s | Hits:  84%/13391 
      🟩 GCC7               Pass: 100%/2   | Total:  1h 14m | Avg: 37m 15s | Max: 39m 17s | Hits:  78%/3828  
      🟩 GCC8               Pass: 100%/1   | Total: 38m 24s | Avg: 38m 24s | Max: 38m 24s | Hits:  78%/1914  
      🟩 GCC9               Pass: 100%/2   | Total:  1h 23m | Avg: 41m 47s | Max: 43m 48s | Hits:  78%/3828  
      🟩 GCC10              Pass: 100%/2   | Total:  1h 17m | Avg: 38m 38s | Max: 40m 57s | Hits:  78%/3828  
      🟩 GCC11              Pass: 100%/2   | Total:  1h 14m | Avg: 37m 07s | Max: 38m 23s | Hits:  78%/3828  
      🟩 GCC12              Pass: 100%/2   | Total:  1h 19m | Avg: 39m 33s | Max: 40m 13s | Hits:  78%/3828  
      🟩 GCC13              Pass: 100%/10  | Total:  4h 25m | Avg: 26m 30s | Max: 40m 15s | Hits:  87%/19140 
      🟩 MSVC14.29          Pass: 100%/2   | Total:  2h 10m | Avg:  1h 05m | Max:  1h 07m | Hits:  67%/3812  
      🟩 MSVC14.43          Pass: 100%/3   | Total:  2h 56m | Avg: 58m 40s | Max:  1h 13m | Hits:  78%/5718  
      🟩 NVHPC25.5          Pass: 100%/2   | Total:  2h 15m | Avg:  1h 07m | Max:  1h 09m | Hits:  67%/3824  
    🟩 cxx_family
      🟩 Clang              Pass: 100%/19  | Total:  9h 58m | Avg: 31m 28s | Max: 39m 44s | Hits:  80%/36347 
      🟩 GCC                Pass: 100%/21  | Total: 11h 32m | Avg: 32m 57s | Max: 43m 48s | Hits:  82%/40194 
      🟩 MSVC               Pass: 100%/5   | Total:  5h 06m | Avg:  1h 01m | Max:  1h 13m | Hits:  73%/9530  
      🟩 NVHPC              Pass: 100%/2   | Total:  2h 15m | Avg:  1h 07m | Max:  1h 09m | Hits:  67%/3824  
    🟩 gpu
      🟩 h100               Pass: 100%/2   | Total: 36m 41s | Avg: 18m 20s | Max: 21m 08s | Hits:  89%/3828  
      🟩 rtx2080            Pass: 100%/35  | Total: 23h 38m | Avg: 40m 32s | Max:  1h 09m | Hits:  76%/66946 
      🟩 rtx4090            Pass: 100%/10  | Total:  4h 36m | Avg: 27m 41s | Max:  1h 13m | Hits:  90%/19121 
    🟩 jobs
      🟩 Build              Pass: 100%/40  | Total:  1d 03h | Avg: 40m 37s | Max:  1h 13m | Hits:  76%/76507 
      🟩 TestCPU            Pass: 100%/3   | Total: 52m 35s | Avg: 17m 31s | Max: 35m 10s | Hits:  99%/5733  
      🟩 TestGPU            Pass: 100%/4   | Total: 54m 44s | Avg: 13m 41s | Max: 15m 33s | Hits:  99%/7655  
    🟩 sm
      🟩 90                 Pass: 100%/2   | Total: 36m 41s | Avg: 18m 20s | Max: 21m 08s | Hits:  89%/3828  
      🟩 90;90a;100         Pass: 100%/1   | Total: 38m 24s | Avg: 38m 24s | Max: 38m 24s | Hits:  78%/1914  
    🟩 std
      🟩 17                 Pass: 100%/21  | Total: 14h 51m | Avg: 42m 26s | Max:  1h 07m | Hits:  76%/40160 
      🟩 20                 Pass: 100%/24  | Total: 13h 10m | Avg: 32m 57s | Max:  1h 13m | Hits:  82%/45907 
    
  • 🟩 cudax: Pass: 100%/26 | Total: 2h 59m | Avg: 6m 53s | Max: 14m 32s | Hits: 91%/15234

    🟩 cpu
      🟩 amd64              Pass: 100%/22  | Total:  2h 38m | Avg:  7m 12s | Max: 14m 32s | Hits:  91%/12798 
      🟩 arm64              Pass: 100%/4   | Total: 20m 50s | Avg:  5m 12s | Max:  5m 28s | Hits:  91%/2436  
    🟩 ctk
      🟩 12.0               Pass: 100%/3   | Total: 24m 02s | Avg:  8m 00s | Max: 14m 32s | Hits:  89%/1526  
      🟩 12.9               Pass: 100%/23  | Total:  2h 35m | Avg:  6m 45s | Max: 14m 09s | Hits:  92%/13708 
    🟩 cudacxx
      🟩 nvcc12.0           Pass: 100%/3   | Total: 24m 02s | Avg:  8m 00s | Max: 14m 32s | Hits:  89%/1526  
      🟩 nvcc12.9           Pass: 100%/23  | Total:  2h 35m | Avg:  6m 45s | Max: 14m 09s | Hits:  92%/13708 
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/26  | Total:  2h 59m | Avg:  6m 53s | Max: 14m 32s | Hits:  91%/15234 
    🟩 cxx
      🟩 Clang14            Pass: 100%/2   | Total:  9m 46s | Avg:  4m 53s | Max:  5m 22s | Hits:  91%/1220  
      🟩 Clang15            Pass: 100%/1   | Total:  5m 21s | Avg:  5m 21s | Max:  5m 21s | Hits:  91%/609   
      🟩 Clang16            Pass: 100%/1   | Total:  5m 45s | Avg:  5m 45s | Max:  5m 45s | Hits:  91%/609   
      🟩 Clang17            Pass: 100%/1   | Total:  5m 11s | Avg:  5m 11s | Max:  5m 11s | Hits:  91%/609   
      🟩 Clang18            Pass: 100%/1   | Total:  5m 26s | Avg:  5m 26s | Max:  5m 26s | Hits:  91%/609   
      🟩 Clang19            Pass: 100%/4   | Total: 23m 06s | Avg:  5m 46s | Max:  8m 04s | Hits:  93%/2436  
      🟩 GCC10              Pass: 100%/2   | Total: 11m 13s | Avg:  5m 36s | Max:  6m 07s | Hits:  91%/1220  
      🟩 GCC11              Pass: 100%/1   | Total:  5m 48s | Avg:  5m 48s | Max:  5m 48s | Hits:  91%/609   
      🟩 GCC12              Pass: 100%/1   | Total:  6m 01s | Avg:  6m 01s | Max:  6m 01s | Hits:  91%/609   
      🟩 GCC13              Pass: 100%/8   | Total: 53m 06s | Avg:  6m 38s | Max: 12m 16s | Hits:  93%/4872  
      🟩 MSVC14.39          Pass: 100%/1   | Total: 14m 32s | Avg: 14m 32s | Max: 14m 32s | Hits:  78%/308   
      🟩 MSVC14.43          Pass: 100%/1   | Total: 14m 09s | Avg: 14m 09s | Max: 14m 09s | Hits:  78%/310   
      🟩 NVHPC25.5          Pass: 100%/2   | Total: 19m 55s | Avg:  9m 57s | Max: 10m 14s | Hits:  88%/1214  
    🟩 cxx_family
      🟩 Clang              Pass: 100%/10  | Total: 54m 35s | Avg:  5m 27s | Max:  8m 04s | Hits:  92%/6092  
      🟩 GCC                Pass: 100%/12  | Total:  1h 16m | Avg:  6m 20s | Max: 12m 16s | Hits:  92%/7310  
      🟩 MSVC               Pass: 100%/2   | Total: 28m 41s | Avg: 14m 20s | Max: 14m 32s | Hits:  78%/618   
      🟩 NVHPC              Pass: 100%/2   | Total: 19m 55s | Avg:  9m 57s | Max: 10m 14s | Hits:  88%/1214  
    🟩 gpu
      🟩 h100               Pass: 100%/2   | Total: 15m 01s | Avg:  7m 30s | Max: 10m 20s | Hits:  95%/1218  
      🟩 rtx2080            Pass: 100%/24  | Total:  2h 44m | Avg:  6m 50s | Max: 14m 32s | Hits:  91%/14016 
    🟩 jobs
      🟩 Build              Pass: 100%/23  | Total:  2h 28m | Avg:  6m 27s | Max: 14m 32s | Hits:  90%/13407 
      🟩 Test               Pass: 100%/3   | Total: 30m 40s | Avg: 10m 13s | Max: 12m 16s | Hits:  99%/1827  
    🟩 sm
      🟩 90                 Pass: 100%/3   | Total: 19m 28s | Avg:  6m 29s | Max: 10m 20s | Hits:  94%/1827  
      🟩 90a                Pass: 100%/1   | Total:  4m 42s | Avg:  4m 42s | Max:  4m 42s | Hits:  91%/609   
    🟩 std
      🟩 17                 Pass: 100%/4   | Total: 25m 05s | Avg:  6m 16s | Max: 10m 14s | Hits:  90%/2434  
      🟩 20                 Pass: 100%/22  | Total:  2h 34m | Avg:  7m 00s | Max: 14m 32s | Hits:  91%/12800 
    
  • 🟩 python: Pass: 100%/8 | Total: 1h 38m | Avg: 12m 21s | Max: 19m 49s

    🟩 cpu
      🟩 amd64              Pass: 100%/8   | Total:  1h 38m | Avg: 12m 21s | Max: 19m 49s
    🟩 ctk
      🟩 12.9               Pass: 100%/8   | Total:  1h 38m | Avg: 12m 21s | Max: 19m 49s
    🟩 cudacxx
      🟩 nvcc12.9           Pass: 100%/8   | Total:  1h 38m | Avg: 12m 21s | Max: 19m 49s
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/8   | Total:  1h 38m | Avg: 12m 21s | Max: 19m 49s
    🟩 cxx
      🟩 GCC13              Pass: 100%/8   | Total:  1h 38m | Avg: 12m 21s | Max: 19m 49s
    🟩 cxx_family
      🟩 GCC                Pass: 100%/8   | Total:  1h 38m | Avg: 12m 21s | Max: 19m 49s
    🟩 gpu
      🟩 rtxa6000           Pass: 100%/8   | Total:  1h 38m | Avg: 12m 21s | Max: 19m 49s
    🟩 jobs
      🟩 Build cuda.cccl    Pass: 100%/2   | Total: 19m 16s | Avg:  9m 38s | Max:  9m 44s
      🟩 Test cuda.cccl.cooperative Pass: 100%/2   | Total: 37m 30s | Avg: 18m 45s | Max: 19m 49s
      🟩 Test cuda.cccl.headers Pass: 100%/2   | Total:  8m 17s | Avg:  4m 08s | Max:  4m 38s
      🟩 Test cuda.cccl.parallel Pass: 100%/2   | Total: 33m 51s | Avg: 16m 55s | Max: 17m 03s
    🟩 py_version
      🟩 3.10               Pass: 100%/4   | Total: 49m 06s | Avg: 12m 16s | Max: 17m 41s
      🟩 3.13               Pass: 100%/4   | Total: 49m 48s | Avg: 12m 27s | Max: 19m 49s
    
  • 🟩 packaging: Pass: 100%/4 | Total: 13m 07s | Avg: 3m 16s | Max: 3m 20s

    🟩 cpu
      🟩 amd64              Pass: 100%/4   | Total: 13m 07s | Avg:  3m 16s | Max:  3m 20s
    🟩 ctk
      🟩 12.0               Pass: 100%/2   | Total:  6m 33s | Avg:  3m 16s | Max:  3m 17s
      🟩 12.9               Pass: 100%/2   | Total:  6m 34s | Avg:  3m 17s | Max:  3m 20s
    🟩 cudacxx
      🟩 nvcc12.0           Pass: 100%/2   | Total:  6m 33s | Avg:  3m 16s | Max:  3m 17s
      🟩 nvcc12.9           Pass: 100%/2   | Total:  6m 34s | Avg:  3m 17s | Max:  3m 20s
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/4   | Total: 13m 07s | Avg:  3m 16s | Max:  3m 20s
    🟩 cxx
      🟩 Clang14            Pass: 100%/1   | Total:  3m 17s | Avg:  3m 17s | Max:  3m 17s
      🟩 Clang19            Pass: 100%/1   | Total:  3m 20s | Avg:  3m 20s | Max:  3m 20s
      🟩 GCC12              Pass: 100%/1   | Total:  3m 16s | Avg:  3m 16s | Max:  3m 16s
      🟩 GCC13              Pass: 100%/1   | Total:  3m 14s | Avg:  3m 14s | Max:  3m 14s
    🟩 cxx_family
      🟩 Clang              Pass: 100%/2   | Total:  6m 37s | Avg:  3m 18s | Max:  3m 20s
      🟩 GCC                Pass: 100%/2   | Total:  6m 30s | Avg:  3m 15s | Max:  3m 16s
    🟩 gpu
      🟩 rtx2080            Pass: 100%/4   | Total: 13m 07s | Avg:  3m 16s | Max:  3m 20s
    🟩 jobs
      🟩 Test               Pass: 100%/4   | Total: 13m 07s | Avg:  3m 16s | Max:  3m 20s
    
  • 🟩 stdpar: Pass: 100%/4 | Total: 15m 59s | Avg: 3m 59s | Max: 4m 10s

    🟩 cpu
      🟩 amd64              Pass: 100%/2   | Total:  7m 42s | Avg:  3m 51s | Max:  3m 53s
      🟩 arm64              Pass: 100%/2   | Total:  8m 17s | Avg:  4m 08s | Max:  4m 10s
    🟩 ctk
      🟩 12.9               Pass: 100%/4   | Total: 15m 59s | Avg:  3m 59s | Max:  4m 10s
    🟩 cudacxx
      🟩 nvcc12.9           Pass: 100%/4   | Total: 15m 59s | Avg:  3m 59s | Max:  4m 10s
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/4   | Total: 15m 59s | Avg:  3m 59s | Max:  4m 10s
    🟩 cxx
      🟩 NVHPC25.5          Pass: 100%/4   | Total: 15m 59s | Avg:  3m 59s | Max:  4m 10s
    🟩 cxx_family
      🟩 NVHPC              Pass: 100%/4   | Total: 15m 59s | Avg:  3m 59s | Max:  4m 10s
    🟩 gpu
      🟩 rtx2080            Pass: 100%/4   | Total: 15m 59s | Avg:  3m 59s | Max:  4m 10s
    🟩 jobs
      🟩 Build              Pass: 100%/4   | Total: 15m 59s | Avg:  3m 59s | Max:  4m 10s
    🟩 std
      🟩 17                 Pass: 100%/2   | Total:  7m 59s | Avg:  3m 59s | Max:  4m 10s
      🟩 20                 Pass: 100%/2   | Total:  8m 00s | Avg:  4m 00s | Max:  4m 07s
    
  • 🟩 cccl_c_parallel: Pass: 100%/2 | Total: 12m 57s | Avg: 6m 28s | Max: 10m 30s | Hits: 96%/330

    🟩 cpu
      🟩 amd64              Pass: 100%/2   | Total: 12m 57s | Avg:  6m 28s | Max: 10m 30s | Hits:  96%/330   
    🟩 ctk
      🟩 12.9               Pass: 100%/2   | Total: 12m 57s | Avg:  6m 28s | Max: 10m 30s | Hits:  96%/330   
    🟩 cudacxx
      🟩 nvcc12.9           Pass: 100%/2   | Total: 12m 57s | Avg:  6m 28s | Max: 10m 30s | Hits:  96%/330   
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/2   | Total: 12m 57s | Avg:  6m 28s | Max: 10m 30s | Hits:  96%/330   
    🟩 cxx
      🟩 GCC13              Pass: 100%/2   | Total: 12m 57s | Avg:  6m 28s | Max: 10m 30s | Hits:  96%/330   
    🟩 cxx_family
      🟩 GCC                Pass: 100%/2   | Total: 12m 57s | Avg:  6m 28s | Max: 10m 30s | Hits:  96%/330   
    🟩 gpu
      🟩 rtx2080            Pass: 100%/2   | Total: 12m 57s | Avg:  6m 28s | Max: 10m 30s | Hits:  96%/330   
    🟩 jobs
      🟩 Build              Pass: 100%/1   | Total:  2m 27s | Avg:  2m 27s | Max:  2m 27s | Hits:  93%/165   
      🟩 Test               Pass: 100%/1   | Total: 10m 30s | Avg: 10m 30s | Max: 10m 30s | Hits:  98%/165   
    

👃 Inspect Changes

Modifications in project?

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

Modifications in project or dependencies?

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

🏃‍ Runner counts (total jobs: 183)

# Runner
125 linux-amd64-cpu16
15 windows-amd64-cpu16
12 linux-arm64-cpu16
12 linux-amd64-gpu-rtxa6000-latest-1
11 linux-amd64-gpu-rtx2080-latest-1
5 linux-amd64-gpu-h100-latest-1
3 linux-amd64-gpu-rtx4090-latest-1

@miscco
Copy link
Contributor

miscco commented Jun 25, 2025

/ok to test dc3e643

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@davebayer davebayer requested a review from miscco October 27, 2025 09:35
@github-actions

This comment has been minimized.

@jrhemstad
Copy link
Collaborator

I'd like to see us add a failure mode test that emulates an environment where libcufilt.a isn't present and verifies it fails in the way we expect it to fail.

Copy link
Contributor

@alliepiper alliepiper left a comment

Choose a reason for hiding this comment

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

CMake approved pending small addition.

@davebayer
Copy link
Contributor Author

I'd like to see us add a failure mode test that emulates an environment where libcufilt.a isn't present and verifies it fails in the way we expect it to fail.

Added :)

message(FATAL_ERROR "cudax: cu++filt library (libcufilt.a) not found.")
endif()

foreach(cn_target IN LISTS cudax_TARGETS)
Copy link
Contributor

Choose a reason for hiding this comment

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

Minor: replace cn_target with cudax_target in this new code. I'm making this change for existing code in #6346 -- cudax used to be called "cuda next" and this prefix is a legacy artifact that no longer makes sense.

set(test_target ${config_prefix}.test.binutils_demangle_no_nvdecode_fail)
add_test(NAME ${test_target}
COMMAND ${CMAKE_CTEST_COMMAND}
--build-and-test
Copy link
Contributor

@alliepiper alliepiper Oct 27, 2025

Choose a reason for hiding this comment

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

--build-and-test isn't what we want here, it's used for configuring/building a project, not an individual translation unit.

Check out what we do for CUB "fail" tests:

https://github.com/NVIDIA/cccl/blob/main/cub/test/CMakeLists.txt#L174-L199

Basically:

  1. Add the test executable as normal.
  2. Exclude from the all build target:
      set_target_properties(${test_target} PROPERTIES EXCLUDE_FROM_ALL true
                                           EXCLUDE_FROM_DEFAULT_BUILD true)
  1. Add a test that explicitly invokes the build step for the excluded target:
      add_test(NAME ${test_target}
               COMMAND ${CMAKE_COMMAND} --build "${CMAKE_BINARY_DIR}"
                                        --target ${test_target}
                                        --config $<CONFIGURATION>)
  1. Keep the WILL_FAIL property on the test:
set_tests_properties(${test_target} PROPERTIES WILL_FAIL true)

...or for more robustness, instead check for output that confirms the expected failure mode, if a cross-platform regex exists for this:

set_tests_properties(${test_target} PROPERTIES PASS_REGULAR_EXPRESSION "<cross-platform error regex>")

(Remove the WILL_FAIL prop if the regex approach is used)

Copy link
Contributor

Choose a reason for hiding this comment

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

For example, the regex approach is preferred because the test is currently passing without actually testing what it's supposed to:

    Start 19: cudax.cpp17.test.binutils_demangle_no_nvdecode_fail

19: Test command: /usr/bin/ctest "--build-and-test" "/home/coder/cccl/cudax/test/binutils/binutils_demangle_no_nvdecode_fail" "/home/coder/cccl/build/preset-latest/cudax/test/binutils/binutils_demangle_no_nvdecode_fail" "--build-generator" "Ninja" "--test-command" "/usr/bin/ctest"
19: Working Directory: /home/coder/cccl/build/preset-latest/cudax/test/binutils
19: Test timeout computed to be: 1500
19: Internal cmake changing into directory: /home/coder/cccl/build/preset-latest/cudax/test/binutils/binutils_demangle_no_nvdecode_fail
19: ======== CMake output     ======
19: CMake Error: The source directory "/home/coder/cccl/cudax/test/binutils/binutils_demangle_no_nvdecode_fail" does not exist.
19: Specify --help for usage, or press the help button on the CMake GUI.
19: ======== End CMake output ======
19: Error: cmake execution failed
1/1 Test #19: cudax.cpp17.test.binutils_demangle_no_nvdecode_fail ...   Passed    0.01 sec

The following tests passed:
        cudax.cpp17.test.binutils_demangle_no_nvdecode_fail

Copy link
Contributor

Choose a reason for hiding this comment

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

See #6434. Repeat the steps for creating the executable target like you did for (2), but pass it to cccl_add_xfail_compile_target_test(${target_name} [REGEX <regex>) instead of doing add_test / set_test_properties.

@github-actions
Copy link
Contributor

🥳 CI Workflow Results

🟩 Finished in 37m 40s: Pass: 100%/42 | Total: 2h 11m | Max: 11m 00s | Hits: 99%/21477

See results here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

8 participants