Skip to content

Conversation

@rwgk
Copy link
Contributor

@rwgk rwgk commented May 19, 2025

Description

Closes #3979

@rwgk rwgk requested review from a team as code owners May 19, 2025 03:53
@rwgk rwgk requested a review from miscco May 19, 2025 03:53
@rwgk rwgk requested a review from gevtushenko May 19, 2025 03:53
@github-project-automation github-project-automation bot moved this to Todo in CCCL May 19, 2025
@cccl-authenticator-app cccl-authenticator-app bot moved this from Todo to In Review in CCCL May 19, 2025
@rwgk
Copy link
Contributor Author

rwgk commented May 19, 2025

Proof of concept commit 3e7a419, which simply

  • removes cudart, nvrtc, nvJitLink from the link command at build time,

  • then calls cuda.bindings.path_finder._load_nvidia_dynamic_library() for these libnames from python/cuda_parallel/cuda/parallel/experimental/__init__.py

Tested locally: Ubuntu 24.04 with /usr/local/cuda (CTK 12.9.0)

#!/bin/bash
set -euo pipefail

if [[ "$(realpath .)" != */cccl/python ]]; then
    echo "Please cd cccl/python"
    exit 1
fi

CCCL_PYTHON="$(pwd)"

rm -rf venvs/scratch/cpwheels
/usr/bin/python -m venv venvs/scratch/cpwheels
. venvs/scratch/cpwheels/bin/activate
pip install --upgrade pip
pip install pytest typing_extensions

cd "$CCCL_PYTHON/cuda_cccl"
rm -f cuda_cccl-*.whl
pip wheel -v .
pip install cuda_cccl-*.whl

cd "$CCCL_PYTHON/cuda_parallel"
rm -f cuda_parallel-*.whl
# nvcc → PATH
PATH="/usr/local/cuda/bin:$PATH" pip wheel -v .
pip install cuda_parallel-*.whl

find "$CCCL_PYTHON"/venvs/scratch/cpwheels/lib/python3.*/site-packages/cuda/parallel -name '*.so*' -print -exec ldd {} \;

# nvdisasm → PATH
(cd tests && PATH="/usr/local/cuda/bin:$PATH" python -m pytest --log-cli-level=INFO -s -vv test_reduce_api.py)

pip install nvidia-cuda-runtime-cu12 nvidia-cuda-nvrtc-cu12 nvidia-nvjitlink-cu12
# nvdisasm → PATH
(cd tests && PATH="/usr/local/cuda/bin:$PATH" python -m pytest --log-cli-level=INFO -s -vv test_reduce_api.py)

Full output: build_test_cuda_parallel_wheel_log_2025-05-18+2037.txt

Excerpts:

This shows that the two .so files in the cuda-parallel wheel no longer depend on cudart, nvrtc, nvJitLink:

/home/rgrossekunst/forked/cccl/python/venvs/scratch/cpwheels/lib/python3.12/site-packages/cuda/parallel/experimental/_bindings.cpython-312-x86_64-linux-gnu.so
        linux-vdso.so.1 (0x0000731953daf000)
        libcccl.c.parallel.so => /home/rgrossekunst/forked/cccl/python/venvs/scratch/cpwheels/lib/python3.12/site-packages/cuda/parallel/experimental/cccl/libcccl.c.parallel.so (0x0000731953ba5000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x0000731953800000)
        libcuda.so.1 => /lib/x86_64-linux-gnu/libcuda.so.1 (0x000073194de00000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x000073194da00000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x0000731953aa4000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x0000731953a74000)
        /lib64/ld-linux-x86-64.so.2 (0x0000731953db1000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x0000731953a6f000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x0000731953a6a000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x0000731953a65000)
/home/rgrossekunst/forked/cccl/python/venvs/scratch/cpwheels/lib/python3.12/site-packages/cuda/parallel/experimental/cccl/libcccl.c.parallel.so
        linux-vdso.so.1 (0x000070e5cf678000)
        libcuda.so.1 => /lib/x86_64-linux-gnu/libcuda.so.1 (0x000070e5c9c00000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x000070e5c9800000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x000070e5c9b17000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x000070e5cf4b9000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x000070e5c9400000)
        /lib64/ld-linux-x86-64.so.2 (0x000070e5cf67a000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x000070e5cf4b2000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x000070e5cf4ad000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x000070e5cf4a8000)

Note: Symbols provided by cudart, nvrtc, nvJitLink are unresolved.

But loading those libraries at runtime before those symbols are needed is sufficient:

It works with libraries loaded from /usr/local/cuda:

test_reduce_api.py::test_device_reduce
-------------------------------- live log setup --------------------------------
INFO     root:__init__.py:12 LoadedDL(handle=597663104, abs_path='/usr/local/cuda/targets/x86_64-linux/lib/libcudart.so', was_already_loaded_from_elsewhere=False)
INFO     root:__init__.py:12 LoadedDL(handle=597637360, abs_path='/usr/local/cuda/targets/x86_64-linux/lib/libnvrtc.so', was_already_loaded_from_elsewhere=False)
INFO     root:__init__.py:12 LoadedDL(handle=598040288, abs_path='/usr/local/cuda/targets/x86_64-linux/lib/libnvJitLink.so', was_already_loaded_from_elsewhere=False)
-------------------------------- live log call ---------------------------------
INFO     numba.cuda.cudadrv.driver:driver.py:253 init
PASSED
test_reduce_api.py::test_cache_modified_input_iterator PASSED
test_reduce_api.py::test_constant_iterator PASSED
test_reduce_api.py::test_counting_iterator PASSED
test_reduce_api.py::test_transform_iterator PASSED
test_reduce_api.py::test_reduce_struct_type PASSED
test_reduce_api.py::test_reduce_struct_type_minmax PASSED

It also works with libraries loaded from wheels:

test_reduce_api.py::test_device_reduce
-------------------------------- live log setup --------------------------------
INFO     root:__init__.py:12 LoadedDL(handle=267643728, abs_path='/home/rgrossekunst/forked/cccl/python/venvs/scratch/cpwheels/lib/python3.12/site-packages/nvidia/cuda_runtime/lib/libcudart.so.12', was_already_loaded_from_elsewhere=False)
INFO     root:__init__.py:12 LoadedDL(handle=267663216, abs_path='/home/rgrossekunst/forked/cccl/python/venvs/scratch/cpwheels/lib/python3.12/site-packages/nvidia/cuda_nvrtc/lib/libnvrtc.so.12', was_already_loaded_from_elsewhere=False)
INFO     root:__init__.py:12 LoadedDL(handle=268062304, abs_path='/home/rgrossekunst/forked/cccl/python/venvs/scratch/cpwheels/lib/python3.12/site-packages/nvidia/nvjitlink/lib/libnvJitLink.so.12', was_already_loaded_from_elsewhere=False)
-------------------------------- live log call ---------------------------------
INFO     numba.cuda.cudadrv.driver:driver.py:253 init
PASSED
test_reduce_api.py::test_cache_modified_input_iterator PASSED
test_reduce_api.py::test_constant_iterator PASSED
test_reduce_api.py::test_counting_iterator PASSED
test_reduce_api.py::test_transform_iterator PASSED
test_reduce_api.py::test_reduce_struct_type PASSED
test_reduce_api.py::test_reduce_struct_type_minmax PASSED

Action (failed): https://github.com/NVIDIA/cccl/actions/runs/15103908290/job/42449191939

@rwgk rwgk marked this pull request as draft May 19, 2025 04:10
@copy-pr-bot
Copy link
Contributor

copy-pr-bot bot commented May 19, 2025

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@github-actions
Copy link
Contributor

🟨 CI finished in 39m 20s: Pass: 85%/14 | Total: 1h 44m | Avg: 7m 26s | Max: 20m 14s
  • 🟥 cccl_c_parallel: Pass: 0%/2 | Total: 2m 39s | Avg: 1m 19s | Max: 2m 39s

    🟥 cpu
      🟥 amd64              Pass:   0%/2   | Total:  2m 39s | Avg:  1m 19s | Max:  2m 39s
    🟥 ctk
      🟥 12.8               Pass:   0%/2   | Total:  2m 39s | Avg:  1m 19s | Max:  2m 39s
    🟥 cudacxx
      🟥 nvcc12.8           Pass:   0%/2   | Total:  2m 39s | Avg:  1m 19s | Max:  2m 39s
    🟥 cudacxx_family
      🟥 nvcc               Pass:   0%/2   | Total:  2m 39s | Avg:  1m 19s | Max:  2m 39s
    🟥 cxx
      🟥 GCC13              Pass:   0%/2   | Total:  2m 39s | Avg:  1m 19s | Max:  2m 39s
    🟥 cxx_family
      🟥 GCC                Pass:   0%/2   | Total:  2m 39s | Avg:  1m 19s | Max:  2m 39s
    🟥 gpu
      🟥 rtx2080            Pass:   0%/2   | Total:  2m 39s | Avg:  1m 19s | Max:  2m 39s
    🟥 jobs
      🟥 Build              Pass:   0%/1   | Total:  2m 39s | Avg:  2m 39s | Max:  2m 39s
      🟥 Test               Pass:   0%/1  
    
  • 🟩 python: Pass: 100%/12 | Total: 1h 41m | Avg: 8m 27s | Max: 20m 14s

    🟩 cpu
      🟩 amd64              Pass: 100%/12  | Total:  1h 41m | Avg:  8m 27s | Max: 20m 14s
    🟩 ctk
      🟩 12.8               Pass: 100%/12  | Total:  1h 41m | Avg:  8m 27s | Max: 20m 14s
    🟩 cudacxx
      🟩 nvcc12.8           Pass: 100%/12  | Total:  1h 41m | Avg:  8m 27s | Max: 20m 14s
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/12  | Total:  1h 41m | Avg:  8m 27s | Max: 20m 14s
    🟩 cxx
      🟩 GCC13              Pass: 100%/12  | Total:  1h 41m | Avg:  8m 27s | Max: 20m 14s
    🟩 cxx_family
      🟩 GCC                Pass: 100%/12  | Total:  1h 41m | Avg:  8m 27s | Max: 20m 14s
    🟩 gpu
      🟩 rtxa6000           Pass: 100%/12  | Total:  1h 41m | Avg:  8m 27s | Max: 20m 14s
    🟩 jobs
      🟩 Build cuda.cccl    Pass: 100%/2   | Total:  6m 47s | Avg:  3m 23s | Max:  3m 26s
      🟩 Build cuda.cooperative Pass: 100%/2   | Total:  7m 00s | Avg:  3m 30s | Max:  3m 33s
      🟩 Build cuda.parallel Pass: 100%/2   | Total: 19m 15s | Avg:  9m 37s | Max:  9m 46s
      🟩 Test cuda.cccl     Pass: 100%/2   | Total:  9m 11s | Avg:  4m 35s | Max:  4m 43s
      🟩 Test cuda.cooperative Pass: 100%/2   | Total: 40m 25s | Avg: 20m 12s | Max: 20m 14s
      🟩 Test cuda.parallel Pass: 100%/2   | Total: 18m 49s | Avg:  9m 24s | Max:  9m 35s
    🟩 py_version
      🟩 3.10               Pass: 100%/6   | Total: 50m 21s | Avg:  8m 23s | Max: 20m 11s
      🟩 3.13               Pass: 100%/6   | Total: 51m 06s | Avg:  8m 31s | Max: 20m 14s
    

👃 Inspect Changes

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

🏃‍ Runner counts (total jobs: 14)

# Runner
7 linux-amd64-cpu16
6 linux-amd64-gpu-rtxa6000-latest-1
1 linux-amd64-gpu-rtx2080-latest-1

@rwgk
Copy link
Contributor Author

rwgk commented May 19, 2025

/ok to test

@rwgk
Copy link
Contributor Author

rwgk commented May 19, 2025

Action (failure): https://github.com/NVIDIA/cccl/actions/runs/15118789339/job/42496209585?pr=4735

Issue:

2025-05-19T17:00:19.3684103Z : && /usr/bin/g++ -O3 -DNDEBUG  c2h/CMakeFiles/cccl.c2h.main.dir/catch2_runner.cpp.o c2h/CMakeFiles/cccl.c2h.main.dir/catch2_runner_helper.cu.o c/parallel/test/CMakeFiles/cccl.c.parallel.test.for.cpp.dir/test_for.cpp.o -o bin/cccl.c.parallel.test.for.cpp -L/usr/local/cuda/targets/x86_64-linux/lib -Wl,-rpath,/home/coder/cccl/build/cuda12.8-gcc13/cccl-c-parallel/lib:/usr/local/cuda-12.8/targets/x86_64-linux/lib  lib/libcccl.c.parallel.so  /usr/local/cuda-12.8/targets/x86_64-linux/lib/libcudart.so  /usr/local/cuda-12.8/targets/x86_64-linux/lib/libnvrtc.so  /usr/local/cuda/targets/x86_64-linux/lib/stubs/libcuda.so  -ldl  /usr/lib/x86_64-linux-gnu/librt.a  c2h/libcccl.c2h.a  _deps/catch2-build/src/libCatch2.a  /usr/local/cuda-12.8/targets/x86_64-linux/lib/libcurand.so  -lcudadevrt  -lcudart_static  -lrt  -lpthread  -ldl && :
2025-05-19T17:00:19.3688060Z /usr/bin/ld: lib/libcccl.c.parallel.so: undefined reference to `__nvJitLinkCreate_12_8'
2025-05-19T17:00:19.3688887Z /usr/bin/ld: lib/libcccl.c.parallel.so: undefined reference to `__nvJitLinkGetLinkedPtx_12_8'
2025-05-19T17:00:19.3689810Z /usr/bin/ld: lib/libcccl.c.parallel.so: undefined reference to `__nvJitLinkGetErrorLog_12_8'
2025-05-19T17:00:19.3690686Z /usr/bin/ld: lib/libcccl.c.parallel.so: undefined reference to `__nvJitLinkGetErrorLogSize_12_8'
2025-05-19T17:00:19.3691510Z /usr/bin/ld: lib/libcccl.c.parallel.so: undefined reference to `__nvJitLinkDestroy_12_8'
2025-05-19T17:00:19.3692409Z /usr/bin/ld: lib/libcccl.c.parallel.so: undefined reference to `__nvJitLinkGetLinkedPtxSize_12_8'
2025-05-19T17:00:19.3693277Z /usr/bin/ld: lib/libcccl.c.parallel.so: undefined reference to `__nvJitLinkGetLinkedCubin_12_8'
2025-05-19T17:00:19.3694184Z /usr/bin/ld: lib/libcccl.c.parallel.so: undefined reference to `__nvJitLinkComplete_12_8'
2025-05-19T17:00:19.3695227Z /usr/bin/ld: lib/libcccl.c.parallel.so: undefined reference to `__nvJitLinkGetLinkedCubinSize_12_8'
2025-05-19T17:00:19.3695999Z /usr/bin/ld: lib/libcccl.c.parallel.so: undefined reference to `__nvJitLinkAddData_12_8'
2025-05-19T17:00:19.3696824Z collect2: error: ld returned 1 exit status

We need to add back cudart, nvrtc, nvJitLink in c/parallel/test/CMakeLists.txt (because these were removed in c/parallel/CMakeLists.txt)

@cryos
Copy link
Contributor

cryos commented May 19, 2025

We need to add back cudart, nvrtc, nvJitLink in c/parallel/test/CMakeLists.txt (because these were removed in c/parallel/CMakeLists.txt)

I hadn't hit save on the issue, just did and then saw this. I think the best course of action is to add them back in, they stay in as needed and then dlopen on the Python side as you said. That way when they are loaded the SO cache has them and nothing further needs to be done.

Copy link
Contributor

@cryos cryos left a comment

Choose a reason for hiding this comment

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

Some suggestions

Copy link
Contributor

Choose a reason for hiding this comment

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

Does it not work for some reason if we did this directly in (the existing) _bindings.pyx?

Copy link
Contributor Author

@rwgk rwgk May 21, 2025

Choose a reason for hiding this comment

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

Yes, I think it cannot work without introducing this layer of indirection.

These are the ldd outputs with a wheel before I made the _bindings_impl change:

$ ldd cuda/parallel/experimental/_bindings.cpython-312-x86_64-linux-gnu.so
        linux-vdso.so.1 (0x00007927a2d5d000)
        libcccl.c.parallel.so => /home/rgrossekunst/junk/cuda/parallel/experimental/cccl/libcccl.c.parallel.so (0x00007927a2b51000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007927a2800000)
        libnvrtc.so.12 => /usr/local/cuda/targets/x86_64-linux/lib/libnvrtc.so.12 (0x000079279be00000)
        libnvJitLink.so.12 => /usr/local/cuda/targets/x86_64-linux/lib/libnvJitLink.so.12 (0x0000792796000000)
        libcuda.so.1 => /lib/x86_64-linux-gnu/libcuda.so.1 (0x0000792790600000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x0000792790200000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007927a2a4e000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007927a2a20000)
        /lib64/ld-linux-x86-64.so.2 (0x00007927a2d5f000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007927a2a1b000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007927a2a16000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007927a27fb000)
$ ldd cuda/parallel/experimental/cccl/libcccl.c.parallel.so
        linux-vdso.so.1 (0x00007b2d8cc0a000)
        libnvrtc.so.12 => /usr/local/cuda/targets/x86_64-linux/lib/libnvrtc.so.12 (0x00007b2d86000000)
        libnvJitLink.so.12 => /usr/local/cuda/targets/x86_64-linux/lib/libnvJitLink.so.12 (0x00007b2d80200000)
        libcuda.so.1 => /lib/x86_64-linux-gnu/libcuda.so.1 (0x00007b2d7a800000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007b2d7a400000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007b2d8c990000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007b2d8c960000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007b2d7a000000)
        /lib64/ld-linux-x86-64.so.2 (0x00007b2d8cc0c000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007b2d8c95b000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007b2d8c956000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007b2d8c951000)

We have a number of _bindings imports:

$ git grep -e 'import.*_bindings'
cuda/parallel/experimental/algorithms/_merge_sort.py:from .. import _bindings
cuda/parallel/experimental/algorithms/_radix_sort.py:from .. import _bindings
cuda/parallel/experimental/algorithms/_reduce.py:from .. import _bindings
cuda/parallel/experimental/algorithms/_scan.py:from .. import _bindings
cuda/parallel/experimental/algorithms/_segmented_reduce.py:from .. import _bindings
cuda/parallel/experimental/algorithms/_transform.py:from .. import _bindings
cuda/parallel/experimental/algorithms/_unique_by_key.py:from .. import _bindings
tests/test_bindings.py:import cuda.parallel.experimental._bindings as bindings

When any of those run, we need to ensure that path_finder loads nvrtc and nvJitLink before the cython extension is imported.

(That's basically what I need to explain in the comment you requested.)

Copy link
Contributor

Choose a reason for hiding this comment

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

Thanks - I think that would also be useful to include in your comments (why we need the indirection)

Copy link
Member

Choose a reason for hiding this comment

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

Hmmmm I wonder why this linking happens

$ ldd cuda/parallel/experimental/_bindings.cpython-312-x86_64-linux-gnu.so
        ...
        libnvrtc.so.12 => /usr/local/cuda/targets/x86_64-linux/lib/libnvrtc.so.12 (0x000079279be00000)
        libnvJitLink.so.12 => /usr/local/cuda/targets/x86_64-linux/lib/libnvJitLink.so.12 (0x0000792796000000)
        ...

I don't think the binding extension module needs to link to NVRTC/nvJitLink? @oleksandr-pavlyk I can't tell how they sneaked in by inspecting CMakeList

Copy link
Contributor Author

@rwgk rwgk May 21, 2025

Choose a reason for hiding this comment

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

Good question, it was like that before this PR†. I figure it won't change anything for this PR, because the cython extension needs to depend on libcccl.c.parallel.so, which needs to depend on nvrtc and nvJitLink.

†I double-checked to be sure what I'm writing is correct, inspecting the same wheel I used for the size comparison:

$ ldd cuda/parallel/experimental/_bindings.cpython-313-x86_64-linux-gnu.so
        linux-vdso.so.1 (0x00007a0bef2d2000)
        libcccl.c.parallel.so => /home/rgrossekunst/junk/before/cuda/parallel/experimental/cccl/libcccl.c.parallel.so (0x00007a0bef11d000)
        libcuda.so.1 => /lib/x86_64-linux-gnu/libcuda.so.1 (0x00007a0be9800000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007a0bef100000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007a0be9400000)
        libcudart-381c0faa.so.12.9.37 => /home/rgrossekunst/junk/before/cuda/parallel/experimental/cccl/../../../../cuda_parallel.libs/libcudart-381c0faa.so.12.9.37 (0x00007a0be9000000)
        libnvrtc-b0064dcb.so.12.9.41 => /home/rgrossekunst/junk/before/cuda/parallel/experimental/cccl/../../../../cuda_parallel.libs/libnvrtc-b0064dcb.so.12.9.41 (0x00007a0be2600000)
        libnvJitLink-21ab891f.so.12.9.41 => /home/rgrossekunst/junk/before/cuda/parallel/experimental/cccl/../../../../cuda_parallel.libs/libnvJitLink-21ab891f.so.12.9.41 (0x00007a0bdc800000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007a0bef0f9000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007a0bef0f4000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007a0bdc400000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007a0be9717000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007a0bef0c4000)
        /lib64/ld-linux-x86-64.so.2 (0x00007a0bef2d4000)
$ ldd cuda/parallel/experimental/cccl/libcccl.c.parallel.so
        linux-vdso.so.1 (0x000073e7b4dc5000)
        libcudart-381c0faa.so.12.9.37 => /home/rgrossekunst/junk/before/cuda/parallel/experimental/cccl/../../../../cuda_parallel.libs/libcudart-381c0faa.so.12.9.37 (0x000073e7b4800000)
        libnvrtc-b0064dcb.so.12.9.41 => /home/rgrossekunst/junk/before/cuda/parallel/experimental/cccl/../../../../cuda_parallel.libs/libnvrtc-b0064dcb.so.12.9.41 (0x000073e7ade00000)
        libnvJitLink-21ab891f.so.12.9.41 => /home/rgrossekunst/junk/before/cuda/parallel/experimental/cccl/../../../../cuda_parallel.libs/libnvJitLink-21ab891f.so.12.9.41 (0x000073e7a8000000)
        libcuda.so.1 => /lib/x86_64-linux-gnu/libcuda.so.1 (0x000073e7a2600000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x000073e7b4c8e000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x000073e7b4c87000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x000073e7a2200000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x000073e7b4b9e000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x000073e7b4b70000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x000073e7b4b6b000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x000073e7a1e00000)
        /lib64/ld-linux-x86-64.so.2 (0x000073e7b4dc7000)

Copy link
Member

Choose a reason for hiding this comment

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

(corrected my autospell checker mistake, sorry)

Copy link
Member

Choose a reason for hiding this comment

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

Sorry, I marked this thread resolved but I am reopening it...

To be pedantic, the old treatment (pre-loading in root __init__.py) is actually slightly safer that the new/current treatment, which relies on _bindings being imported first (by other modules or by the developer). But what if someone decides to import _bindings_impl directly without importing _bindings? Then I don't think preloading would happen!

Either we revert back to the old treatment, or we move _bindings_impl one-level down, something like

- _bindings/
  - _bindings/__init__.py         # run preloading here
  - _bindings/_bindings_impl.pyx

then we can guarantee the preloading always happens regardless how import happens, as desired.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

But what if someone decides to import _bindings_impl directly without importing _bindings?

Everything here is private (leading underscores), so: That's simply invalid. Nobody will be surprised if that doesn't work.

I think it's best to have the preloading only if it is actually needed (current implementation).

Previously it would trigger even for unrelated imports, literally anything under cuda.parallel.experimental. That was great and easy for the proof-of-concept stage, but poor factoring from a more purist viewpoint.

Honestly, I think making the code organization more complicated by introducing a _bindings/ directory is a bit too elaborate.

Copy link
Member

Choose a reason for hiding this comment

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

OK as long as our current binding maintainer @oleksandr-pavlyk is cool I am cool. As I said this is pedantic, I just feel obligated to call it out 🙂

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It crossed my mind last night: Automatic doc generation could try to import _bindings_impl

But moving this to _bindings/__init__.py would only make a difference if all dependencies are fully installed. AFAIK we don't have a setup like that. If we want to work on that in the future, and we actually run into a problem, it'll probably only be a tiny extra chore to introduce _bindings/__init__.py then.

@rwgk
Copy link
Contributor Author

rwgk commented May 21, 2025

So I convinced myself that present approach works on Windows.

Awesome, thanks for the investigation, and the great report!

Regarding fragility, I think it mostly applies to Linux, where we have to be careful that pathfinder loads consistent versions of required dynamic libraries.

Yes, that's something we discussed briefly but left for later. There is a hint about that in the existing README here. (I was thinking this applies to Windows, too.)

The need to post-process wheels smells

I tried to simply use auditwheel show, but @leofang explained why we need repair here.

@github-actions
Copy link
Contributor

🟩 CI finished in 1h 57m: Pass: 100%/187 | Total: 2d 10h | Avg: 18m 43s | Max: 1h 29m | Hits: 84%/289419
  • 🟩 cub: Pass: 100%/47 | Total: 11h 28m | Avg: 14m 38s | Max: 37m 22s | Hits: 99%/57406

    🟩 cpu
      🟩 amd64              Pass: 100%/45  | Total: 11h 10m | Avg: 14m 54s | Max: 37m 22s | Hits:  99%/54908 
      🟩 arm64              Pass: 100%/2   | Total: 17m 40s | Avg:  8m 50s | Max:  9m 45s | Hits:  99%/2498  
    🟩 ctk
      🟩 12.0               Pass: 100%/5   | Total:  1h 05m | Avg: 13m 07s | Max: 31m 00s | Hits:  99%/6062  
      🟩 12.8               Pass: 100%/2   | Total: 30m 35s | Avg: 15m 17s | Max: 15m 44s | Hits:  98%/2297  
      🟩 12.9               Pass: 100%/40  | Total:  9h 52m | Avg: 14m 48s | Max: 37m 22s | Hits:  99%/49047 
    🟩 cudacxx
      🟩 ClangCUDA19        Pass: 100%/2   | Total: 13m 01s | Avg:  6m 30s | Max:  6m 48s | Hits:  99%/2151  
      🟩 nvcc12.0           Pass: 100%/5   | Total:  1h 05m | Avg: 13m 07s | Max: 31m 00s | Hits:  99%/6062  
      🟩 nvcc12.8           Pass: 100%/2   | Total: 30m 35s | Avg: 15m 17s | Max: 15m 44s | Hits:  98%/2297  
      🟩 nvcc12.9           Pass: 100%/38  | Total:  9h 39m | Avg: 15m 14s | Max: 37m 22s | Hits:  99%/46896 
    🟩 cudacxx_family
      🟩 ClangCUDA          Pass: 100%/2   | Total: 13m 01s | Avg:  6m 30s | Max:  6m 48s | Hits:  99%/2151  
      🟩 nvcc               Pass: 100%/45  | Total: 11h 15m | Avg: 15m 00s | Max: 37m 22s | Hits:  99%/55255 
    🟩 cxx
      🟩 Clang14            Pass: 100%/4   | Total: 31m 56s | Avg:  7m 59s | Max:  8m 24s | Hits:  99%/4998  
      🟩 Clang15            Pass: 100%/2   | Total: 16m 31s | Avg:  8m 15s | Max:  8m 46s | Hits:  99%/2495  
      🟩 Clang16            Pass: 100%/2   | Total: 16m 41s | Avg:  8m 20s | Max:  8m 39s | Hits:  99%/2495  
      🟩 Clang17            Pass: 100%/2   | Total: 16m 28s | Avg:  8m 14s | Max:  8m 21s | Hits:  99%/2495  
      🟩 Clang18            Pass: 100%/2   | Total: 16m 09s | Avg:  8m 04s | Max:  8m 17s | Hits:  99%/2495  
      🟩 Clang19            Pass: 100%/7   | Total:  1h 36m | Avg: 13m 43s | Max: 32m 20s | Hits:  99%/8390  
      🟩 GCC7               Pass: 100%/2   | Total: 19m 02s | Avg:  9m 31s | Max:  9m 44s | Hits:  99%/2498  
      🟩 GCC8               Pass: 100%/1   | Total:  9m 57s | Avg:  9m 57s | Max:  9m 57s | Hits:  99%/1249  
      🟩 GCC9               Pass: 100%/2   | Total: 19m 19s | Avg:  9m 39s | Max:  9m 53s | Hits:  99%/2498  
      🟩 GCC10              Pass: 100%/2   | Total: 20m 09s | Avg: 10m 04s | Max: 10m 38s | Hits:  99%/2499  
      🟩 GCC11              Pass: 100%/2   | Total: 19m 26s | Avg:  9m 43s | Max:  9m 49s | Hits:  99%/2495  
      🟩 GCC12              Pass: 100%/2   | Total: 21m 15s | Avg: 10m 37s | Max: 10m 46s | Hits:  99%/2495  
      🟩 GCC13              Pass: 100%/11  | Total:  3h 48m | Avg: 20m 48s | Max: 37m 22s | Hits:  99%/13747 
      🟩 MSVC14.29          Pass: 100%/2   | Total:  1h 04m | Avg: 32m 14s | Max: 33m 28s | Hits:  98%/2130  
      🟩 MSVC14.43          Pass: 100%/2   | Total:  1h 01m | Avg: 30m 44s | Max: 31m 37s | Hits:  98%/2130  
      🟩 NVHPC25.3          Pass: 100%/2   | Total: 30m 35s | Avg: 15m 17s | Max: 15m 44s | Hits:  98%/2297  
    🟩 cxx_family
      🟩 Clang              Pass: 100%/19  | Total:  3h 13m | Avg: 10m 11s | Max: 32m 20s | Hits:  99%/23368 
      🟩 GCC                Pass: 100%/22  | Total:  5h 37m | Avg: 15m 21s | Max: 37m 22s | Hits:  99%/27481 
      🟩 MSVC               Pass: 100%/4   | Total:  2h 05m | Avg: 31m 29s | Max: 33m 28s | Hits:  98%/4260  
      🟩 NVHPC              Pass: 100%/2   | Total: 30m 35s | Avg: 15m 17s | Max: 15m 44s | Hits:  98%/2297  
    🟩 gpu
      🟩 h100               Pass: 100%/3   | Total:  1h 00m | Avg: 20m 17s | Max: 28m 17s | Hits:  99%/3750  
      🟩 rtx2080            Pass: 100%/36  | Total:  7h 03m | Avg: 11m 45s | Max: 33m 28s | Hits:  99%/43662 
      🟩 rtxa6000           Pass: 100%/8   | Total:  3h 24m | Avg: 25m 30s | Max: 37m 22s | Hits:  99%/9994  
    🟩 jobs
      🟩 Build              Pass: 100%/39  | Total:  7h 28m | Avg: 11m 29s | Max: 33m 28s | Hits:  99%/47410 
      🟩 DeviceLaunch       Pass: 100%/1   | Total: 37m 22s | Avg: 37m 22s | Max: 37m 22s | Hits:  99%/1250  
      🟩 GraphCapture       Pass: 100%/1   | Total: 27m 45s | Avg: 27m 45s | Max: 27m 45s | Hits:  99%/1250  
      🟩 HostLaunch         Pass: 100%/3   | Total:  1h 32m | Avg: 30m 46s | Max: 32m 20s | Hits:  99%/3748  
      🟩 TestGPU            Pass: 100%/3   | Total:  1h 22m | Avg: 27m 30s | Max: 30m 43s | Hits:  99%/3748  
    🟩 sm
      🟩 90                 Pass: 100%/3   | Total:  1h 00m | Avg: 20m 17s | Max: 28m 17s | Hits:  99%/3750  
      🟩 90;90a;100         Pass: 100%/1   | Total: 10m 35s | Avg: 10m 35s | Max: 10m 35s | Hits:  99%/1250  
    🟩 std
      🟩 17                 Pass: 100%/21  | Total:  4h 23m | Avg: 12m 33s | Max: 33m 28s | Hits:  99%/25386 
      🟩 20                 Pass: 100%/26  | Total:  7h 04m | Avg: 16m 19s | Max: 37m 22s | Hits:  99%/32020 
    
  • 🟩 thrust: Pass: 100%/47 | Total: 1d 07h | Avg: 40m 16s | Max: 1h 29m | Hits: 71%/89096

    🟩 cmake_options
      🟩 -DTHRUST_DISPATCH_TYPE=Force32bit Pass: 100%/2   | Total:  1h 00m | Avg: 30m 15s | Max: 35m 24s | Hits:  74%/3794  
    🟩 cpu
      🟩 amd64              Pass: 100%/45  | Total:  1d 06h | Avg: 40m 25s | Max:  1h 29m | Hits:  71%/85303 
      🟩 arm64              Pass: 100%/2   | Total:  1h 13m | Avg: 36m 57s | Max: 39m 38s | Hits:  65%/3793  
    🟩 ctk
      🟩 12.0               Pass: 100%/5   | Total:  3h 41m | Avg: 44m 14s | Max:  1h 07m | Hits:  68%/9475  
      🟩 12.8               Pass: 100%/2   | Total:  2h 55m | Avg:  1h 27m | Max:  1h 29m | Hits:  55%/3790  
      🟩 12.9               Pass: 100%/40  | Total:  1d 00h | Avg: 37m 24s | Max:  1h 10m | Hits:  72%/75831 
    🟩 cudacxx
      🟩 ClangCUDA19        Pass: 100%/2   | Total: 58m 32s | Avg: 29m 16s | Max: 29m 34s | Hits:  68%/3792  
      🟩 nvcc12.0           Pass: 100%/5   | Total:  3h 41m | Avg: 44m 14s | Max:  1h 07m | Hits:  68%/9475  
      🟩 nvcc12.8           Pass: 100%/2   | Total:  2h 55m | Avg:  1h 27m | Max:  1h 29m | Hits:  55%/3790  
      🟩 nvcc12.9           Pass: 100%/38  | Total: 23h 57m | Avg: 37m 49s | Max:  1h 10m | Hits:  72%/72039 
    🟩 cudacxx_family
      🟩 ClangCUDA          Pass: 100%/2   | Total: 58m 32s | Avg: 29m 16s | Max: 29m 34s | Hits:  68%/3792  
      🟩 nvcc               Pass: 100%/45  | Total:  1d 06h | Avg: 40m 46s | Max:  1h 29m | Hits:  71%/85304 
    🟩 cxx
      🟩 Clang14            Pass: 100%/4   | Total:  2h 28m | Avg: 37m 03s | Max: 37m 54s | Hits:  73%/7584  
      🟩 Clang15            Pass: 100%/2   | Total:  1h 13m | Avg: 36m 35s | Max: 37m 11s | Hits:  68%/3792  
      🟩 Clang16            Pass: 100%/2   | Total:  1h 19m | Avg: 39m 39s | Max: 40m 33s | Hits:  69%/3792  
      🟩 Clang17            Pass: 100%/2   | Total:  1h 19m | Avg: 39m 42s | Max: 40m 15s | Hits:  68%/3792  
      🟩 Clang18            Pass: 100%/2   | Total:  1h 12m | Avg: 36m 21s | Max: 37m 04s | Hits:  68%/3792  
      🟩 Clang19            Pass: 100%/7   | Total:  3h 04m | Avg: 26m 24s | Max: 38m 43s | Hits:  77%/13272 
      🟩 GCC7               Pass: 100%/2   | Total:  1h 17m | Avg: 38m 49s | Max: 39m 03s | Hits:  68%/3794  
      🟩 GCC8               Pass: 100%/1   | Total: 40m 33s | Avg: 40m 33s | Max: 40m 33s | Hits:  63%/1897  
      🟩 GCC9               Pass: 100%/2   | Total:  1h 22m | Avg: 41m 10s | Max: 41m 21s | Hits:  67%/3794  
      🟩 GCC10              Pass: 100%/2   | Total:  1h 21m | Avg: 40m 38s | Max: 41m 49s | Hits:  63%/3794  
      🟩 GCC11              Pass: 100%/2   | Total:  1h 26m | Avg: 43m 08s | Max: 44m 32s | Hits:  63%/3794  
      🟩 GCC12              Pass: 100%/2   | Total:  1h 26m | Avg: 43m 17s | Max: 43m 44s | Hits:  63%/3794  
      🟩 GCC13              Pass: 100%/10  | Total:  5h 14m | Avg: 31m 28s | Max: 44m 48s | Hits:  76%/18970 
      🟩 MSVC14.29          Pass: 100%/2   | Total:  2h 13m | Avg:  1h 06m | Max:  1h 07m | Hits:  71%/3778  
      🟩 MSVC14.43          Pass: 100%/3   | Total:  2h 56m | Avg: 58m 46s | Max:  1h 10m | Hits:  78%/5667  
      🟩 NVHPC25.3          Pass: 100%/2   | Total:  2h 55m | Avg:  1h 27m | Max:  1h 29m | Hits:  55%/3790  
    🟩 cxx_family
      🟩 Clang              Pass: 100%/19  | Total: 10h 37m | Avg: 33m 33s | Max: 40m 33s | Hits:  73%/36024 
      🟩 GCC                Pass: 100%/21  | Total: 12h 49m | Avg: 36m 38s | Max: 44m 48s | Hits:  70%/39837 
      🟩 MSVC               Pass: 100%/5   | Total:  5h 10m | Avg:  1h 02m | Max:  1h 10m | Hits:  75%/9445  
      🟩 NVHPC              Pass: 100%/2   | Total:  2h 55m | Avg:  1h 27m | Max:  1h 29m | Hits:  55%/3790  
    🟩 gpu
      🟩 h100               Pass: 100%/2   | Total: 45m 24s | Avg: 22m 42s | Max: 25m 10s | Hits:  73%/3794  
      🟩 rtx2080            Pass: 100%/35  | Total:  1d 01h | Avg: 44m 11s | Max:  1h 29m | Hits:  67%/66351 
      🟩 rtx4090            Pass: 100%/10  | Total:  5h 01m | Avg: 30m 06s | Max:  1h 09m | Hits:  85%/18951 
    🟩 jobs
      🟩 Build              Pass: 100%/40  | Total:  1d 05h | Avg: 43m 46s | Max:  1h 29m | Hits:  67%/75827 
      🟩 TestCPU            Pass: 100%/3   | Total:  1h 03m | Avg: 21m 00s | Max: 35m 57s | Hits:  97%/5682  
      🟩 TestGPU            Pass: 100%/4   | Total:  1h 19m | Avg: 19m 45s | Max: 25m 06s | Hits:  90%/7587  
    🟩 sm
      🟩 90                 Pass: 100%/2   | Total: 45m 24s | Avg: 22m 42s | Max: 25m 10s | Hits:  73%/3794  
      🟩 90;90a;100         Pass: 100%/1   | Total: 44m 48s | Avg: 44m 48s | Max: 44m 48s | Hits:  79%/1897  
    🟩 std
      🟩 17                 Pass: 100%/21  | Total: 16h 02m | Avg: 45m 49s | Max:  1h 29m | Hits:  67%/39803 
      🟩 20                 Pass: 100%/24  | Total: 14h 30m | Avg: 36m 16s | Max:  1h 26m | Hits:  74%/45499 
    
  • 🟩 libcudacxx: Pass: 100%/45 | Total: 9h 22m | Avg: 12m 29s | Max: 34m 08s | Hits: 84%/127843

    🟩 cpu
      🟩 amd64              Pass: 100%/43  | Total:  9h 11m | Avg: 12m 50s | Max: 34m 08s | Hits:  84%/121222
      🟩 arm64              Pass: 100%/2   | Total: 10m 20s | Avg:  5m 10s | Max:  5m 27s | Hits:  97%/6621  
    🟩 ctk
      🟩 12.0               Pass: 100%/5   | Total: 48m 13s | Avg:  9m 38s | Max: 27m 48s | Hits:  97%/16189 
      🟩 12.8               Pass: 100%/2   | Total: 23m 52s | Avg: 11m 56s | Max: 12m 43s | Hits:  97%/6571  
      🟩 12.9               Pass: 100%/38  | Total:  8h 10m | Avg: 12m 53s | Max: 34m 08s | Hits:  82%/105083
    🟩 cudacxx
      🟩 ClangCUDA19        Pass: 100%/2   | Total: 50m 27s | Avg: 25m 13s | Max: 26m 12s | Hits:  26%/6585  
      🟩 nvcc12.0           Pass: 100%/5   | Total: 48m 13s | Avg:  9m 38s | Max: 27m 48s | Hits:  97%/16189 
      🟩 nvcc12.8           Pass: 100%/2   | Total: 23m 52s | Avg: 11m 56s | Max: 12m 43s | Hits:  97%/6571  
      🟩 nvcc12.9           Pass: 100%/36  | Total:  7h 19m | Avg: 12m 12s | Max: 34m 08s | Hits:  85%/98498 
    🟩 cudacxx_family
      🟩 ClangCUDA          Pass: 100%/2   | Total: 50m 27s | Avg: 25m 13s | Max: 26m 12s | Hits:  26%/6585  
      🟩 nvcc               Pass: 100%/43  | Total:  8h 31m | Avg: 11m 54s | Max: 34m 08s | Hits:  87%/121258
    🟩 cxx
      🟩 Clang14            Pass: 100%/4   | Total: 38m 37s | Avg:  9m 39s | Max: 23m 17s | Hits:  86%/13126 
      🟩 Clang15            Pass: 100%/2   | Total: 28m 59s | Avg: 14m 29s | Max: 22m 55s | Hits:  75%/6581  
      🟩 Clang16            Pass: 100%/2   | Total: 11m 20s | Avg:  5m 40s | Max:  5m 55s | Hits:  98%/6581  
      🟩 Clang17            Pass: 100%/2   | Total: 11m 06s | Avg:  5m 33s | Max:  5m 40s | Hits:  98%/6581  
      🟩 Clang18            Pass: 100%/2   | Total: 12m 09s | Avg:  6m 04s | Max:  6m 08s | Hits:  96%/6581  
      🟩 Clang19            Pass: 100%/6   | Total:  1h 20m | Avg: 13m 27s | Max: 26m 12s | Hits:  69%/16476 
      🟩 GCC7               Pass: 100%/2   | Total: 25m 34s | Avg: 12m 47s | Max: 20m 25s | Hits:  74%/6517  
      🟩 GCC8               Pass: 100%/1   | Total: 19m 31s | Avg: 19m 31s | Max: 19m 31s | Hits:  52%/3269  
      🟩 GCC9               Pass: 100%/2   | Total: 10m 33s | Avg:  5m 16s | Max:  5m 22s | Hits:  97%/6529  
      🟩 GCC10              Pass: 100%/2   | Total: 30m 45s | Avg: 15m 22s | Max: 24m 21s | Hits:  74%/6583  
      🟩 GCC11              Pass: 100%/2   | Total: 10m 22s | Avg:  5m 11s | Max:  5m 22s | Hits:  98%/6579  
      🟩 GCC12              Pass: 100%/2   | Total: 32m 43s | Avg: 16m 21s | Max: 27m 02s | Hits:  75%/6583  
      🟩 GCC13              Pass: 100%/10  | Total:  1h 38m | Avg:  9m 50s | Max: 20m 33s | Hits:  97%/16720 
      🟩 MSVC14.29          Pass: 100%/2   | Total:  1h 00m | Avg: 30m 28s | Max: 33m 08s | Hits:  74%/6257  
      🟩 MSVC14.43          Pass: 100%/2   | Total:  1h 06m | Avg: 33m 18s | Max: 34m 08s | Hits:  73%/6309  
      🟩 NVHPC25.3          Pass: 100%/2   | Total: 23m 52s | Avg: 11m 56s | Max: 12m 43s | Hits:  97%/6571  
    🟩 cxx_family
      🟩 Clang              Pass: 100%/18  | Total:  3h 02m | Avg: 10m 09s | Max: 26m 12s | Hits:  84%/55926 
      🟩 GCC                Pass: 100%/21  | Total:  3h 47m | Avg: 10m 51s | Max: 27m 02s | Hits:  86%/52780 
      🟩 MSVC               Pass: 100%/4   | Total:  2h 07m | Avg: 31m 53s | Max: 34m 08s | Hits:  74%/12566 
      🟩 NVHPC              Pass: 100%/2   | Total: 23m 52s | Avg: 11m 56s | Max: 12m 43s | Hits:  97%/6571  
    🟩 gpu
      🟩 h100               Pass: 100%/2   | Total: 20m 09s | Avg: 10m 04s | Max: 14m 51s | Hits:  99%/3393  
      🟩 rtx2080            Pass: 100%/43  | Total:  9h 02m | Avg: 12m 36s | Max: 34m 08s | Hits:  84%/124450
    🟩 jobs
      🟩 Build              Pass: 100%/39  | Total:  7h 57m | Avg: 12m 14s | Max: 34m 08s | Hits:  84%/127803
      🟩 NVRTC              Pass: 100%/2   | Total: 38m 35s | Avg: 19m 17s | Max: 20m 33s | Hits:  90%/40    
      🟩 Test               Pass: 100%/3   | Total: 43m 53s | Avg: 14m 37s | Max: 14m 51s
      🟩 VerifyCodegen      Pass: 100%/1   | Total:  2m 24s | Avg:  2m 24s | Max:  2m 24s
    🟩 sm
      🟩 75                 Pass: 100%/2   | Total: 38m 35s | Avg: 19m 17s | Max: 20m 33s | Hits:  90%/40    
      🟩 90                 Pass: 100%/2   | Total: 20m 09s | Avg: 10m 04s | Max: 14m 51s | Hits:  99%/3393  
      🟩 90;90a;100         Pass: 100%/1   | Total:  5m 46s | Avg:  5m 46s | Max:  5m 46s | Hits:  98%/3393  
    🟩 std
      🟩 17                 Pass: 100%/22  | Total:  4h 45m | Avg: 12m 58s | Max: 34m 08s | Hits:  83%/68231 
      🟩 20                 Pass: 100%/22  | Total:  4h 34m | Avg: 12m 28s | Max: 32m 28s | Hits:  86%/59612 
    
  • 🟩 cudax: Pass: 100%/26 | Total: 3h 00m | Avg: 6m 57s | Max: 14m 51s | Hits: 94%/14746

    🟩 cpu
      🟩 amd64              Pass: 100%/22  | Total:  2h 40m | Avg:  7m 19s | Max: 14m 51s | Hits:  94%/12386 
      🟩 arm64              Pass: 100%/4   | Total: 19m 54s | Avg:  4m 58s | Max:  5m 56s | Hits:  93%/2360  
    🟩 ctk
      🟩 12.0               Pass: 100%/3   | Total: 24m 05s | Avg:  8m 01s | Max: 14m 51s | Hits:  92%/1475  
      🟩 12.8               Pass: 100%/2   | Total: 20m 51s | Avg: 10m 25s | Max: 10m 34s | Hits:  92%/1176  
      🟩 12.9               Pass: 100%/21  | Total:  2h 15m | Avg:  6m 28s | Max: 14m 43s | Hits:  94%/12095 
    🟩 cudacxx
      🟩 nvcc12.0           Pass: 100%/3   | Total: 24m 05s | Avg:  8m 01s | Max: 14m 51s | Hits:  92%/1475  
      🟩 nvcc12.8           Pass: 100%/2   | Total: 20m 51s | Avg: 10m 25s | Max: 10m 34s | Hits:  92%/1176  
      🟩 nvcc12.9           Pass: 100%/21  | Total:  2h 15m | Avg:  6m 28s | Max: 14m 43s | Hits:  94%/12095 
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/26  | Total:  3h 00m | Avg:  6m 57s | Max: 14m 51s | Hits:  94%/14746 
    🟩 cxx
      🟩 Clang14            Pass: 100%/2   | Total:  9m 33s | Avg:  4m 46s | Max:  5m 10s | Hits:  94%/1184  
      🟩 Clang15            Pass: 100%/1   | Total:  4m 53s | Avg:  4m 53s | Max:  4m 53s | Hits:  94%/590   
      🟩 Clang16            Pass: 100%/1   | Total:  5m 17s | Avg:  5m 17s | Max:  5m 17s | Hits:  94%/590   
      🟩 Clang17            Pass: 100%/1   | Total:  5m 04s | Avg:  5m 04s | Max:  5m 04s | Hits:  94%/590   
      🟩 Clang18            Pass: 100%/1   | Total:  4m 48s | Avg:  4m 48s | Max:  4m 48s | Hits:  94%/590   
      🟩 Clang19            Pass: 100%/4   | Total: 27m 23s | Avg:  6m 50s | Max: 13m 34s | Hits:  95%/2360  
      🟩 GCC10              Pass: 100%/2   | Total: 10m 07s | Avg:  5m 03s | Max:  5m 16s | Hits:  94%/1184  
      🟩 GCC11              Pass: 100%/1   | Total:  5m 23s | Avg:  5m 23s | Max:  5m 23s | Hits:  94%/590   
      🟩 GCC12              Pass: 100%/1   | Total:  6m 03s | Avg:  6m 03s | Max:  6m 03s | Hits:  94%/590   
      🟩 GCC13              Pass: 100%/8   | Total: 51m 57s | Avg:  6m 29s | Max: 13m 13s | Hits:  95%/4720  
      🟩 MSVC14.39          Pass: 100%/1   | Total: 14m 51s | Avg: 14m 51s | Max: 14m 51s | Hits:  84%/291   
      🟩 MSVC14.43          Pass: 100%/1   | Total: 14m 43s | Avg: 14m 43s | Max: 14m 43s | Hits:  84%/291   
      🟩 NVHPC25.3          Pass: 100%/2   | Total: 20m 51s | Avg: 10m 25s | Max: 10m 34s | Hits:  92%/1176  
    🟩 cxx_family
      🟩 Clang              Pass: 100%/10  | Total: 56m 58s | Avg:  5m 41s | Max: 13m 34s | Hits:  94%/5904  
      🟩 GCC                Pass: 100%/12  | Total:  1h 13m | Avg:  6m 07s | Max: 13m 13s | Hits:  94%/7084  
      🟩 MSVC               Pass: 100%/2   | Total: 29m 34s | Avg: 14m 47s | Max: 14m 51s | Hits:  84%/582   
      🟩 NVHPC              Pass: 100%/2   | Total: 20m 51s | Avg: 10m 25s | Max: 10m 34s | Hits:  92%/1176  
    🟩 gpu
      🟩 h100               Pass: 100%/2   | Total: 13m 20s | Avg:  6m 40s | Max:  8m 55s | Hits:  96%/1180  
      🟩 rtx2080            Pass: 100%/24  | Total:  2h 47m | Avg:  6m 58s | Max: 14m 51s | Hits:  93%/13566 
    🟩 jobs
      🟩 Build              Pass: 100%/23  | Total:  2h 25m | Avg:  6m 18s | Max: 14m 51s | Hits:  93%/12976 
      🟩 Test               Pass: 100%/3   | Total: 35m 42s | Avg: 11m 54s | Max: 13m 34s | Hits:  99%/1770  
    🟩 sm
      🟩 90                 Pass: 100%/3   | Total: 17m 47s | Avg:  5m 55s | Max:  8m 55s | Hits:  95%/1770  
      🟩 90a                Pass: 100%/1   | Total:  4m 41s | Avg:  4m 41s | Max:  4m 41s | Hits:  94%/590   
    🟩 std
      🟩 17                 Pass: 100%/4   | Total: 24m 26s | Avg:  6m 06s | Max: 10m 34s | Hits:  93%/2358  
      🟩 20                 Pass: 100%/22  | Total:  2h 36m | Avg:  7m 06s | Max: 14m 51s | Hits:  94%/12388 
    
  • 🟩 python: Pass: 100%/12 | Total: 1h 54m | Avg: 9m 31s | Max: 22m 14s

    🟩 cpu
      🟩 amd64              Pass: 100%/12  | Total:  1h 54m | Avg:  9m 31s | Max: 22m 14s
    🟩 ctk
      🟩 12.9               Pass: 100%/12  | Total:  1h 54m | Avg:  9m 31s | Max: 22m 14s
    🟩 cudacxx
      🟩 nvcc12.9           Pass: 100%/12  | Total:  1h 54m | Avg:  9m 31s | Max: 22m 14s
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/12  | Total:  1h 54m | Avg:  9m 31s | Max: 22m 14s
    🟩 cxx
      🟩 GCC13              Pass: 100%/12  | Total:  1h 54m | Avg:  9m 31s | Max: 22m 14s
    🟩 cxx_family
      🟩 GCC                Pass: 100%/12  | Total:  1h 54m | Avg:  9m 31s | Max: 22m 14s
    🟩 gpu
      🟩 rtxa6000           Pass: 100%/12  | Total:  1h 54m | Avg:  9m 31s | Max: 22m 14s
    🟩 jobs
      🟩 Build cuda.cccl    Pass: 100%/2   | Total:  6m 42s | Avg:  3m 21s | Max:  3m 22s
      🟩 Build cuda.cooperative Pass: 100%/2   | Total:  6m 50s | Avg:  3m 25s | Max:  3m 28s
      🟩 Build cuda.parallel Pass: 100%/2   | Total: 16m 01s | Avg:  8m 00s | Max:  8m 17s
      🟩 Test cuda.cccl     Pass: 100%/2   | Total:  9m 19s | Avg:  4m 39s | Max:  4m 47s
      🟩 Test cuda.cooperative Pass: 100%/2   | Total: 40m 11s | Avg: 20m 05s | Max: 22m 14s
      🟩 Test cuda.parallel Pass: 100%/2   | Total: 35m 13s | Avg: 17m 36s | Max: 17m 50s
    🟩 py_version
      🟩 3.10               Pass: 100%/6   | Total: 59m 14s | Avg:  9m 52s | Max: 22m 14s
      🟩 3.13               Pass: 100%/6   | Total: 55m 02s | Avg:  9m 10s | Max: 17m 57s
    
  • 🟩 cccl: Pass: 100%/4 | Total: 24m 08s | Avg: 6m 02s | Max: 6m 45s

    🟩 cpu
      🟩 amd64              Pass: 100%/4   | Total: 24m 08s | Avg:  6m 02s | Max:  6m 45s
    🟩 ctk
      🟩 12.0               Pass: 100%/2   | Total: 10m 54s | Avg:  5m 27s | Max:  5m 45s
      🟩 12.9               Pass: 100%/2   | Total: 13m 14s | Avg:  6m 37s | Max:  6m 45s
    🟩 cudacxx
      🟩 nvcc12.0           Pass: 100%/2   | Total: 10m 54s | Avg:  5m 27s | Max:  5m 45s
      🟩 nvcc12.9           Pass: 100%/2   | Total: 13m 14s | Avg:  6m 37s | Max:  6m 45s
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/4   | Total: 24m 08s | Avg:  6m 02s | Max:  6m 45s
    🟩 cxx
      🟩 Clang14            Pass: 100%/1   | Total:  5m 45s | Avg:  5m 45s | Max:  5m 45s
      🟩 Clang19            Pass: 100%/1   | Total:  6m 29s | Avg:  6m 29s | Max:  6m 29s
      🟩 GCC12              Pass: 100%/1   | Total:  5m 09s | Avg:  5m 09s | Max:  5m 09s
      🟩 GCC13              Pass: 100%/1   | Total:  6m 45s | Avg:  6m 45s | Max:  6m 45s
    🟩 cxx_family
      🟩 Clang              Pass: 100%/2   | Total: 12m 14s | Avg:  6m 07s | Max:  6m 29s
      🟩 GCC                Pass: 100%/2   | Total: 11m 54s | Avg:  5m 57s | Max:  6m 45s
    🟩 gpu
      🟩 rtx2080            Pass: 100%/4   | Total: 24m 08s | Avg:  6m 02s | Max:  6m 45s
    🟩 jobs
      🟩 Infra              Pass: 100%/4   | Total: 24m 08s | Avg:  6m 02s | Max:  6m 45s
    
  • 🟩 stdpar: Pass: 100%/4 | Total: 20m 13s | Avg: 5m 03s | Max: 5m 59s

    🟩 cpu
      🟩 amd64              Pass: 100%/2   | Total: 11m 41s | Avg:  5m 50s | Max:  5m 59s
      🟩 arm64              Pass: 100%/2   | Total:  8m 32s | Avg:  4m 16s | Max:  4m 18s
    🟩 ctk
      🟩 12.8               Pass: 100%/4   | Total: 20m 13s | Avg:  5m 03s | Max:  5m 59s
    🟩 cudacxx
      🟩 nvcc12.8           Pass: 100%/4   | Total: 20m 13s | Avg:  5m 03s | Max:  5m 59s
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/4   | Total: 20m 13s | Avg:  5m 03s | Max:  5m 59s
    🟩 cxx
      🟩 NVHPC25.3          Pass: 100%/4   | Total: 20m 13s | Avg:  5m 03s | Max:  5m 59s
    🟩 cxx_family
      🟩 NVHPC              Pass: 100%/4   | Total: 20m 13s | Avg:  5m 03s | Max:  5m 59s
    🟩 gpu
      🟩 rtx2080            Pass: 100%/4   | Total: 20m 13s | Avg:  5m 03s | Max:  5m 59s
    🟩 jobs
      🟩 Build              Pass: 100%/4   | Total: 20m 13s | Avg:  5m 03s | Max:  5m 59s
    🟩 std
      🟩 17                 Pass: 100%/2   | Total:  9m 56s | Avg:  4m 58s | Max:  5m 42s
      🟩 20                 Pass: 100%/2   | Total: 10m 17s | Avg:  5m 08s | Max:  5m 59s
    
  • 🟩 cccl_c_parallel: Pass: 100%/2 | Total: 19m 10s | Avg: 9m 35s | Max: 16m 32s | Hits: 98%/328

    🟩 cpu
      🟩 amd64              Pass: 100%/2   | Total: 19m 10s | Avg:  9m 35s | Max: 16m 32s | Hits:  98%/328   
    🟩 ctk
      🟩 12.9               Pass: 100%/2   | Total: 19m 10s | Avg:  9m 35s | Max: 16m 32s | Hits:  98%/328   
    🟩 cudacxx
      🟩 nvcc12.9           Pass: 100%/2   | Total: 19m 10s | Avg:  9m 35s | Max: 16m 32s | Hits:  98%/328   
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/2   | Total: 19m 10s | Avg:  9m 35s | Max: 16m 32s | Hits:  98%/328   
    🟩 cxx
      🟩 GCC13              Pass: 100%/2   | Total: 19m 10s | Avg:  9m 35s | Max: 16m 32s | Hits:  98%/328   
    🟩 cxx_family
      🟩 GCC                Pass: 100%/2   | Total: 19m 10s | Avg:  9m 35s | Max: 16m 32s | Hits:  98%/328   
    🟩 gpu
      🟩 rtx2080            Pass: 100%/2   | Total: 19m 10s | Avg:  9m 35s | Max: 16m 32s | Hits:  98%/328   
    🟩 jobs
      🟩 Build              Pass: 100%/1   | Total:  2m 38s | Avg:  2m 38s | Max:  2m 38s | Hits:  98%/164   
      🟩 Test               Pass: 100%/1   | Total: 16m 32s | Avg: 16m 32s | Max: 16m 32s | Hits:  98%/164   
    

👃 Inspect Changes

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

🏃‍ Runner counts (total jobs: 187)

# Runner
129 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

@shwina
Copy link
Contributor

shwina commented May 21, 2025

Yeah, I was wondering about that, too, but didn't get to drilling down yet. It's probably something to do with auditwheel repair, but I don't understand how my changes could cause this.

It might be useful for debugging to look at the wheel name before and after the call to auditwheel repair.

@oleksandr-pavlyk oleksandr-pavlyk self-requested a review May 21, 2025 18:24
for libname in ("nvrtc", "nvJitLink"):
_load_nvidia_dynamic_library(libname)

from ._bindings_impl import * # noqa: E402 F403
Copy link
Contributor

Choose a reason for hiding this comment

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

I would bite a bullet and explicitly enumerate imported symbols here. All exported symbols are documented in _bindings.pyi.

from ._bindings_impl import (
    IntEnumerationMember,
    TypeEnum,
    OpKind,
    IteratorKind,
    SortOrder,
    is_TypeEnum,
    is_OpKind, 
    is_IteratorKind,
    is_SortOrder,
    Op,
    TypeInfo,
    Value,
    Pointer,
    make_pointer_object,
    IteratorState,
    Iterator,
    CommonData,
    DeviceReduceBuildResult, 
    DeviceScanBuildResult,
    DeviceSegmentedReduceBuildResult,
    DeviceMergeSortBuildResult,
    DeviceUniqueByKeyBuildResult,
    DeviceRadixSortBuildResult,
    DeviceUnaryTransform,
    DeviceBinaryTransform,
)

Also, was renaming of _bindings.pyi necessary?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I would bite a bullet and explicitly enumerate imported symbols here. All exported symbols are documented in _bindings.pyi.

Generally I prefer DRY-ness over investing human energy (now and on-going) into working around a lack of smartness in tooling. But I'm happy to go with the flow: @shwina, @leofang what's your take on this?

Also, was renaming of _bindings.pyi necessary?

I don't know, will find out (should be quick).

Copy link
Member

Choose a reason for hiding this comment

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

Don't worry about explicit import. I still have it on my plate to auto-generate the C bindings, and by the time we sort it out this would be moot. We've conquered so many C libraries, there's no reason I can't autogenerate for CCCL C 🙂

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Also, was renaming of _bindings.pyi necessary?

It turns out "no" (thanks): commit 04c8b0a

Copy link
Contributor

Choose a reason for hiding this comment

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

I think this is one of the few cases where import * is actually the most idiomatic solution. We can define __all__ in the module being imported from to define exactly what symbols get imported by import *.

@rwgk
Copy link
Contributor Author

rwgk commented May 21, 2025

Yeah, I was wondering about that, too, but didn't get to drilling down yet. It's probably something to do with auditwheel repair, but I don't understand how my changes could cause this.

It might be useful for debugging to look at the wheel name before and after the call to auditwheel repair.

Copy-pasting from CI log file below.

The original and modified wheel names lined up for easy comparison:

cuda_parallel-0.1.3.1.0-cp313-cp313-linux_x86_64.whl
cuda_parallel-0.1.3.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

This looks like a smoking gun:

INFO:auditwheel.main_repair:Wheel is eligible for a higher priority tag. You requested manylinux_2_28_x86_64 but I have found this wheel is eligible for manylinux_2_27_x86_64.

For easy reference, the command leading to that message is:

python -m auditwheel repair \
    --exclude 'libcuda.so*' \
    --exclude 'libnvrtc.so*' \
    --exclude 'libnvJitLink.so*' \
    cuda_parallel-*.whl

How is that requesting manylinux_2_28_x86_64? — Looking into it ...


https://github.com/NVIDIA/cccl/actions/runs/15166879093/job/42647012005?pr=4735

logs_38920744335.zip

2025-05-21T16:04:49.8563648Z Collecting patchelf                                
2025-05-21T16:04:49.8968221Z   Downloading patchelf-0.17.2.2-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.musllinux_1_1_x86_64.whl.metadata (3.5 kB)
2025-05-21T16:04:50.0902316Z Collecting auditwheel                              
2025-05-21T16:04:50.1028346Z   Downloading auditwheel-6.3.0-py3-none-any.whl.metadata (8.1 kB)
2025-05-21T16:04:50.2138739Z Collecting packaging>=20.9 (from auditwheel)       
2025-05-21T16:04:50.2145855Z   Using cached packaging-25.0-py3-none-any.whl.metadata (3.3 kB)
2025-05-21T16:04:50.4391586Z Collecting pyelftools>=0.24 (from auditwheel)      
2025-05-21T16:04:50.4504305Z   Downloading pyelftools-0.32-py3-none-any.whl.metadata (372 bytes)
2025-05-21T16:04:50.4702508Z Downloading patchelf-0.17.2.2-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.musllinux_1_1_x86_64.whl (466 kB)
2025-05-21T16:04:50.5204460Z Downloading auditwheel-6.3.0-py3-none-any.whl (48 kB)
2025-05-21T16:04:50.5268669Z Using cached packaging-25.0-py3-none-any.whl (66 kB)
2025-05-21T16:04:50.5385841Z Downloading pyelftools-0.32-py3-none-any.whl (188 kB)
2025-05-21T16:04:50.5550446Z Installing collected packages: pyelftools, patchelf, packaging, auditwheel
2025-05-21T16:04:50.7470638Z                                                    
2025-05-21T16:04:50.7480365Z Successfully installed auditwheel-6.3.0 packaging-25.0 patchelf-0.17.2.2 pyelftools-0.32
2025-05-21T16:04:50.7481664Z WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
2025-05-21T16:04:51.0182488Z INFO:auditwheel.main_repair:Repairing cuda_parallel-0.1.3.1.0-cp313-cp313-linux_x86_64.whl
2025-05-21T16:04:51.0399577Z INFO:auditwheel.lddtree:Excluding libnvJitLink.so.12
2025-05-21T16:04:51.0858979Z INFO:auditwheel.lddtree:Excluding libnvrtc.so.12   
2025-05-21T16:04:51.0860723Z INFO:auditwheel.lddtree:Excluding libcuda.so.1     
2025-05-21T16:04:51.0866076Z INFO:auditwheel.lddtree:Excluding libcuda.so.1     
2025-05-21T16:04:51.0999369Z INFO:auditwheel.lddtree:Excluding libnvJitLink.so.12
2025-05-21T16:04:51.1414024Z INFO:auditwheel.lddtree:Excluding libnvrtc.so.12   
2025-05-21T16:04:51.1417982Z INFO:auditwheel.lddtree:Excluding libcuda.so.1     
2025-05-21T16:04:51.1672796Z INFO:auditwheel.main_repair:Wheel is eligible for a higher priority tag. You requested manylinux_2_28_x86_64 but I have found this wheel is eligible for manylinux_2_27_x86_64.
2025-05-21T16:04:51.1834841Z INFO:auditwheel.wheeltools:Previous filename tags: linux_x86_64
2025-05-21T16:04:51.1839877Z INFO:auditwheel.wheeltools:New filename tags: manylinux_2_27_x86_64, manylinux_2_28_x86_64
2025-05-21T16:04:51.1841544Z INFO:auditwheel.wheeltools:Previous WHEEL info tags: cp313-cp313-linux_x86_64
2025-05-21T16:04:51.1842126Z INFO:auditwheel.wheeltools:New WHEEL info tags: cp313-cp313-manylinux_2_27_x86_64, cp313-cp313-manylinux_2_28_x86_64
2025-05-21T16:04:51.2808807Z INFO:auditwheel.main_repair:                       
2025-05-21T16:04:51.2814523Z Fixed-up wheel written to /workspace/python/cuda_parallel/wheelhouse/cuda_parallel-0.1.3.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

@rwgk
Copy link
Contributor Author

rwgk commented May 21, 2025

For comparison:

https://github.com/NVIDIA/cccl/actions/runs/15167229298/job/42648241197

direct link to raw text

2025-05-21T16:22:04.5610147Z Successfully installed auditwheel-6.3.0 packaging-25.0 patchelf-0.17.2.2 pyelftools-0.32
2025-05-21T16:22:04.5617231Z WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
2025-05-21T16:22:04.5700160Z
2025-05-21T16:22:04.5702515Z [notice] A new release of pip is available: 25.0.1 -> 25.1.1
2025-05-21T16:22:04.5706904Z [notice] To update, run: pip install --upgrade pip
2025-05-21T16:22:04.7452084Z Python 3.13.3
2025-05-21T16:22:04.9610911Z INFO:auditwheel.main_repair:Repairing cuda_parallel-0.1.3.1.0-cp313-cp313-linux_x86_64.whl
2025-05-21T16:22:04.9888833Z INFO:auditwheel.lddtree:Excluding libcuda.so.1
2025-05-21T16:22:05.0267830Z INFO:auditwheel.lddtree:Excluding libcuda.so.1
2025-05-21T16:22:05.0940052Z INFO:auditwheel.lddtree:Excluding libcuda.so.1
2025-05-21T16:22:06.1561201Z INFO:auditwheel.wheeltools:Previous filename tags: linux_x86_64
2025-05-21T16:22:06.1561839Z INFO:auditwheel.wheeltools:New filename tags: manylinux_2_28_x86_64
2025-05-21T16:22:06.1562288Z INFO:auditwheel.wheeltools:Previous WHEEL info tags: cp313-cp313-linux_x86_64
2025-05-21T16:22:06.1562706Z INFO:auditwheel.wheeltools:New WHEEL info tags: cp313-cp313-manylinux_2_28_x86_64
2025-05-21T16:22:15.2706374Z INFO:auditwheel.main_repair:
2025-05-21T16:22:15.2708937Z Fixed-up wheel written to /workspace/python/cuda_parallel/wheelhouse/cuda_parallel-0.1.3.1.0-cp313-cp313-manylinux_2_28_x86_64.whl

And the diff of selected parts (I removed the INFO:auditwheel.lddtree:Excluding lines in both):

 Successfully installed auditwheel-6.3.0 packaging-25.0 patchelf-0.17.2.2 pyelftools-0.32
-[notice] A new release of pip is available: 25.0.1 -> 25.1.1
 INFO:auditwheel.main_repair:Repairing cuda_parallel-0.1.3.1.0-cp313-cp313-linux_x86_64.whl
+INFO:auditwheel.main_repair:Wheel is eligible for a higher priority tag. You requested manylinux_2_28_x86_64 but I have found this wheel is eligible for manylinux_2_27_x86_64.
 INFO:auditwheel.wheeltools:Previous filename tags: linux_x86_64
-INFO:auditwheel.wheeltools:New filename tags: manylinux_2_28_x86_64
+INFO:auditwheel.wheeltools:New filename tags: manylinux_2_27_x86_64, manylinux_2_28_x86_64
 INFO:auditwheel.wheeltools:Previous WHEEL info tags: cp313-cp313-linux_x86_64
-INFO:auditwheel.wheeltools:New WHEEL info tags: cp313-cp313-manylinux_2_28_x86_64
+INFO:auditwheel.wheeltools:New WHEEL info tags: cp313-cp313-manylinux_2_27_x86_64, cp313-cp313-manylinux_2_28_x86_64
 INFO:auditwheel.main_repair:
-Fixed-up wheel written to /workspace/python/cuda_parallel/wheelhouse/cuda_parallel-0.1.3.1.0-cp313-cp313-manylinux_2_28_x86_64.whl
+Fixed-up wheel written to /workspace/python/cuda_parallel/wheelhouse/cuda_parallel-0.1.3.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

I'm still mystified ...

@leofang
Copy link
Member

leofang commented May 21, 2025

Looks like the wheel name we have is OK. It's called "compressed tag sets": pypa/auditwheel#314. I check locally (we can add this to the CI later) that twine check passes. I think we should just merge this PR.

If we're really unhappy about the name, I think it can be changed manually:

$ python -m wheel tags --python-tag cp313 --abi-tag cp313 --platform-tag manylinux_2_27_x86_64 cuda_parallel-0.1.3.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl 
cuda_parallel-0.1.3.1.0-cp313-cp313-manylinux_2_27_x86_64.whl
$ ls -lt
total 36108
-rw-r--r-- 1 leof hardware   830118 May 21 20:26 cuda_parallel-0.1.3.1.0-cp313-cp313-manylinux_2_27_x86_64.whl
...

@leofang
Copy link
Member

leofang commented May 21, 2025

(I still don't know why multiple platform tags were generated, though. Was only saying that the name we have seems to be permitted by the standard.)

btw @rwgk there's a conflict that we need to resolve.

@rwgk
Copy link
Contributor Author

rwgk commented May 21, 2025

(I still don't know why multiple platform tags were generated, though. Was only saying that the name we have seems to be permitted by the standard.)

According to this ChatGPT conversation:

✅ TL;DR

  • The double-tag suffix like .manylinux_2_27_x86_64.manylinux_2_28_x86_64 is correct and intentional.

  • It's auditwheel 6+ reflecting PEP 600-style multi-platform compatibility.

  • If you prefer the old style, you’d need to:

    • Downgrade auditwheel (not recommended).

    • Or post-process the wheel filename (possible, but fragile).

btw @rwgk there's a conflict that we need to resolve.

I'll take care of it before git pushing next time.

@shwina
Copy link
Contributor

shwina commented May 21, 2025

Thanks both - sounds like we're good to merge!

@rwgk
Copy link
Contributor Author

rwgk commented May 21, 2025

Another round: two commits I have already + I'm just about to work on the comment for the preloading.

For the _bindings_impl name, I'm thinking _cy_bindings, _cybindings, or _bindings_ext would be better (in order of my preference).

If you have a different preference, please let me know.

Hopefully only one more CI run will get us there.

@shwina
Copy link
Contributor

shwina commented May 21, 2025

If you have a different preference, please let me know.

_bindings_impl sounds fine to me. I prefer this over cy_* (doesn't really matter that we use Cython), or _ext (extension? external?)

@rwgk
Copy link
Contributor Author

rwgk commented May 21, 2025

If you have a different preference, please let me know.

_bindings_impl sounds fine to me. I prefer this over cy_* (doesn't really matter that we use Cython), or _ext (extension? external?)

Sorry, I saw this too late (only just now).

@shwina
Copy link
Contributor

shwina commented May 21, 2025

Sorry, I saw this too late (only just now).

Can we fix it? cy_ isn't necessarily more informative than _impl IMO

@rwgk
Copy link
Contributor Author

rwgk commented May 21, 2025

Sorry, I saw this too late (only just now).

Can we fix it? cy_ isn't necessarily more informative than _impl IMO

Done: commit d5d5c97

@github-actions
Copy link
Contributor

🟨 CI finished in 2h 14m: Pass: 95%/187 | Total: 2d 18h | Avg: 21m 11s | Max: 1h 23m | Hits: 87%/289419
  • 🟨 python: Pass: 33%/12 | Total: 1h 02m | Avg: 5m 12s | Max: 17m 58s

    🟨 jobs
      🟥 Build cuda.cccl    Pass:   0%/2   | Total:  5m 00s | Avg:  2m 30s | Max:  2m 33s
      🟥 Build cuda.cooperative Pass:   0%/2   | Total:  4m 51s | Avg:  2m 25s | Max:  2m 29s
      🟩 Build cuda.parallel Pass: 100%/2   | Total: 17m 27s | Avg:  8m 43s | Max:  8m 53s
      🟥 Test cuda.cccl     Pass:   0%/2  
      🟥 Test cuda.cooperative Pass:   0%/2  
      🟩 Test cuda.parallel Pass: 100%/2   | Total: 35m 15s | Avg: 17m 37s | Max: 17m 58s
    🟨 cpu
      🟨 amd64              Pass:  33%/12  | Total:  1h 02m | Avg:  5m 12s | Max: 17m 58s
    🟨 ctk
      🟨 12.9               Pass:  33%/12  | Total:  1h 02m | Avg:  5m 12s | Max: 17m 58s
    🟨 cudacxx
      🟨 nvcc12.9           Pass:  33%/12  | Total:  1h 02m | Avg:  5m 12s | Max: 17m 58s
    🟨 cudacxx_family
      🟨 nvcc               Pass:  33%/12  | Total:  1h 02m | Avg:  5m 12s | Max: 17m 58s
    🟨 cxx
      🟨 GCC13              Pass:  33%/12  | Total:  1h 02m | Avg:  5m 12s | Max: 17m 58s
    🟨 cxx_family
      🟨 GCC                Pass:  33%/12  | Total:  1h 02m | Avg:  5m 12s | Max: 17m 58s
    🟨 gpu
      🟨 rtxa6000           Pass:  33%/12  | Total:  1h 02m | Avg:  5m 12s | Max: 17m 58s
    🟨 py_version
      🟨 3.10               Pass:  33%/6   | Total: 30m 53s | Avg:  5m 08s | Max: 17m 17s
      🟨 3.13               Pass:  33%/6   | Total: 31m 40s | Avg:  5m 16s | Max: 17m 58s
    
  • 🟩 cub: Pass: 100%/47 | Total: 1d 08h | Avg: 41m 45s | Max: 1h 18m | Hits: 82%/57406

    🟩 cpu
      🟩 amd64              Pass: 100%/45  | Total:  1d 07h | Avg: 41m 55s | Max:  1h 18m | Hits:  82%/54908 
      🟩 arm64              Pass: 100%/2   | Total:  1h 15m | Avg: 37m 59s | Max: 41m 55s | Hits:  79%/2498  
    🟩 ctk
      🟩 12.0               Pass: 100%/5   | Total:  3h 26m | Avg: 41m 19s | Max:  1h 02m | Hits:  79%/6062  
      🟩 12.8               Pass: 100%/2   | Total:  1h 48m | Avg: 54m 01s | Max: 56m 00s | Hits:  76%/2297  
      🟩 12.9               Pass: 100%/40  | Total:  1d 03h | Avg: 41m 12s | Max:  1h 18m | Hits:  83%/49047 
    🟩 cudacxx
      🟩 ClangCUDA19        Pass: 100%/2   | Total: 24m 15s | Avg: 12m 07s | Max: 12m 15s | Hits:  96%/2151  
      🟩 nvcc12.0           Pass: 100%/5   | Total:  3h 26m | Avg: 41m 19s | Max:  1h 02m | Hits:  79%/6062  
      🟩 nvcc12.8           Pass: 100%/2   | Total:  1h 48m | Avg: 54m 01s | Max: 56m 00s | Hits:  76%/2297  
      🟩 nvcc12.9           Pass: 100%/38  | Total:  1d 03h | Avg: 42m 44s | Max:  1h 18m | Hits:  82%/46896 
    🟩 cudacxx_family
      🟩 ClangCUDA          Pass: 100%/2   | Total: 24m 15s | Avg: 12m 07s | Max: 12m 15s | Hits:  96%/2151  
      🟩 nvcc               Pass: 100%/45  | Total:  1d 08h | Avg: 43m 04s | Max:  1h 18m | Hits:  81%/55255 
    🟩 cxx
      🟩 Clang14            Pass: 100%/4   | Total:  2h 21m | Avg: 35m 22s | Max: 37m 46s | Hits:  80%/4998  
      🟩 Clang15            Pass: 100%/2   | Total:  1h 22m | Avg: 41m 17s | Max: 43m 36s | Hits:  78%/2495  
      🟩 Clang16            Pass: 100%/2   | Total:  1h 19m | Avg: 39m 44s | Max: 41m 11s | Hits:  78%/2495  
      🟩 Clang17            Pass: 100%/2   | Total:  1h 29m | Avg: 44m 34s | Max: 47m 55s | Hits:  77%/2495  
      🟩 Clang18            Pass: 100%/2   | Total:  1h 24m | Avg: 42m 14s | Max: 42m 16s | Hits:  77%/2495  
      🟩 Clang19            Pass: 100%/7   | Total:  3h 23m | Avg: 29m 02s | Max: 46m 10s | Hits:  89%/8390  
      🟩 GCC7               Pass: 100%/2   | Total:  1h 23m | Avg: 41m 49s | Max: 46m 45s | Hits:  78%/2498  
      🟩 GCC8               Pass: 100%/1   | Total: 45m 14s | Avg: 45m 14s | Max: 45m 14s | Hits:  76%/1249  
      🟩 GCC9               Pass: 100%/2   | Total:  1h 29m | Avg: 44m 56s | Max: 50m 45s | Hits:  77%/2498  
      🟩 GCC10              Pass: 100%/2   | Total:  1h 31m | Avg: 45m 45s | Max: 48m 38s | Hits:  76%/2499  
      🟩 GCC11              Pass: 100%/2   | Total:  1h 41m | Avg: 50m 35s | Max: 52m 56s | Hits:  76%/2495  
      🟩 GCC12              Pass: 100%/2   | Total:  1h 39m | Avg: 49m 42s | Max: 50m 36s | Hits:  76%/2495  
      🟩 GCC13              Pass: 100%/11  | Total:  6h 13m | Avg: 33m 58s | Max: 47m 38s | Hits:  90%/13747 
      🟩 MSVC14.29          Pass: 100%/2   | Total:  2h 16m | Avg:  1h 08m | Max:  1h 14m | Hits:  76%/2130  
      🟩 MSVC14.43          Pass: 100%/2   | Total:  2h 32m | Avg:  1h 16m | Max:  1h 18m | Hits:  75%/2130  
      🟩 NVHPC25.3          Pass: 100%/2   | Total:  1h 48m | Avg: 54m 01s | Max: 56m 00s | Hits:  76%/2297  
    🟩 cxx_family
      🟩 Clang              Pass: 100%/19  | Total: 11h 20m | Avg: 35m 48s | Max: 47m 55s | Hits:  82%/23368 
      🟩 GCC                Pass: 100%/22  | Total: 14h 44m | Avg: 40m 12s | Max: 52m 56s | Hits:  83%/27481 
      🟩 MSVC               Pass: 100%/4   | Total:  4h 49m | Avg:  1h 12m | Max:  1h 18m | Hits:  76%/4260  
      🟩 NVHPC              Pass: 100%/2   | Total:  1h 48m | Avg: 54m 01s | Max: 56m 00s | Hits:  76%/2297  
    🟩 gpu
      🟩 h100               Pass: 100%/3   | Total:  1h 03m | Avg: 21m 11s | Max: 28m 31s | Hits:  97%/3750  
      🟩 rtx2080            Pass: 100%/36  | Total:  1d 03h | Avg: 45m 09s | Max:  1h 18m | Hits:  78%/43662 
      🟩 rtxa6000           Pass: 100%/8   | Total:  4h 33m | Avg: 34m 12s | Max: 47m 38s | Hits:  93%/9994  
    🟩 jobs
      🟩 Build              Pass: 100%/39  | Total:  1d 04h | Avg: 44m 20s | Max:  1h 18m | Hits:  78%/47410 
      🟩 DeviceLaunch       Pass: 100%/1   | Total: 31m 16s | Avg: 31m 16s | Max: 31m 16s | Hits:  99%/1250  
      🟩 GraphCapture       Pass: 100%/1   | Total: 27m 39s | Avg: 27m 39s | Max: 27m 39s | Hits:  99%/1250  
      🟩 HostLaunch         Pass: 100%/3   | Total:  1h 30m | Avg: 30m 08s | Max: 34m 46s | Hits:  99%/3748  
      🟩 TestGPU            Pass: 100%/3   | Total:  1h 24m | Avg: 28m 04s | Max: 33m 35s | Hits:  99%/3748  
    🟩 sm
      🟩 90                 Pass: 100%/3   | Total:  1h 03m | Avg: 21m 11s | Max: 28m 31s | Hits:  97%/3750  
      🟩 90;90a;100         Pass: 100%/1   | Total: 47m 15s | Avg: 47m 15s | Max: 47m 15s | Hits:  77%/1250  
    🟩 std
      🟩 17                 Pass: 100%/21  | Total: 16h 19m | Avg: 46m 38s | Max:  1h 18m | Hits:  78%/25386 
      🟩 20                 Pass: 100%/26  | Total: 16h 23m | Avg: 37m 49s | Max:  1h 14m | Hits:  85%/32020 
    
  • 🟩 thrust: Pass: 100%/47 | Total: 21h 43m | Avg: 27m 43s | Max: 1h 23m | Hits: 77%/89096

    🟩 cmake_options
      🟩 -DTHRUST_DISPATCH_TYPE=Force32bit Pass: 100%/2   | Total: 40m 40s | Avg: 20m 20s | Max: 26m 54s | Hits:  84%/3794  
    🟩 cpu
      🟩 amd64              Pass: 100%/45  | Total: 21h 02m | Avg: 28m 02s | Max:  1h 23m | Hits:  77%/85303 
      🟩 arm64              Pass: 100%/2   | Total: 41m 20s | Avg: 20m 40s | Max: 23m 18s | Hits:  70%/3793  
    🟩 ctk
      🟩 12.0               Pass: 100%/5   | Total:  2h 30m | Avg: 30m 02s | Max:  1h 08m | Hits:  71%/9475  
      🟩 12.8               Pass: 100%/2   | Total:  2h 37m | Avg:  1h 18m | Max:  1h 23m | Hits:  67%/3790  
      🟩 12.9               Pass: 100%/40  | Total: 16h 35m | Avg: 24m 52s | Max:  1h 14m | Hits:  78%/75831 
    🟩 cudacxx
      🟩 ClangCUDA19        Pass: 100%/2   | Total: 27m 20s | Avg: 13m 40s | Max: 13m 45s | Hits:  78%/3792  
      🟩 nvcc12.0           Pass: 100%/5   | Total:  2h 30m | Avg: 30m 02s | Max:  1h 08m | Hits:  71%/9475  
      🟩 nvcc12.8           Pass: 100%/2   | Total:  2h 37m | Avg:  1h 18m | Max:  1h 23m | Hits:  67%/3790  
      🟩 nvcc12.9           Pass: 100%/38  | Total: 16h 07m | Avg: 25m 28s | Max:  1h 14m | Hits:  78%/72039 
    🟩 cudacxx_family
      🟩 ClangCUDA          Pass: 100%/2   | Total: 27m 20s | Avg: 13m 40s | Max: 13m 45s | Hits:  78%/3792  
      🟩 nvcc               Pass: 100%/45  | Total: 21h 16m | Avg: 28m 21s | Max:  1h 23m | Hits:  77%/85304 
    🟩 cxx
      🟩 Clang14            Pass: 100%/4   | Total:  1h 13m | Avg: 18m 28s | Max: 18m 52s | Hits:  79%/7584  
      🟩 Clang15            Pass: 100%/2   | Total: 43m 00s | Avg: 21m 30s | Max: 22m 19s | Hits:  70%/3792  
      🟩 Clang16            Pass: 100%/2   | Total: 49m 27s | Avg: 24m 43s | Max: 26m 17s | Hits:  69%/3792  
      🟩 Clang17            Pass: 100%/2   | Total: 42m 03s | Avg: 21m 01s | Max: 21m 38s | Hits:  70%/3792  
      🟩 Clang18            Pass: 100%/2   | Total: 44m 45s | Avg: 22m 22s | Max: 22m 39s | Hits:  70%/3792  
      🟩 Clang19            Pass: 100%/7   | Total:  1h 47m | Avg: 15m 23s | Max: 22m 51s | Hits:  81%/13272 
      🟩 GCC7               Pass: 100%/2   | Total: 45m 18s | Avg: 22m 39s | Max: 24m 47s | Hits:  80%/3794  
      🟩 GCC8               Pass: 100%/1   | Total: 25m 57s | Avg: 25m 57s | Max: 25m 57s | Hits:  70%/1897  
      🟩 GCC9               Pass: 100%/2   | Total: 50m 11s | Avg: 25m 05s | Max: 25m 43s | Hits:  79%/3794  
      🟩 GCC10              Pass: 100%/2   | Total: 56m 30s | Avg: 28m 15s | Max: 29m 35s | Hits:  69%/3794  
      🟩 GCC11              Pass: 100%/2   | Total: 48m 33s | Avg: 24m 16s | Max: 25m 53s | Hits:  69%/3794  
      🟩 GCC12              Pass: 100%/2   | Total: 56m 42s | Avg: 28m 21s | Max: 30m 23s | Hits:  69%/3794  
      🟩 GCC13              Pass: 100%/10  | Total:  3h 05m | Avg: 18m 33s | Max: 28m 42s | Hits:  87%/18970 
      🟩 MSVC14.29          Pass: 100%/2   | Total:  2h 16m | Avg:  1h 08m | Max:  1h 08m | Hits:  66%/3778  
      🟩 MSVC14.43          Pass: 100%/3   | Total:  2h 58m | Avg: 59m 38s | Max:  1h 14m | Hits:  73%/5667  
      🟩 NVHPC25.3          Pass: 100%/2   | Total:  2h 37m | Avg:  1h 18m | Max:  1h 23m | Hits:  67%/3790  
    🟩 cxx_family
      🟩 Clang              Pass: 100%/19  | Total:  6h 00m | Avg: 18m 59s | Max: 26m 17s | Hits:  76%/36024 
      🟩 GCC                Pass: 100%/21  | Total:  7h 48m | Avg: 22m 19s | Max: 30m 23s | Hits:  80%/39837 
      🟩 MSVC               Pass: 100%/5   | Total:  5h 15m | Avg:  1h 03m | Max:  1h 14m | Hits:  70%/9445  
      🟩 NVHPC              Pass: 100%/2   | Total:  2h 37m | Avg:  1h 18m | Max:  1h 23m | Hits:  67%/3790  
    🟩 gpu
      🟩 h100               Pass: 100%/2   | Total: 21m 15s | Avg: 10m 37s | Max: 12m 43s | Hits:  94%/3794  
      🟩 rtx2080            Pass: 100%/35  | Total: 17h 27m | Avg: 29m 55s | Max:  1h 23m | Hits:  72%/66351 
      🟩 rtx4090            Pass: 100%/10  | Total:  3h 54m | Avg: 23m 28s | Max:  1h 14m | Hits:  88%/18951 
    🟩 jobs
      🟩 Build              Pass: 100%/40  | Total: 20h 02m | Avg: 30m 03s | Max:  1h 23m | Hits:  73%/75827 
      🟩 TestCPU            Pass: 100%/3   | Total: 50m 03s | Avg: 16m 41s | Max: 31m 31s | Hits:  99%/5682  
      🟩 TestGPU            Pass: 100%/4   | Total: 51m 13s | Avg: 12m 48s | Max: 13m 46s | Hits:  99%/7587  
    🟩 sm
      🟩 90                 Pass: 100%/2   | Total: 21m 15s | Avg: 10m 37s | Max: 12m 43s | Hits:  94%/3794  
      🟩 90;90a;100         Pass: 100%/1   | Total: 23m 14s | Avg: 23m 14s | Max: 23m 14s | Hits:  90%/1897  
    🟩 std
      🟩 17                 Pass: 100%/21  | Total: 11h 33m | Avg: 33m 02s | Max:  1h 23m | Hits:  72%/39803 
      🟩 20                 Pass: 100%/24  | Total:  9h 28m | Avg: 23m 41s | Max:  1h 14m | Hits:  80%/45499 
    
  • 🟩 libcudacxx: Pass: 100%/45 | Total: 7h 05m | Avg: 9m 26s | Max: 29m 21s | Hits: 95%/127843

    🟩 cpu
      🟩 amd64              Pass: 100%/43  | Total:  6h 53m | Avg:  9m 37s | Max: 29m 21s | Hits:  95%/121222
      🟩 arm64              Pass: 100%/2   | Total: 11m 19s | Avg:  5m 39s | Max:  6m 15s | Hits:  98%/6621  
    🟩 ctk
      🟩 12.0               Pass: 100%/5   | Total: 42m 47s | Avg:  8m 33s | Max: 24m 57s | Hits:  99%/16189 
      🟩 12.8               Pass: 100%/2   | Total: 25m 14s | Avg: 12m 37s | Max: 13m 03s | Hits:  98%/6571  
      🟩 12.9               Pass: 100%/38  | Total:  5h 57m | Avg:  9m 24s | Max: 29m 21s | Hits:  94%/105083
    🟩 cudacxx
      🟩 ClangCUDA19        Pass: 100%/2   | Total: 52m 31s | Avg: 26m 15s | Max: 29m 21s | Hits:  26%/6585  
      🟩 nvcc12.0           Pass: 100%/5   | Total: 42m 47s | Avg:  8m 33s | Max: 24m 57s | Hits:  99%/16189 
      🟩 nvcc12.8           Pass: 100%/2   | Total: 25m 14s | Avg: 12m 37s | Max: 13m 03s | Hits:  98%/6571  
      🟩 nvcc12.9           Pass: 100%/36  | Total:  5h 04m | Avg:  8m 27s | Max: 28m 54s | Hits:  98%/98498 
    🟩 cudacxx_family
      🟩 ClangCUDA          Pass: 100%/2   | Total: 52m 31s | Avg: 26m 15s | Max: 29m 21s | Hits:  26%/6585  
      🟩 nvcc               Pass: 100%/43  | Total:  6h 12m | Avg:  8m 40s | Max: 28m 54s | Hits:  99%/121258
    🟩 cxx
      🟩 Clang14            Pass: 100%/4   | Total: 19m 42s | Avg:  4m 55s | Max:  5m 22s | Hits:  99%/13126 
      🟩 Clang15            Pass: 100%/2   | Total: 10m 36s | Avg:  5m 18s | Max:  5m 30s | Hits:  99%/6581  
      🟩 Clang16            Pass: 100%/2   | Total: 11m 18s | Avg:  5m 39s | Max:  6m 10s | Hits:  97%/6581  
      🟩 Clang17            Pass: 100%/2   | Total: 11m 04s | Avg:  5m 32s | Max:  5m 35s | Hits:  99%/6581  
      🟩 Clang18            Pass: 100%/2   | Total: 10m 22s | Avg:  5m 11s | Max:  5m 20s | Hits:  99%/6581  
      🟩 Clang19            Pass: 100%/6   | Total:  1h 20m | Avg: 13m 21s | Max: 29m 21s | Hits:  70%/16476 
      🟩 GCC7               Pass: 100%/2   | Total:  9m 15s | Avg:  4m 37s | Max:  4m 48s | Hits:  99%/6517  
      🟩 GCC8               Pass: 100%/1   | Total:  4m 58s | Avg:  4m 58s | Max:  4m 58s | Hits:  98%/3269  
      🟩 GCC9               Pass: 100%/2   | Total:  9m 58s | Avg:  4m 59s | Max:  5m 38s | Hits:  99%/6529  
      🟩 GCC10              Pass: 100%/2   | Total:  9m 51s | Avg:  4m 55s | Max:  5m 01s | Hits:  99%/6583  
      🟩 GCC11              Pass: 100%/2   | Total: 10m 01s | Avg:  5m 00s | Max:  5m 02s | Hits:  99%/6579  
      🟩 GCC12              Pass: 100%/2   | Total: 10m 34s | Avg:  5m 17s | Max:  5m 18s | Hits:  98%/6583  
      🟩 GCC13              Pass: 100%/10  | Total:  1h 33m | Avg:  9m 23s | Max: 19m 34s | Hits:  99%/16720 
      🟩 MSVC14.29          Pass: 100%/2   | Total: 51m 34s | Avg: 25m 47s | Max: 26m 37s | Hits:  98%/6257  
      🟩 MSVC14.43          Pass: 100%/2   | Total: 56m 41s | Avg: 28m 20s | Max: 28m 54s | Hits:  99%/6309  
      🟩 NVHPC25.3          Pass: 100%/2   | Total: 25m 14s | Avg: 12m 37s | Max: 13m 03s | Hits:  98%/6571  
    🟩 cxx_family
      🟩 Clang              Pass: 100%/18  | Total:  2h 23m | Avg:  7m 57s | Max: 29m 21s | Hits:  90%/55926 
      🟩 GCC                Pass: 100%/21  | Total:  2h 28m | Avg:  7m 04s | Max: 19m 34s | Hits:  99%/52780 
      🟩 MSVC               Pass: 100%/4   | Total:  1h 48m | Avg: 27m 03s | Max: 28m 54s | Hits:  98%/12566 
      🟩 NVHPC              Pass: 100%/2   | Total: 25m 14s | Avg: 12m 37s | Max: 13m 03s | Hits:  98%/6571  
    🟩 gpu
      🟩 h100               Pass: 100%/2   | Total: 19m 55s | Avg:  9m 57s | Max: 14m 51s | Hits:  99%/3393  
      🟩 rtx2080            Pass: 100%/43  | Total:  6h 45m | Avg:  9m 25s | Max: 29m 21s | Hits:  95%/124450
    🟩 jobs
      🟩 Build              Pass: 100%/39  | Total:  5h 47m | Avg:  8m 54s | Max: 29m 21s | Hits:  95%/127803
      🟩 NVRTC              Pass: 100%/2   | Total: 37m 54s | Avg: 18m 57s | Max: 19m 34s | Hits:  90%/40    
      🟩 Test               Pass: 100%/3   | Total: 37m 26s | Avg: 12m 28s | Max: 14m 51s
      🟩 VerifyCodegen      Pass: 100%/1   | Total:  2m 37s | Avg:  2m 37s | Max:  2m 37s
    🟩 sm
      🟩 75                 Pass: 100%/2   | Total: 37m 54s | Avg: 18m 57s | Max: 19m 34s | Hits:  90%/40    
      🟩 90                 Pass: 100%/2   | Total: 19m 55s | Avg:  9m 57s | Max: 14m 51s | Hits:  99%/3393  
      🟩 90;90a;100         Pass: 100%/1   | Total:  5m 48s | Avg:  5m 48s | Max:  5m 48s | Hits:  99%/3393  
    🟩 std
      🟩 17                 Pass: 100%/22  | Total:  3h 35m | Avg:  9m 48s | Max: 27m 47s | Hits:  95%/68231 
      🟩 20                 Pass: 100%/22  | Total:  3h 26m | Avg:  9m 24s | Max: 29m 21s | Hits:  94%/59612 
    
  • 🟩 cudax: Pass: 100%/26 | Total: 2h 33m | Avg: 5m 53s | Max: 12m 00s | Hits: 99%/14746

    🟩 cpu
      🟩 amd64              Pass: 100%/22  | Total:  2h 11m | Avg:  5m 58s | Max: 12m 00s | Hits:  99%/12386 
      🟩 arm64              Pass: 100%/4   | Total: 21m 51s | Avg:  5m 27s | Max:  7m 17s | Hits:  99%/2360  
    🟩 ctk
      🟩 12.0               Pass: 100%/3   | Total: 19m 19s | Avg:  6m 26s | Max: 11m 21s | Hits:  98%/1475  
      🟩 12.8               Pass: 100%/2   | Total: 17m 55s | Avg:  8m 57s | Max:  9m 03s | Hits:  97%/1176  
      🟩 12.9               Pass: 100%/21  | Total:  1h 55m | Avg:  5m 31s | Max: 12m 00s | Hits:  99%/12095 
    🟩 cudacxx
      🟩 nvcc12.0           Pass: 100%/3   | Total: 19m 19s | Avg:  6m 26s | Max: 11m 21s | Hits:  98%/1475  
      🟩 nvcc12.8           Pass: 100%/2   | Total: 17m 55s | Avg:  8m 57s | Max:  9m 03s | Hits:  97%/1176  
      🟩 nvcc12.9           Pass: 100%/21  | Total:  1h 55m | Avg:  5m 31s | Max: 12m 00s | Hits:  99%/12095 
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/26  | Total:  2h 33m | Avg:  5m 53s | Max: 12m 00s | Hits:  99%/14746 
    🟩 cxx
      🟩 Clang14            Pass: 100%/2   | Total:  7m 32s | Avg:  3m 46s | Max:  3m 49s | Hits: 100%/1184  
      🟩 Clang15            Pass: 100%/1   | Total:  3m 54s | Avg:  3m 54s | Max:  3m 54s | Hits: 100%/590   
      🟩 Clang16            Pass: 100%/1   | Total:  4m 02s | Avg:  4m 02s | Max:  4m 02s | Hits: 100%/590   
      🟩 Clang17            Pass: 100%/1   | Total:  4m 07s | Avg:  4m 07s | Max:  4m 07s | Hits: 100%/590   
      🟩 Clang18            Pass: 100%/1   | Total:  3m 47s | Avg:  3m 47s | Max:  3m 47s | Hits: 100%/590   
      🟩 Clang19            Pass: 100%/4   | Total: 24m 06s | Avg:  6m 01s | Max:  9m 47s | Hits: 100%/2360  
      🟩 GCC10              Pass: 100%/2   | Total: 10m 03s | Avg:  5m 01s | Max:  5m 48s | Hits:  95%/1184  
      🟩 GCC11              Pass: 100%/1   | Total:  4m 17s | Avg:  4m 17s | Max:  4m 17s | Hits:  99%/590   
      🟩 GCC12              Pass: 100%/1   | Total:  4m 13s | Avg:  4m 13s | Max:  4m 13s | Hits:  99%/590   
      🟩 GCC13              Pass: 100%/8   | Total: 47m 28s | Avg:  5m 56s | Max: 12m 00s | Hits:  99%/4720  
      🟩 MSVC14.39          Pass: 100%/1   | Total: 11m 21s | Avg: 11m 21s | Max: 11m 21s | Hits:  95%/291   
      🟩 MSVC14.43          Pass: 100%/1   | Total: 10m 27s | Avg: 10m 27s | Max: 10m 27s | Hits:  95%/291   
      🟩 NVHPC25.3          Pass: 100%/2   | Total: 17m 55s | Avg:  8m 57s | Max:  9m 03s | Hits:  97%/1176  
    🟩 cxx_family
      🟩 Clang              Pass: 100%/10  | Total: 47m 28s | Avg:  4m 44s | Max:  9m 47s | Hits: 100%/5904  
      🟩 GCC                Pass: 100%/12  | Total:  1h 06m | Avg:  5m 30s | Max: 12m 00s | Hits:  99%/7084  
      🟩 MSVC               Pass: 100%/2   | Total: 21m 48s | Avg: 10m 54s | Max: 11m 21s | Hits:  95%/582   
      🟩 NVHPC              Pass: 100%/2   | Total: 17m 55s | Avg:  8m 57s | Max:  9m 03s | Hits:  97%/1176  
    🟩 gpu
      🟩 h100               Pass: 100%/2   | Total: 12m 19s | Avg:  6m 09s | Max:  8m 24s | Hits:  99%/1180  
      🟩 rtx2080            Pass: 100%/24  | Total:  2h 20m | Avg:  5m 52s | Max: 12m 00s | Hits:  99%/13566 
    🟩 jobs
      🟩 Build              Pass: 100%/23  | Total:  2h 03m | Avg:  5m 20s | Max: 11m 21s | Hits:  99%/12976 
      🟩 Test               Pass: 100%/3   | Total: 30m 11s | Avg: 10m 03s | Max: 12m 00s | Hits:  99%/1770  
    🟩 sm
      🟩 90                 Pass: 100%/3   | Total: 16m 03s | Avg:  5m 21s | Max:  8m 24s | Hits:  99%/1770  
      🟩 90a                Pass: 100%/1   | Total:  3m 43s | Avg:  3m 43s | Max:  3m 43s | Hits:  99%/590   
    🟩 std
      🟩 17                 Pass: 100%/4   | Total: 26m 55s | Avg:  6m 43s | Max:  9m 03s | Hits:  99%/2358  
      🟩 20                 Pass: 100%/22  | Total:  2h 06m | Avg:  5m 44s | Max: 12m 00s | Hits:  99%/12388 
    
  • 🟩 cccl: Pass: 100%/4 | Total: 16m 29s | Avg: 4m 07s | Max: 4m 53s

    🟩 cpu
      🟩 amd64              Pass: 100%/4   | Total: 16m 29s | Avg:  4m 07s | Max:  4m 53s
    🟩 ctk
      🟩 12.0               Pass: 100%/2   | Total:  7m 39s | Avg:  3m 49s | Max:  3m 53s
      🟩 12.9               Pass: 100%/2   | Total:  8m 50s | Avg:  4m 25s | Max:  4m 53s
    🟩 cudacxx
      🟩 nvcc12.0           Pass: 100%/2   | Total:  7m 39s | Avg:  3m 49s | Max:  3m 53s
      🟩 nvcc12.9           Pass: 100%/2   | Total:  8m 50s | Avg:  4m 25s | Max:  4m 53s
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/4   | Total: 16m 29s | Avg:  4m 07s | Max:  4m 53s
    🟩 cxx
      🟩 Clang14            Pass: 100%/1   | Total:  3m 53s | Avg:  3m 53s | Max:  3m 53s
      🟩 Clang19            Pass: 100%/1   | Total:  3m 57s | Avg:  3m 57s | Max:  3m 57s
      🟩 GCC12              Pass: 100%/1   | Total:  3m 46s | Avg:  3m 46s | Max:  3m 46s
      🟩 GCC13              Pass: 100%/1   | Total:  4m 53s | Avg:  4m 53s | Max:  4m 53s
    🟩 cxx_family
      🟩 Clang              Pass: 100%/2   | Total:  7m 50s | Avg:  3m 55s | Max:  3m 57s
      🟩 GCC                Pass: 100%/2   | Total:  8m 39s | Avg:  4m 19s | Max:  4m 53s
    🟩 gpu
      🟩 rtx2080            Pass: 100%/4   | Total: 16m 29s | Avg:  4m 07s | Max:  4m 53s
    🟩 jobs
      🟩 Infra              Pass: 100%/4   | Total: 16m 29s | Avg:  4m 07s | Max:  4m 53s
    
  • 🟩 stdpar: Pass: 100%/4 | Total: 23m 13s | Avg: 5m 48s | Max: 6m 18s

    🟩 cpu
      🟩 amd64              Pass: 100%/2   | Total: 12m 32s | Avg:  6m 16s | Max:  6m 18s
      🟩 arm64              Pass: 100%/2   | Total: 10m 41s | Avg:  5m 20s | Max:  5m 34s
    🟩 ctk
      🟩 12.8               Pass: 100%/4   | Total: 23m 13s | Avg:  5m 48s | Max:  6m 18s
    🟩 cudacxx
      🟩 nvcc12.8           Pass: 100%/4   | Total: 23m 13s | Avg:  5m 48s | Max:  6m 18s
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/4   | Total: 23m 13s | Avg:  5m 48s | Max:  6m 18s
    🟩 cxx
      🟩 NVHPC25.3          Pass: 100%/4   | Total: 23m 13s | Avg:  5m 48s | Max:  6m 18s
    🟩 cxx_family
      🟩 NVHPC              Pass: 100%/4   | Total: 23m 13s | Avg:  5m 48s | Max:  6m 18s
    🟩 gpu
      🟩 rtx2080            Pass: 100%/4   | Total: 23m 13s | Avg:  5m 48s | Max:  6m 18s
    🟩 jobs
      🟩 Build              Pass: 100%/4   | Total: 23m 13s | Avg:  5m 48s | Max:  6m 18s
    🟩 std
      🟩 17                 Pass: 100%/2   | Total: 11m 52s | Avg:  5m 56s | Max:  6m 18s
      🟩 20                 Pass: 100%/2   | Total: 11m 21s | Avg:  5m 40s | Max:  6m 14s
    
  • 🟩 cccl_c_parallel: Pass: 100%/2 | Total: 16m 45s | Avg: 8m 22s | Max: 14m 08s | Hits: 98%/328

    🟩 cpu
      🟩 amd64              Pass: 100%/2   | Total: 16m 45s | Avg:  8m 22s | Max: 14m 08s | Hits:  98%/328   
    🟩 ctk
      🟩 12.9               Pass: 100%/2   | Total: 16m 45s | Avg:  8m 22s | Max: 14m 08s | Hits:  98%/328   
    🟩 cudacxx
      🟩 nvcc12.9           Pass: 100%/2   | Total: 16m 45s | Avg:  8m 22s | Max: 14m 08s | Hits:  98%/328   
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/2   | Total: 16m 45s | Avg:  8m 22s | Max: 14m 08s | Hits:  98%/328   
    🟩 cxx
      🟩 GCC13              Pass: 100%/2   | Total: 16m 45s | Avg:  8m 22s | Max: 14m 08s | Hits:  98%/328   
    🟩 cxx_family
      🟩 GCC                Pass: 100%/2   | Total: 16m 45s | Avg:  8m 22s | Max: 14m 08s | Hits:  98%/328   
    🟩 gpu
      🟩 rtx2080            Pass: 100%/2   | Total: 16m 45s | Avg:  8m 22s | Max: 14m 08s | Hits:  98%/328   
    🟩 jobs
      🟩 Build              Pass: 100%/1   | Total:  2m 37s | Avg:  2m 37s | Max:  2m 37s | Hits:  98%/164   
      🟩 Test               Pass: 100%/1   | Total: 14m 08s | Avg: 14m 08s | Max: 14m 08s | Hits:  98%/164   
    

👃 Inspect Changes

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

🏃‍ Runner counts (total jobs: 187)

# Runner
129 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

@github-actions
Copy link
Contributor

🟩 CI finished in 5h 16m: Pass: 100%/187 | Total: 2d 18h | Avg: 21m 27s | Max: 1h 23m | Hits: 87%/289419
  • 🟩 cub: Pass: 100%/47 | Total: 1d 08h | Avg: 41m 45s | Max: 1h 18m | Hits: 82%/57406

    🟩 cpu
      🟩 amd64              Pass: 100%/45  | Total:  1d 07h | Avg: 41m 55s | Max:  1h 18m | Hits:  82%/54908 
      🟩 arm64              Pass: 100%/2   | Total:  1h 15m | Avg: 37m 59s | Max: 41m 55s | Hits:  79%/2498  
    🟩 ctk
      🟩 12.0               Pass: 100%/5   | Total:  3h 26m | Avg: 41m 19s | Max:  1h 02m | Hits:  79%/6062  
      🟩 12.8               Pass: 100%/2   | Total:  1h 48m | Avg: 54m 01s | Max: 56m 00s | Hits:  76%/2297  
      🟩 12.9               Pass: 100%/40  | Total:  1d 03h | Avg: 41m 12s | Max:  1h 18m | Hits:  83%/49047 
    🟩 cudacxx
      🟩 ClangCUDA19        Pass: 100%/2   | Total: 24m 15s | Avg: 12m 07s | Max: 12m 15s | Hits:  96%/2151  
      🟩 nvcc12.0           Pass: 100%/5   | Total:  3h 26m | Avg: 41m 19s | Max:  1h 02m | Hits:  79%/6062  
      🟩 nvcc12.8           Pass: 100%/2   | Total:  1h 48m | Avg: 54m 01s | Max: 56m 00s | Hits:  76%/2297  
      🟩 nvcc12.9           Pass: 100%/38  | Total:  1d 03h | Avg: 42m 44s | Max:  1h 18m | Hits:  82%/46896 
    🟩 cudacxx_family
      🟩 ClangCUDA          Pass: 100%/2   | Total: 24m 15s | Avg: 12m 07s | Max: 12m 15s | Hits:  96%/2151  
      🟩 nvcc               Pass: 100%/45  | Total:  1d 08h | Avg: 43m 04s | Max:  1h 18m | Hits:  81%/55255 
    🟩 cxx
      🟩 Clang14            Pass: 100%/4   | Total:  2h 21m | Avg: 35m 22s | Max: 37m 46s | Hits:  80%/4998  
      🟩 Clang15            Pass: 100%/2   | Total:  1h 22m | Avg: 41m 17s | Max: 43m 36s | Hits:  78%/2495  
      🟩 Clang16            Pass: 100%/2   | Total:  1h 19m | Avg: 39m 44s | Max: 41m 11s | Hits:  78%/2495  
      🟩 Clang17            Pass: 100%/2   | Total:  1h 29m | Avg: 44m 34s | Max: 47m 55s | Hits:  77%/2495  
      🟩 Clang18            Pass: 100%/2   | Total:  1h 24m | Avg: 42m 14s | Max: 42m 16s | Hits:  77%/2495  
      🟩 Clang19            Pass: 100%/7   | Total:  3h 23m | Avg: 29m 02s | Max: 46m 10s | Hits:  89%/8390  
      🟩 GCC7               Pass: 100%/2   | Total:  1h 23m | Avg: 41m 49s | Max: 46m 45s | Hits:  78%/2498  
      🟩 GCC8               Pass: 100%/1   | Total: 45m 14s | Avg: 45m 14s | Max: 45m 14s | Hits:  76%/1249  
      🟩 GCC9               Pass: 100%/2   | Total:  1h 29m | Avg: 44m 56s | Max: 50m 45s | Hits:  77%/2498  
      🟩 GCC10              Pass: 100%/2   | Total:  1h 31m | Avg: 45m 45s | Max: 48m 38s | Hits:  76%/2499  
      🟩 GCC11              Pass: 100%/2   | Total:  1h 41m | Avg: 50m 35s | Max: 52m 56s | Hits:  76%/2495  
      🟩 GCC12              Pass: 100%/2   | Total:  1h 39m | Avg: 49m 42s | Max: 50m 36s | Hits:  76%/2495  
      🟩 GCC13              Pass: 100%/11  | Total:  6h 13m | Avg: 33m 58s | Max: 47m 38s | Hits:  90%/13747 
      🟩 MSVC14.29          Pass: 100%/2   | Total:  2h 16m | Avg:  1h 08m | Max:  1h 14m | Hits:  76%/2130  
      🟩 MSVC14.43          Pass: 100%/2   | Total:  2h 32m | Avg:  1h 16m | Max:  1h 18m | Hits:  75%/2130  
      🟩 NVHPC25.3          Pass: 100%/2   | Total:  1h 48m | Avg: 54m 01s | Max: 56m 00s | Hits:  76%/2297  
    🟩 cxx_family
      🟩 Clang              Pass: 100%/19  | Total: 11h 20m | Avg: 35m 48s | Max: 47m 55s | Hits:  82%/23368 
      🟩 GCC                Pass: 100%/22  | Total: 14h 44m | Avg: 40m 12s | Max: 52m 56s | Hits:  83%/27481 
      🟩 MSVC               Pass: 100%/4   | Total:  4h 49m | Avg:  1h 12m | Max:  1h 18m | Hits:  76%/4260  
      🟩 NVHPC              Pass: 100%/2   | Total:  1h 48m | Avg: 54m 01s | Max: 56m 00s | Hits:  76%/2297  
    🟩 gpu
      🟩 h100               Pass: 100%/3   | Total:  1h 03m | Avg: 21m 11s | Max: 28m 31s | Hits:  97%/3750  
      🟩 rtx2080            Pass: 100%/36  | Total:  1d 03h | Avg: 45m 09s | Max:  1h 18m | Hits:  78%/43662 
      🟩 rtxa6000           Pass: 100%/8   | Total:  4h 33m | Avg: 34m 12s | Max: 47m 38s | Hits:  93%/9994  
    🟩 jobs
      🟩 Build              Pass: 100%/39  | Total:  1d 04h | Avg: 44m 20s | Max:  1h 18m | Hits:  78%/47410 
      🟩 DeviceLaunch       Pass: 100%/1   | Total: 31m 16s | Avg: 31m 16s | Max: 31m 16s | Hits:  99%/1250  
      🟩 GraphCapture       Pass: 100%/1   | Total: 27m 39s | Avg: 27m 39s | Max: 27m 39s | Hits:  99%/1250  
      🟩 HostLaunch         Pass: 100%/3   | Total:  1h 30m | Avg: 30m 08s | Max: 34m 46s | Hits:  99%/3748  
      🟩 TestGPU            Pass: 100%/3   | Total:  1h 24m | Avg: 28m 04s | Max: 33m 35s | Hits:  99%/3748  
    🟩 sm
      🟩 90                 Pass: 100%/3   | Total:  1h 03m | Avg: 21m 11s | Max: 28m 31s | Hits:  97%/3750  
      🟩 90;90a;100         Pass: 100%/1   | Total: 47m 15s | Avg: 47m 15s | Max: 47m 15s | Hits:  77%/1250  
    🟩 std
      🟩 17                 Pass: 100%/21  | Total: 16h 19m | Avg: 46m 38s | Max:  1h 18m | Hits:  78%/25386 
      🟩 20                 Pass: 100%/26  | Total: 16h 23m | Avg: 37m 49s | Max:  1h 14m | Hits:  85%/32020 
    
  • 🟩 thrust: Pass: 100%/47 | Total: 21h 43m | Avg: 27m 43s | Max: 1h 23m | Hits: 77%/89096

    🟩 cmake_options
      🟩 -DTHRUST_DISPATCH_TYPE=Force32bit Pass: 100%/2   | Total: 40m 40s | Avg: 20m 20s | Max: 26m 54s | Hits:  84%/3794  
    🟩 cpu
      🟩 amd64              Pass: 100%/45  | Total: 21h 02m | Avg: 28m 02s | Max:  1h 23m | Hits:  77%/85303 
      🟩 arm64              Pass: 100%/2   | Total: 41m 20s | Avg: 20m 40s | Max: 23m 18s | Hits:  70%/3793  
    🟩 ctk
      🟩 12.0               Pass: 100%/5   | Total:  2h 30m | Avg: 30m 02s | Max:  1h 08m | Hits:  71%/9475  
      🟩 12.8               Pass: 100%/2   | Total:  2h 37m | Avg:  1h 18m | Max:  1h 23m | Hits:  67%/3790  
      🟩 12.9               Pass: 100%/40  | Total: 16h 35m | Avg: 24m 52s | Max:  1h 14m | Hits:  78%/75831 
    🟩 cudacxx
      🟩 ClangCUDA19        Pass: 100%/2   | Total: 27m 20s | Avg: 13m 40s | Max: 13m 45s | Hits:  78%/3792  
      🟩 nvcc12.0           Pass: 100%/5   | Total:  2h 30m | Avg: 30m 02s | Max:  1h 08m | Hits:  71%/9475  
      🟩 nvcc12.8           Pass: 100%/2   | Total:  2h 37m | Avg:  1h 18m | Max:  1h 23m | Hits:  67%/3790  
      🟩 nvcc12.9           Pass: 100%/38  | Total: 16h 07m | Avg: 25m 28s | Max:  1h 14m | Hits:  78%/72039 
    🟩 cudacxx_family
      🟩 ClangCUDA          Pass: 100%/2   | Total: 27m 20s | Avg: 13m 40s | Max: 13m 45s | Hits:  78%/3792  
      🟩 nvcc               Pass: 100%/45  | Total: 21h 16m | Avg: 28m 21s | Max:  1h 23m | Hits:  77%/85304 
    🟩 cxx
      🟩 Clang14            Pass: 100%/4   | Total:  1h 13m | Avg: 18m 28s | Max: 18m 52s | Hits:  79%/7584  
      🟩 Clang15            Pass: 100%/2   | Total: 43m 00s | Avg: 21m 30s | Max: 22m 19s | Hits:  70%/3792  
      🟩 Clang16            Pass: 100%/2   | Total: 49m 27s | Avg: 24m 43s | Max: 26m 17s | Hits:  69%/3792  
      🟩 Clang17            Pass: 100%/2   | Total: 42m 03s | Avg: 21m 01s | Max: 21m 38s | Hits:  70%/3792  
      🟩 Clang18            Pass: 100%/2   | Total: 44m 45s | Avg: 22m 22s | Max: 22m 39s | Hits:  70%/3792  
      🟩 Clang19            Pass: 100%/7   | Total:  1h 47m | Avg: 15m 23s | Max: 22m 51s | Hits:  81%/13272 
      🟩 GCC7               Pass: 100%/2   | Total: 45m 18s | Avg: 22m 39s | Max: 24m 47s | Hits:  80%/3794  
      🟩 GCC8               Pass: 100%/1   | Total: 25m 57s | Avg: 25m 57s | Max: 25m 57s | Hits:  70%/1897  
      🟩 GCC9               Pass: 100%/2   | Total: 50m 11s | Avg: 25m 05s | Max: 25m 43s | Hits:  79%/3794  
      🟩 GCC10              Pass: 100%/2   | Total: 56m 30s | Avg: 28m 15s | Max: 29m 35s | Hits:  69%/3794  
      🟩 GCC11              Pass: 100%/2   | Total: 48m 33s | Avg: 24m 16s | Max: 25m 53s | Hits:  69%/3794  
      🟩 GCC12              Pass: 100%/2   | Total: 56m 42s | Avg: 28m 21s | Max: 30m 23s | Hits:  69%/3794  
      🟩 GCC13              Pass: 100%/10  | Total:  3h 05m | Avg: 18m 33s | Max: 28m 42s | Hits:  87%/18970 
      🟩 MSVC14.29          Pass: 100%/2   | Total:  2h 16m | Avg:  1h 08m | Max:  1h 08m | Hits:  66%/3778  
      🟩 MSVC14.43          Pass: 100%/3   | Total:  2h 58m | Avg: 59m 38s | Max:  1h 14m | Hits:  73%/5667  
      🟩 NVHPC25.3          Pass: 100%/2   | Total:  2h 37m | Avg:  1h 18m | Max:  1h 23m | Hits:  67%/3790  
    🟩 cxx_family
      🟩 Clang              Pass: 100%/19  | Total:  6h 00m | Avg: 18m 59s | Max: 26m 17s | Hits:  76%/36024 
      🟩 GCC                Pass: 100%/21  | Total:  7h 48m | Avg: 22m 19s | Max: 30m 23s | Hits:  80%/39837 
      🟩 MSVC               Pass: 100%/5   | Total:  5h 15m | Avg:  1h 03m | Max:  1h 14m | Hits:  70%/9445  
      🟩 NVHPC              Pass: 100%/2   | Total:  2h 37m | Avg:  1h 18m | Max:  1h 23m | Hits:  67%/3790  
    🟩 gpu
      🟩 h100               Pass: 100%/2   | Total: 21m 15s | Avg: 10m 37s | Max: 12m 43s | Hits:  94%/3794  
      🟩 rtx2080            Pass: 100%/35  | Total: 17h 27m | Avg: 29m 55s | Max:  1h 23m | Hits:  72%/66351 
      🟩 rtx4090            Pass: 100%/10  | Total:  3h 54m | Avg: 23m 28s | Max:  1h 14m | Hits:  88%/18951 
    🟩 jobs
      🟩 Build              Pass: 100%/40  | Total: 20h 02m | Avg: 30m 03s | Max:  1h 23m | Hits:  73%/75827 
      🟩 TestCPU            Pass: 100%/3   | Total: 50m 03s | Avg: 16m 41s | Max: 31m 31s | Hits:  99%/5682  
      🟩 TestGPU            Pass: 100%/4   | Total: 51m 13s | Avg: 12m 48s | Max: 13m 46s | Hits:  99%/7587  
    🟩 sm
      🟩 90                 Pass: 100%/2   | Total: 21m 15s | Avg: 10m 37s | Max: 12m 43s | Hits:  94%/3794  
      🟩 90;90a;100         Pass: 100%/1   | Total: 23m 14s | Avg: 23m 14s | Max: 23m 14s | Hits:  90%/1897  
    🟩 std
      🟩 17                 Pass: 100%/21  | Total: 11h 33m | Avg: 33m 02s | Max:  1h 23m | Hits:  72%/39803 
      🟩 20                 Pass: 100%/24  | Total:  9h 28m | Avg: 23m 41s | Max:  1h 14m | Hits:  80%/45499 
    
  • 🟩 libcudacxx: Pass: 100%/45 | Total: 7h 05m | Avg: 9m 26s | Max: 29m 21s | Hits: 95%/127843

    🟩 cpu
      🟩 amd64              Pass: 100%/43  | Total:  6h 53m | Avg:  9m 37s | Max: 29m 21s | Hits:  95%/121222
      🟩 arm64              Pass: 100%/2   | Total: 11m 19s | Avg:  5m 39s | Max:  6m 15s | Hits:  98%/6621  
    🟩 ctk
      🟩 12.0               Pass: 100%/5   | Total: 42m 47s | Avg:  8m 33s | Max: 24m 57s | Hits:  99%/16189 
      🟩 12.8               Pass: 100%/2   | Total: 25m 14s | Avg: 12m 37s | Max: 13m 03s | Hits:  98%/6571  
      🟩 12.9               Pass: 100%/38  | Total:  5h 57m | Avg:  9m 24s | Max: 29m 21s | Hits:  94%/105083
    🟩 cudacxx
      🟩 ClangCUDA19        Pass: 100%/2   | Total: 52m 31s | Avg: 26m 15s | Max: 29m 21s | Hits:  26%/6585  
      🟩 nvcc12.0           Pass: 100%/5   | Total: 42m 47s | Avg:  8m 33s | Max: 24m 57s | Hits:  99%/16189 
      🟩 nvcc12.8           Pass: 100%/2   | Total: 25m 14s | Avg: 12m 37s | Max: 13m 03s | Hits:  98%/6571  
      🟩 nvcc12.9           Pass: 100%/36  | Total:  5h 04m | Avg:  8m 27s | Max: 28m 54s | Hits:  98%/98498 
    🟩 cudacxx_family
      🟩 ClangCUDA          Pass: 100%/2   | Total: 52m 31s | Avg: 26m 15s | Max: 29m 21s | Hits:  26%/6585  
      🟩 nvcc               Pass: 100%/43  | Total:  6h 12m | Avg:  8m 40s | Max: 28m 54s | Hits:  99%/121258
    🟩 cxx
      🟩 Clang14            Pass: 100%/4   | Total: 19m 42s | Avg:  4m 55s | Max:  5m 22s | Hits:  99%/13126 
      🟩 Clang15            Pass: 100%/2   | Total: 10m 36s | Avg:  5m 18s | Max:  5m 30s | Hits:  99%/6581  
      🟩 Clang16            Pass: 100%/2   | Total: 11m 18s | Avg:  5m 39s | Max:  6m 10s | Hits:  97%/6581  
      🟩 Clang17            Pass: 100%/2   | Total: 11m 04s | Avg:  5m 32s | Max:  5m 35s | Hits:  99%/6581  
      🟩 Clang18            Pass: 100%/2   | Total: 10m 22s | Avg:  5m 11s | Max:  5m 20s | Hits:  99%/6581  
      🟩 Clang19            Pass: 100%/6   | Total:  1h 20m | Avg: 13m 21s | Max: 29m 21s | Hits:  70%/16476 
      🟩 GCC7               Pass: 100%/2   | Total:  9m 15s | Avg:  4m 37s | Max:  4m 48s | Hits:  99%/6517  
      🟩 GCC8               Pass: 100%/1   | Total:  4m 58s | Avg:  4m 58s | Max:  4m 58s | Hits:  98%/3269  
      🟩 GCC9               Pass: 100%/2   | Total:  9m 58s | Avg:  4m 59s | Max:  5m 38s | Hits:  99%/6529  
      🟩 GCC10              Pass: 100%/2   | Total:  9m 51s | Avg:  4m 55s | Max:  5m 01s | Hits:  99%/6583  
      🟩 GCC11              Pass: 100%/2   | Total: 10m 01s | Avg:  5m 00s | Max:  5m 02s | Hits:  99%/6579  
      🟩 GCC12              Pass: 100%/2   | Total: 10m 34s | Avg:  5m 17s | Max:  5m 18s | Hits:  98%/6583  
      🟩 GCC13              Pass: 100%/10  | Total:  1h 33m | Avg:  9m 23s | Max: 19m 34s | Hits:  99%/16720 
      🟩 MSVC14.29          Pass: 100%/2   | Total: 51m 34s | Avg: 25m 47s | Max: 26m 37s | Hits:  98%/6257  
      🟩 MSVC14.43          Pass: 100%/2   | Total: 56m 41s | Avg: 28m 20s | Max: 28m 54s | Hits:  99%/6309  
      🟩 NVHPC25.3          Pass: 100%/2   | Total: 25m 14s | Avg: 12m 37s | Max: 13m 03s | Hits:  98%/6571  
    🟩 cxx_family
      🟩 Clang              Pass: 100%/18  | Total:  2h 23m | Avg:  7m 57s | Max: 29m 21s | Hits:  90%/55926 
      🟩 GCC                Pass: 100%/21  | Total:  2h 28m | Avg:  7m 04s | Max: 19m 34s | Hits:  99%/52780 
      🟩 MSVC               Pass: 100%/4   | Total:  1h 48m | Avg: 27m 03s | Max: 28m 54s | Hits:  98%/12566 
      🟩 NVHPC              Pass: 100%/2   | Total: 25m 14s | Avg: 12m 37s | Max: 13m 03s | Hits:  98%/6571  
    🟩 gpu
      🟩 h100               Pass: 100%/2   | Total: 19m 55s | Avg:  9m 57s | Max: 14m 51s | Hits:  99%/3393  
      🟩 rtx2080            Pass: 100%/43  | Total:  6h 45m | Avg:  9m 25s | Max: 29m 21s | Hits:  95%/124450
    🟩 jobs
      🟩 Build              Pass: 100%/39  | Total:  5h 47m | Avg:  8m 54s | Max: 29m 21s | Hits:  95%/127803
      🟩 NVRTC              Pass: 100%/2   | Total: 37m 54s | Avg: 18m 57s | Max: 19m 34s | Hits:  90%/40    
      🟩 Test               Pass: 100%/3   | Total: 37m 26s | Avg: 12m 28s | Max: 14m 51s
      🟩 VerifyCodegen      Pass: 100%/1   | Total:  2m 37s | Avg:  2m 37s | Max:  2m 37s
    🟩 sm
      🟩 75                 Pass: 100%/2   | Total: 37m 54s | Avg: 18m 57s | Max: 19m 34s | Hits:  90%/40    
      🟩 90                 Pass: 100%/2   | Total: 19m 55s | Avg:  9m 57s | Max: 14m 51s | Hits:  99%/3393  
      🟩 90;90a;100         Pass: 100%/1   | Total:  5m 48s | Avg:  5m 48s | Max:  5m 48s | Hits:  99%/3393  
    🟩 std
      🟩 17                 Pass: 100%/22  | Total:  3h 35m | Avg:  9m 48s | Max: 27m 47s | Hits:  95%/68231 
      🟩 20                 Pass: 100%/22  | Total:  3h 26m | Avg:  9m 24s | Max: 29m 21s | Hits:  94%/59612 
    
  • 🟩 cudax: Pass: 100%/26 | Total: 2h 33m | Avg: 5m 53s | Max: 12m 00s | Hits: 99%/14746

    🟩 cpu
      🟩 amd64              Pass: 100%/22  | Total:  2h 11m | Avg:  5m 58s | Max: 12m 00s | Hits:  99%/12386 
      🟩 arm64              Pass: 100%/4   | Total: 21m 51s | Avg:  5m 27s | Max:  7m 17s | Hits:  99%/2360  
    🟩 ctk
      🟩 12.0               Pass: 100%/3   | Total: 19m 19s | Avg:  6m 26s | Max: 11m 21s | Hits:  98%/1475  
      🟩 12.8               Pass: 100%/2   | Total: 17m 55s | Avg:  8m 57s | Max:  9m 03s | Hits:  97%/1176  
      🟩 12.9               Pass: 100%/21  | Total:  1h 55m | Avg:  5m 31s | Max: 12m 00s | Hits:  99%/12095 
    🟩 cudacxx
      🟩 nvcc12.0           Pass: 100%/3   | Total: 19m 19s | Avg:  6m 26s | Max: 11m 21s | Hits:  98%/1475  
      🟩 nvcc12.8           Pass: 100%/2   | Total: 17m 55s | Avg:  8m 57s | Max:  9m 03s | Hits:  97%/1176  
      🟩 nvcc12.9           Pass: 100%/21  | Total:  1h 55m | Avg:  5m 31s | Max: 12m 00s | Hits:  99%/12095 
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/26  | Total:  2h 33m | Avg:  5m 53s | Max: 12m 00s | Hits:  99%/14746 
    🟩 cxx
      🟩 Clang14            Pass: 100%/2   | Total:  7m 32s | Avg:  3m 46s | Max:  3m 49s | Hits: 100%/1184  
      🟩 Clang15            Pass: 100%/1   | Total:  3m 54s | Avg:  3m 54s | Max:  3m 54s | Hits: 100%/590   
      🟩 Clang16            Pass: 100%/1   | Total:  4m 02s | Avg:  4m 02s | Max:  4m 02s | Hits: 100%/590   
      🟩 Clang17            Pass: 100%/1   | Total:  4m 07s | Avg:  4m 07s | Max:  4m 07s | Hits: 100%/590   
      🟩 Clang18            Pass: 100%/1   | Total:  3m 47s | Avg:  3m 47s | Max:  3m 47s | Hits: 100%/590   
      🟩 Clang19            Pass: 100%/4   | Total: 24m 06s | Avg:  6m 01s | Max:  9m 47s | Hits: 100%/2360  
      🟩 GCC10              Pass: 100%/2   | Total: 10m 03s | Avg:  5m 01s | Max:  5m 48s | Hits:  95%/1184  
      🟩 GCC11              Pass: 100%/1   | Total:  4m 17s | Avg:  4m 17s | Max:  4m 17s | Hits:  99%/590   
      🟩 GCC12              Pass: 100%/1   | Total:  4m 13s | Avg:  4m 13s | Max:  4m 13s | Hits:  99%/590   
      🟩 GCC13              Pass: 100%/8   | Total: 47m 28s | Avg:  5m 56s | Max: 12m 00s | Hits:  99%/4720  
      🟩 MSVC14.39          Pass: 100%/1   | Total: 11m 21s | Avg: 11m 21s | Max: 11m 21s | Hits:  95%/291   
      🟩 MSVC14.43          Pass: 100%/1   | Total: 10m 27s | Avg: 10m 27s | Max: 10m 27s | Hits:  95%/291   
      🟩 NVHPC25.3          Pass: 100%/2   | Total: 17m 55s | Avg:  8m 57s | Max:  9m 03s | Hits:  97%/1176  
    🟩 cxx_family
      🟩 Clang              Pass: 100%/10  | Total: 47m 28s | Avg:  4m 44s | Max:  9m 47s | Hits: 100%/5904  
      🟩 GCC                Pass: 100%/12  | Total:  1h 06m | Avg:  5m 30s | Max: 12m 00s | Hits:  99%/7084  
      🟩 MSVC               Pass: 100%/2   | Total: 21m 48s | Avg: 10m 54s | Max: 11m 21s | Hits:  95%/582   
      🟩 NVHPC              Pass: 100%/2   | Total: 17m 55s | Avg:  8m 57s | Max:  9m 03s | Hits:  97%/1176  
    🟩 gpu
      🟩 h100               Pass: 100%/2   | Total: 12m 19s | Avg:  6m 09s | Max:  8m 24s | Hits:  99%/1180  
      🟩 rtx2080            Pass: 100%/24  | Total:  2h 20m | Avg:  5m 52s | Max: 12m 00s | Hits:  99%/13566 
    🟩 jobs
      🟩 Build              Pass: 100%/23  | Total:  2h 03m | Avg:  5m 20s | Max: 11m 21s | Hits:  99%/12976 
      🟩 Test               Pass: 100%/3   | Total: 30m 11s | Avg: 10m 03s | Max: 12m 00s | Hits:  99%/1770  
    🟩 sm
      🟩 90                 Pass: 100%/3   | Total: 16m 03s | Avg:  5m 21s | Max:  8m 24s | Hits:  99%/1770  
      🟩 90a                Pass: 100%/1   | Total:  3m 43s | Avg:  3m 43s | Max:  3m 43s | Hits:  99%/590   
    🟩 std
      🟩 17                 Pass: 100%/4   | Total: 26m 55s | Avg:  6m 43s | Max:  9m 03s | Hits:  99%/2358  
      🟩 20                 Pass: 100%/22  | Total:  2h 06m | Avg:  5m 44s | Max: 12m 00s | Hits:  99%/12388 
    
  • 🟩 python: Pass: 100%/12 | Total: 1h 52m | Avg: 9m 24s | Max: 18m 01s

    🟩 cpu
      🟩 amd64              Pass: 100%/12  | Total:  1h 52m | Avg:  9m 24s | Max: 18m 01s
    🟩 ctk
      🟩 12.9               Pass: 100%/12  | Total:  1h 52m | Avg:  9m 24s | Max: 18m 01s
    🟩 cudacxx
      🟩 nvcc12.9           Pass: 100%/12  | Total:  1h 52m | Avg:  9m 24s | Max: 18m 01s
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/12  | Total:  1h 52m | Avg:  9m 24s | Max: 18m 01s
    🟩 cxx
      🟩 GCC13              Pass: 100%/12  | Total:  1h 52m | Avg:  9m 24s | Max: 18m 01s
    🟩 cxx_family
      🟩 GCC                Pass: 100%/12  | Total:  1h 52m | Avg:  9m 24s | Max: 18m 01s
    🟩 gpu
      🟩 rtxa6000           Pass: 100%/12  | Total:  1h 52m | Avg:  9m 24s | Max: 18m 01s
    🟩 jobs
      🟩 Build cuda.cccl    Pass: 100%/2   | Total:  7m 06s | Avg:  3m 33s | Max:  3m 44s
      🟩 Build cuda.cooperative Pass: 100%/2   | Total:  7m 11s | Avg:  3m 35s | Max:  3m 46s
      🟩 Build cuda.parallel Pass: 100%/2   | Total: 17m 27s | Avg:  8m 43s | Max:  8m 53s
      🟩 Test cuda.cccl     Pass: 100%/2   | Total: 10m 13s | Avg:  5m 06s | Max:  5m 07s
      🟩 Test cuda.cooperative Pass: 100%/2   | Total: 35m 41s | Avg: 17m 50s | Max: 18m 01s
      🟩 Test cuda.parallel Pass: 100%/2   | Total: 35m 15s | Avg: 17m 37s | Max: 17m 58s
    🟩 py_version
      🟩 3.10               Pass: 100%/6   | Total: 56m 07s | Avg:  9m 21s | Max: 17m 40s
      🟩 3.13               Pass: 100%/6   | Total: 56m 46s | Avg:  9m 27s | Max: 18m 01s
    
  • 🟩 cccl: Pass: 100%/4 | Total: 16m 29s | Avg: 4m 07s | Max: 4m 53s

    🟩 cpu
      🟩 amd64              Pass: 100%/4   | Total: 16m 29s | Avg:  4m 07s | Max:  4m 53s
    🟩 ctk
      🟩 12.0               Pass: 100%/2   | Total:  7m 39s | Avg:  3m 49s | Max:  3m 53s
      🟩 12.9               Pass: 100%/2   | Total:  8m 50s | Avg:  4m 25s | Max:  4m 53s
    🟩 cudacxx
      🟩 nvcc12.0           Pass: 100%/2   | Total:  7m 39s | Avg:  3m 49s | Max:  3m 53s
      🟩 nvcc12.9           Pass: 100%/2   | Total:  8m 50s | Avg:  4m 25s | Max:  4m 53s
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/4   | Total: 16m 29s | Avg:  4m 07s | Max:  4m 53s
    🟩 cxx
      🟩 Clang14            Pass: 100%/1   | Total:  3m 53s | Avg:  3m 53s | Max:  3m 53s
      🟩 Clang19            Pass: 100%/1   | Total:  3m 57s | Avg:  3m 57s | Max:  3m 57s
      🟩 GCC12              Pass: 100%/1   | Total:  3m 46s | Avg:  3m 46s | Max:  3m 46s
      🟩 GCC13              Pass: 100%/1   | Total:  4m 53s | Avg:  4m 53s | Max:  4m 53s
    🟩 cxx_family
      🟩 Clang              Pass: 100%/2   | Total:  7m 50s | Avg:  3m 55s | Max:  3m 57s
      🟩 GCC                Pass: 100%/2   | Total:  8m 39s | Avg:  4m 19s | Max:  4m 53s
    🟩 gpu
      🟩 rtx2080            Pass: 100%/4   | Total: 16m 29s | Avg:  4m 07s | Max:  4m 53s
    🟩 jobs
      🟩 Infra              Pass: 100%/4   | Total: 16m 29s | Avg:  4m 07s | Max:  4m 53s
    
  • 🟩 stdpar: Pass: 100%/4 | Total: 23m 13s | Avg: 5m 48s | Max: 6m 18s

    🟩 cpu
      🟩 amd64              Pass: 100%/2   | Total: 12m 32s | Avg:  6m 16s | Max:  6m 18s
      🟩 arm64              Pass: 100%/2   | Total: 10m 41s | Avg:  5m 20s | Max:  5m 34s
    🟩 ctk
      🟩 12.8               Pass: 100%/4   | Total: 23m 13s | Avg:  5m 48s | Max:  6m 18s
    🟩 cudacxx
      🟩 nvcc12.8           Pass: 100%/4   | Total: 23m 13s | Avg:  5m 48s | Max:  6m 18s
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/4   | Total: 23m 13s | Avg:  5m 48s | Max:  6m 18s
    🟩 cxx
      🟩 NVHPC25.3          Pass: 100%/4   | Total: 23m 13s | Avg:  5m 48s | Max:  6m 18s
    🟩 cxx_family
      🟩 NVHPC              Pass: 100%/4   | Total: 23m 13s | Avg:  5m 48s | Max:  6m 18s
    🟩 gpu
      🟩 rtx2080            Pass: 100%/4   | Total: 23m 13s | Avg:  5m 48s | Max:  6m 18s
    🟩 jobs
      🟩 Build              Pass: 100%/4   | Total: 23m 13s | Avg:  5m 48s | Max:  6m 18s
    🟩 std
      🟩 17                 Pass: 100%/2   | Total: 11m 52s | Avg:  5m 56s | Max:  6m 18s
      🟩 20                 Pass: 100%/2   | Total: 11m 21s | Avg:  5m 40s | Max:  6m 14s
    
  • 🟩 cccl_c_parallel: Pass: 100%/2 | Total: 16m 45s | Avg: 8m 22s | Max: 14m 08s | Hits: 98%/328

    🟩 cpu
      🟩 amd64              Pass: 100%/2   | Total: 16m 45s | Avg:  8m 22s | Max: 14m 08s | Hits:  98%/328   
    🟩 ctk
      🟩 12.9               Pass: 100%/2   | Total: 16m 45s | Avg:  8m 22s | Max: 14m 08s | Hits:  98%/328   
    🟩 cudacxx
      🟩 nvcc12.9           Pass: 100%/2   | Total: 16m 45s | Avg:  8m 22s | Max: 14m 08s | Hits:  98%/328   
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/2   | Total: 16m 45s | Avg:  8m 22s | Max: 14m 08s | Hits:  98%/328   
    🟩 cxx
      🟩 GCC13              Pass: 100%/2   | Total: 16m 45s | Avg:  8m 22s | Max: 14m 08s | Hits:  98%/328   
    🟩 cxx_family
      🟩 GCC                Pass: 100%/2   | Total: 16m 45s | Avg:  8m 22s | Max: 14m 08s | Hits:  98%/328   
    🟩 gpu
      🟩 rtx2080            Pass: 100%/2   | Total: 16m 45s | Avg:  8m 22s | Max: 14m 08s | Hits:  98%/328   
    🟩 jobs
      🟩 Build              Pass: 100%/1   | Total:  2m 37s | Avg:  2m 37s | Max:  2m 37s | Hits:  98%/164   
      🟩 Test               Pass: 100%/1   | Total: 14m 08s | Avg: 14m 08s | Max: 14m 08s | Hits:  98%/164   
    

👃 Inspect Changes

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

🏃‍ Runner counts (total jobs: 187)

# Runner
129 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

@rwgk
Copy link
Contributor Author

rwgk commented May 22, 2025

I'll go ahead and merge this PR, thanks for all the feedback! Happy to do follow-on work, while we're already enjoying the vastly smaller wheel sizes.

@rwgk rwgk merged commit 8dd853b into NVIDIA:main May 22, 2025
204 checks passed
@github-project-automation github-project-automation bot moved this from In Review to Done in CCCL May 22, 2025
@rwgk rwgk deleted the cuda_parallel_path_finder branch May 22, 2025 04:47
@leofang
Copy link
Member

leofang commented May 22, 2025

Thanks, @rwgk and all! Great to see everything pieced together!

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

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

CCCL C: NVRTC and nvJitLink should be loaded at run-time instead of dynamically linked

7 participants