Skip to content

Remove unused cusolver/curand deps from libcuopt - #1830

Merged
rapids-bot[bot] merged 1 commit into
mainfrom
test/drop-unused-cusolver-link
Aug 31, 2026
Merged

Remove unused cusolver/curand deps from libcuopt#1830
rapids-bot[bot] merged 1 commit into
mainfrom
test/drop-unused-cusolver-link

Conversation

@ramakrishnap-nv

@ramakrishnap-nv ramakrishnap-nv commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

Neither cusolver nor curand is referenced anywhere in cpp/src, and no RAFT header cuOpt includes touches either library. Verified with a full local build: nm -D --undefined-only on the resulting libcuopt.so shows zero cusolver/curand symbols among its 762 undefined dynamic symbols.

libcusolver-dev/libcurand-dev removed from dependencies.yaml (conda environments regenerated). libcurand-dev and its ignore_run_exports entry removed from recipe.yamlcusolver was never explicitly declared there, only inherited via libraft-headers.

curand was added deliberately in the past (not just inherited), despite the same zero-usage finding — see git blame on the removed CUDA::curand line (9f241a19, around when the barrier method moved to cuDSS for sparse Cholesky/LDLT) for context worth a second look.

Out of scope: the cuda_wheels pip/wheel install path (separate distribution channel, untested here), and switching libraft-headerslibraft-headers-only (bigger change, needs its own conda-build validation).

Neither is referenced anywhere in cpp/src, and no RAFT header cuOpt
includes (raft/core, raft/linalg's cublas-based ops, raft/random's
custom PCG generator, raft/sparse) touches either library. Verified
with a full local build: nm -D --undefined-only on the resulting
libcuopt.so shows zero cusolver/curand symbols among its 762 undefined
dynamic symbols, confirming the compiled binary has no runtime
dependency on either.

cusolver-dev/libcurand-dev removed from dependencies.yaml (conda
environments regenerated via rapids-dependency-file-generator).
libcurand-dev and its ignore_run_exports entry removed from
conda/recipes/libcuopt/recipe.yaml; cusolver was never explicitly
declared there, only inherited transitively via libraft-headers.

Out of scope: the cuda_wheels pip/wheel install path (untested by
this conda-based validation), and switching libraft-headers to
libraft-headers-only (bigger change, needs its own conda-build
validation).

Signed-off-by: Ramakrishna Prabhu <ramakrishnap@nvidia.com>
@copy-pr-bot

copy-pr-bot Bot commented Aug 28, 2026

Copy link
Copy Markdown

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.

@ramakrishnap-nv ramakrishnap-nv added improvement Improves an existing functionality non-breaking Introduces a non-breaking change labels Aug 28, 2026
@ramakrishnap-nv

Copy link
Copy Markdown
Collaborator Author

/ok to test aaae5a6

@github-actions

github-actions Bot commented Aug 31, 2026

Copy link
Copy Markdown

CI Test Summary

✅ All 31 test job(s) passed.

@ramakrishnap-nv ramakrishnap-nv self-assigned this Aug 31, 2026
@ramakrishnap-nv
ramakrishnap-nv marked this pull request as ready for review August 31, 2026 17:48
@ramakrishnap-nv
ramakrishnap-nv requested review from a team as code owners August 31, 2026 17:48
@coderabbitai

coderabbitai Bot commented Aug 31, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 53110843-3d14-480b-86dc-cb0d6ae2c06b

📥 Commits

Reviewing files that changed from the base of the PR and between 269fb4c and aaae5a6.

📒 Files selected for processing (7)
  • conda/environments/all_cuda-129_arch-aarch64.yaml
  • conda/environments/all_cuda-129_arch-x86_64.yaml
  • conda/environments/all_cuda-133_arch-aarch64.yaml
  • conda/environments/all_cuda-133_arch-x86_64.yaml
  • conda/recipes/libcuopt/recipe.yaml
  • cpp/CMakeLists.txt
  • dependencies.yaml
💤 Files with no reviewable changes (7)
  • conda/environments/all_cuda-129_arch-aarch64.yaml
  • conda/environments/all_cuda-133_arch-aarch64.yaml
  • dependencies.yaml
  • conda/recipes/libcuopt/recipe.yaml
  • conda/environments/all_cuda-133_arch-x86_64.yaml
  • cpp/CMakeLists.txt
  • conda/environments/all_cuda-129_arch-x86_64.yaml

Included review availability: Your plan provides up to 12 included reviews per hour; 11 remain after this review.


📝 Walkthrough

Walkthrough

The change removes libcurand and libcusolver dependencies from CUDA Conda environments, the shared dependency group, cuOpt recipe metadata, and private CMake linkage.

Changes

CUDA dependency cleanup

Layer / File(s) Summary
CUDA package declarations
dependencies.yaml, conda/environments/all_cuda-129_*.yaml, conda/environments/all_cuda-133_*.yaml
The CUDA dependency group and CUDA 12.9/13.3 environment definitions no longer include libcurand-dev or libcusolver-dev.
cuOpt build and packaging alignment
cpp/CMakeLists.txt, conda/recipes/libcuopt/recipe.yaml
Private CMake linkage no longer includes CUDA::curand or CUDA::cusolver. The cuOpt recipe no longer declares libcurand-dev as a host requirement or ignores libcurand run exports.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to aaae5

This change removes unused cuSolver and cuRAND dependencies from the build and package environments without changing library behavior; no actionable merge-blocking risk remains after normal checks and review.

Suggested reviewers: tmckayus, jakirkham

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: removing unused cuSolver and cuRAND dependencies from libcuOpt.
Description check ✅ Passed The description directly explains the dependency removals, supporting build verification, and the stated out-of-scope areas.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files.

✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch test/drop-unused-cusolver-link

Comment @coderabbitai help to get the list of available commands.

@rg20 rg20 added this to the 26.10 milestone Aug 31, 2026
@ramakrishnap-nv

Copy link
Copy Markdown
Collaborator Author

/merge

@rapids-bot
rapids-bot Bot merged commit 5045ca7 into main Aug 31, 2026
141 of 143 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

improvement Improves an existing functionality non-breaking Introduces a non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants