Skip to content

Replaced SpMV with SpMVOp in PDHG for double precision#987

Closed
Bubullzz wants to merge 9 commits intoNVIDIA:release/26.04from
Bubullzz:spmvop_3
Closed

Replaced SpMV with SpMVOp in PDHG for double precision#987
Bubullzz wants to merge 9 commits intoNVIDIA:release/26.04from
Bubullzz:spmvop_3

Conversation

@Bubullzz
Copy link
Copy Markdown

Description

Replaced SpMV calls with SpMVOp calls in PDHG in order to accelerate compute. These changes are only available for double precision.

Issue

closes #9

@copy-pr-bot
Copy link
Copy Markdown

copy-pr-bot bot commented Mar 23, 2026

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

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@Bubullzz Bubullzz added non-breaking Introduces a non-breaking change improvement Improves an existing functionality labels Mar 23, 2026
@Bubullzz Bubullzz closed this Mar 23, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 23, 2026

Caution

Review failed

Pull request was closed or merged during review

📝 Walkthrough

Walkthrough

This PR performs a comprehensive version bump from 26.04.00 to 26.06.00 across project metadata, build workflows, and dependencies. Additionally, it introduces cuSPARSE SpMVOp acceleration for the LP solver's sparse matrix-vector multiplication operations.

Changes

Cohort / File(s) Summary
Version Metadata Updates
.claude-plugin/marketplace.json, .cursor-plugin/plugin.json, gemini-extension.json, VERSION, README.md, helmchart/cuopt-server/Chart.yaml, helmchart/cuopt-server/values.yaml
Updated version fields from 26.04.00 to 26.06.00 and version pins in version references; updated Helm chart metadata and container image tags from 26.4.0 to 26.6.0.
GitHub Actions Workflows
.github/workflows/build.yaml, .github/workflows/build_test_publish_images.yaml, .github/workflows/pr.yaml, .github/workflows/test.yaml, .github/workflows/trigger-breaking-change-alert.yaml, RAPIDS_BRANCH
Updated reusable workflow references from release/26.04 to main branch across multiple job definitions; bumped container images from rapidsai/ci-conda:26.04-latest to rapidsai/ci-conda:26.06-latest.
Dependency Management
conda/environments/all_cuda-129_arch-*.yaml, conda/environments/all_cuda-132_arch-*.yaml, dependencies.yaml, python/cuopt/pyproject.toml, python/cuopt_self_hosted/pyproject.toml, python/cuopt_server/pyproject.toml, python/libcuopt/pyproject.toml
Updated RAPIDS package version pins from 26.4.* to 26.6.* for cudf, pylibraft, rmm, and related libraries; updated CUDA constraint from 13.1 to 13.2; added libnvjitlink-dev system dependency.
Documentation Updates
docs/cuopt/source/cuopt-python/routing/routing-example.ipynb, docs/cuopt/source/faq.rst, skills/**/SKILL.md
Updated GitHub branch references in documentation links from release/26.04 to main; bumped version metadata in 18 skill documentation files from 26.04.00 to 26.06.00.
C++ SpMVOp Acceleration
cpp/CMakeLists.txt, cpp/src/pdlp/cusparse_view.hpp, cpp/src/pdlp/cusparse_view.cu, cpp/src/pdlp/pdhg.cu, cpp/src/pdlp/pdlp.cu
Added cuSPARSE SpMVOp planning and execution infrastructure: new buffer members and create_spmv_op_plans() method in cusparse_view_t; modified compute_At_y() and compute_A_x() to invoke cusparseSpMVOp() directly instead of wrapper; integrated SpMVOp plan creation in solver initialization; added CUSPARSE_ENABLE_EXPERIMENTAL_API compile definition.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • Update to 26.06 #975: Repository-wide version and workflow metadata bumps from 26.04 to 26.06, with similar CI reusable-workflow and dependency reference updates, though without the additional C++ cuSPARSE SpMVOp implementation changes.

Suggested reviewers

  • jakirkham
  • Iroy30
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly describes the main change: replacing SpMV with SpMVOp in PDHG for double precision, which aligns with the core objective of accelerating sparse matrix-vector operations.
Description check ✅ Passed The description explains the purpose (accelerate compute via SpMVOp replacement) and scope (double precision only), and references the linked issue #9, demonstrating clear relation to the changeset.
Linked Issues check ✅ Passed The PR implements the core objective from issue #9 by replacing SpMV calls with SpMVOp calls in PDHG to accelerate sparse matrix-vector operations, demonstrated by changes in cusparse_view.cu/hpp and pdhg.cu. The implementation correctly restricts this to double precision and non-mixed-precision scenarios.
Out of Scope Changes check ✅ Passed While the PR includes extensive version and workflow updates (26.04→26.06), these are necessary infrastructure changes for the release. The primary code changes (SpMVOp implementation) stay focused on the linked issue objective.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 Ruff (0.15.6)
docs/cuopt/source/cuopt-python/routing/routing-example.ipynb

Unexpected end of JSON input


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

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