Audit Wheel Dependencies#3091
Conversation
📝 WalkthroughWalkthroughLibRAFT dependency groups, wheel build arguments, and conda recipes are updated. NCCL runtime wheel configuration is restricted to ChangesLibRAFT packaging updates
Estimated code review effort: 2 (Simple) | ~10 minutes Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
libraft wheel dependencies| - ${{ compiler("c") }} | ||
| host: | ||
| - ${{ pin_subpackage("libraft-headers", exact=True) }} | ||
| - ${{ pin_subpackage("libraft-headers-only", exact=True) }} |
There was a problem hiding this comment.
Why is this changed? What is the specific difference in host/run pinnings that you are aiming to produce?
There was a problem hiding this comment.
Summary of the impact from AI:
libraft-headersdepends onlibraft-headers-only, so selecting it also installs the latter'scuda-version,librmm, andrapids-loggerdependencies. Relative to that shared closure,libraft-headersadditionally bringscuda-profiler-api,libcublas-dev,libcurand-dev,libcusolver-dev,libcusparse-dev,nccl >=2.19, anducxx 0.52.\*.Consequently, replacing
libraft-headerswithlibraft-headers-onlyavoids the four CUDA development packages plusncclanducxx. The runtime CUDA libraries are not removed fromlibraftorlibraft-static: both packages continue to directly requirelibcublas,libcurand,libcusolver, andlibcusparse.cuda-profiler-apiis also directly removed from those two packages in PR 3091, rather than being removed solely through the header-package substitution.
So basically this means that depending on libraft is no longer enough to build other libraries against libraft, because you don't have CUDA math library dev packages. This is a regression.
There was a problem hiding this comment.
My understanding is that the libraft package only contains a few source files in the raft_runtime directory:
add_library(
raft_objs OBJECT
src/raft_runtime/random/rmat_rectangular_generator_int64_double.cu
src/raft_runtime/random/rmat_rectangular_generator_int64_float.cu
src/raft_runtime/random/rmat_rectangular_generator_int_double.cu
src/raft_runtime/random/rmat_rectangular_generator_int_float.cu
src/raft_runtime/solver/lanczos_solver_int64_double.cu
src/raft_runtime/solver/lanczos_solver_int64_float.cu
src/raft_runtime/solver/lanczos_solver_int_double.cu
src/raft_runtime/solver/lanczos_solver_int_float.cu
)
I think any downstream package should depend on libraft-headers and not libraft
There was a problem hiding this comment.
the important question is -- what do we need the libraft pkg to represent -- only the compiled source files or all the packages required to include any header in this repo?
There was a problem hiding this comment.
Looking at the description here:
https://pypi.org/project/libraft-cu12/#:~:text=RAFT%20is%20a,GPU%20with%20Dask.
I think this PR is in the right direction -- libraft's shared library should be C++ only. I'll wait for others / PICs to weigh in.
Drops
depends_on_ncclfrom thelibraftwheel's build and runtimerequirement groups (
py_rapids_build_libraft,py_run_libraft) independencies.yaml.More changes on 07/22/2026:
libraftandlibraft-staticdont need to depend on the complete libraft-headers (there are no multi-gpu targets etc). Further raft-dask seems like the only target that needs the cmake flag for ncclAddresses #2977.