Skip to content

Conversation

@rapids-bot
Copy link
Contributor

@rapids-bot rapids-bot bot commented Jul 28, 2025

Forward-merge triggered by push to branch-25.08 that creates a PR to keep branch-25.10 up-to-date. If this PR is unable to be immediately merged due to conflicts, it will remain open for the team to manually merge. See forward-merger docs for more info.

This PR removes CUDA 11 pertaining changes since we have moved to CUDA 12 support only

## Issue
closes #220

Authors:
  - Ramakrishnap (https://github.com/rgsl888prabhu)

Approvers:
  - Kyle Edwards (https://github.com/KyleFromNVIDIA)
  - Trevor McKay (https://github.com/tmckayus)
  - Ishika Roy (https://github.com/Iroy30)
  - Nicolas Blin (https://github.com/Kh4ster)
  - Akif ÇÖRDÜK (https://github.com/akifcorduk)
  - Bradley Dice (https://github.com/bdice)

URL: #222
@rapids-bot rapids-bot bot requested review from a team as code owners July 28, 2025 22:17
@rapids-bot rapids-bot bot requested review from AyodeAwe, Iroy30, aliceb-nv and rg20 and removed request for a team July 28, 2025 22:17
@rapids-bot
Copy link
Contributor Author

rapids-bot bot commented Jul 28, 2025

FAILURE - Unable to forward-merge due to an error, manual merge is necessary. Do not use the Resolve conflicts option in this PR, follow these instructions https://docs.rapids.ai/maintainers/forward-merger/

IMPORTANT: When merging this PR, do not use the auto-merger (i.e. the /merge comment). Instead, an admin must manually merge by changing the merging strategy to Create a Merge Commit. Otherwise, history will be lost and the branches become incompatible.

Adds changes to the top level cmake_lists.txt to enable cpack creation of .deb files. In order to create the runtime and develop .deb files you will need to:
1) Build cuOpt
2) Navigate to cpp/build
3) run  cpack -G DEB

This creates two .deb files for the architecture of the machine that cuOpt is built on. 
For example: `cuOpt_25.08.0_amd64-Development.deb` and `cuOpt_25.08.0_amd64-Runtime.deb`

The runtime deb package contains the cuopt CLI, the mps reader.so and the cuopt.so.
The cuopt_CLI is installed in the `/usr/local/bin` directory
The .so files are installed in the `/usr/local/lib` directory

The development deb package contains the mps reader.so, the cuopt.so and the header files for the project all of which are installed in `/usr/local/lib` in a standard fashion. 

The headers are in `/usr/local/lib/cuopt`

Note: There are items in the deb package creation that I took the liberty to fill, some of them may need changes. 
Specifically these two lines:
`set(CPACK_DEBIAN_DEV_PACKAGE_MAINTAINER "NVIDIA")`
`set(CPACK_DEBIAN_RUNTIME_PACKAGE_MAINTAINER "NVIDIA")`
I assumed that is how you'd like the maintainer referenced.

Additionally the deb packages do not correctly reference their dependencies yet, i'm happy to follow up with that work if this looks likely to be merged.

## Issue
#189

Authors:
  - Mark Ostroot (https://github.com/mostroot)
  - Ramakrishnap (https://github.com/rgsl888prabhu)

Approvers:
  - Trevor McKay (https://github.com/tmckayus)

URL: #190
tmckayus and others added 6 commits July 29, 2025 20:53
The service API is not aligned completely with the SDK API from 25.05 in relation to solver configs. This change brings them into alignment with deprecation notices and backward compatibility

Authors:
  - Trevor McKay (https://github.com/tmckayus)
  - Ramakrishnap (https://github.com/rgsl888prabhu)

Approvers:
  - Gil Forsyth (https://github.com/gforsyth)
  - Ramakrishnap (https://github.com/rgsl888prabhu)

URL: #227
Raft defines `RAFT_CHECK_CUDA` depending on if we run in release/Debug mode https://github.com/rapidsai/raft/blob/branch-25.06/cpp/include/raft/util/cuda_rt_essentials.hpp#L78-L82.
In cuopt we have a special mode "assert" that undefines `NDEBUG` to run with optimizations but still enable runtime checks. https://github.com/rapidsai/raft/blob/branch-25.06/cpp/include/raft/util/cuda_rt_essentials.hpp#L78-L82

The first version of `RAFT_CHECK_CUDA` uses the stream argument therefore in debug mode and assert mode we should catch that error. However unsetting `NDEBUG` in our header results in `NDEBUG` being undefined in cuopt but still defined for our dependencies. So we were calling the wrong implementation of `RAFT_CUDA_CHECK`. To undefine `NDEBUG` in both cuopt and our dependencies we have to do it through cmake.
This catches the compile error.

Closes: #247

Authors:
  - Hugo Linsenmaier (https://github.com/hlinsen)
  - Alice Boucher (https://github.com/aliceb-nv)

Approvers:
  - Ramakrishnap (https://github.com/rgsl888prabhu)
  - Alice Boucher (https://github.com/aliceb-nv)

URL: #248
The MIP codepath assumes the current problem possesses a non-zero number of integer variables.
This is normally never the case as LP problems are directed to the LP codepath, however some trivial MIP instances lose their integer variables after presolve.

In those cases the problem is solved at the root relaxation, this PR simply fixes assertions and checks to ensure such instances don't trigger failures on the MIP heuristics side.

Also fixes an issue where initial solutions were scaled regardless of the mip scaling setting

Fixes #233

Authors:
  - Alice Boucher (https://github.com/aliceb-nv)
  - Robert Maynard (https://github.com/robertmaynard)
  - Scott Brenner (https://github.com/ScottBrenner)
  - Ramakrishnap (https://github.com/rgsl888prabhu)

Approvers:
  - Hugo Linsenmaier (https://github.com/hlinsen)

URL: #235
This is a simple smoketest to look for breakage and any abnormal behavior with respect to runtime from cuopt Python API changes. It does not do any exhaustive performance testing or building.

depends on #235

Authors:
  - Trevor McKay (https://github.com/tmckayus)
  - James Lamb (https://github.com/jameslamb)
  - Ramakrishnap (https://github.com/rgsl888prabhu)

Approvers:
  - James Lamb (https://github.com/jameslamb)

URL: #199
This PR removes cuda graph capture from load balanced bounds strengthening to address crashes encountered in the constructor. The cuda graph is instead created manually. Fixes #219

Authors:
  - Kumar Aatish (https://github.com/kaatish)

Approvers:
  - Ramakrishnap (https://github.com/rgsl888prabhu)
  - Hugo Linsenmaier (https://github.com/hlinsen)

URL: #242
…updates, primal infeasible list (#192)

This PR contains multiple performance improvements to the dual simplex code including:

* O(N^2) -> O(N) bound-flipping ratio test
* Exploiting hypersparsity (sparse factors plus sparse right-hand side) throughout the solver,
* New middle-product form basis update (replaces Forrest-Tomlin since it currently handles hypersparsity better)
* Maintaining and update a list of primal infeasibilites


New or existing test cover these changes. No changes in documentation are necessary.

Authors:
  - Chris Maes (https://github.com/chris-maes)
  - Ramakrishnap (https://github.com/rgsl888prabhu)

Approvers:
  - Kyle Edwards (https://github.com/KyleFromNVIDIA)
  - Ramakrishnap (https://github.com/rgsl888prabhu)
  - Alice Boucher (https://github.com/aliceb-nv)

URL: #192
@tmckayus tmckayus added this to the 25.10 milestone Jul 31, 2025
Iroy30 and others added 2 commits July 31, 2025 23:28
…date. (#249)

This PR includes two fixes:

* Basis repair was failing due to a bug in the right-looking LU where the column permutation was not fully populated when the basis was rank deficient. 

* When computing delta x using a hypersparse solve the solution vector sometimes did not contain a nonzero coefficient associated with the basic leaving index. This was an issue, as we divide by that coefficient to compute the primal step length.  This coefficient may have been missing due to the numerical drop tolerances. To recover from this we perform a regular solve. If the coefficient is small, but nonzero, we can recover. 

In addition this PR adds the option to use threshold rook pivoting inside the right-looking LU factorization. TRP is rank-revealing. However, it produces factors L and U with more fill and is thus about 3% slower. We add TRP in this PR, but keep it disabled behind a flag. A future PR may want to use TRP when basis repair fails. 

New or existing tests cover these changes. The documentation is not affected.

Authors:
  - Chris Maes (https://github.com/chris-maes)

Approvers:
  - Akif ÇÖRDÜK (https://github.com/akifcorduk)

URL: #249
@rgsl888prabhu rgsl888prabhu mentioned this pull request Aug 4, 2025
8 tasks
When using the new middle product form for basis updates, we can sometimes get a mu = 0. This leads to infs and then nans and then out of bound memory accesses.

A simple fix is to force a refactorization of the basis when this happens.

This fixes #252

Authors:
  - Chris Maes (https://github.com/chris-maes)

Approvers:
  - Hugo Linsenmaier (https://github.com/hlinsen)

URL: #254
@AyodeAwe AyodeAwe merged commit f120f79 into branch-25.10 Aug 5, 2025
140 of 168 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants