Skip to content

Conversation

@chris-maes
Copy link
Contributor

@chris-maes chris-maes commented Aug 8, 2025

This PR adds a barrier (interior-point) method for solving linear programs. cuDSS is used to GPU-accelerate the sparse Cholesky and sparse LDLT solves, cuSparse is used to GPU-accelerate spMv and spMM. This PR also includes routines for the color refinement algorithm (generalized to weighted graphs) and folding a linear program. Crossover is also updated to use hypersparse solves.

Barrier is enabled by default (along with PDLP and dual simplex) in concurrent mode. You may also use barrier by itself.

The following new settings are supported:

  • --method=3 to invoke the new barrier solver
  • --folding to control whether to fold the LP: (-1) automatic, (0) folding off, (1) folding in
  • --dualize to control whether to dualize the LP in presolve: (-1) automatic, (0) don't dualize, (1) force dualize
  • --ordering to control whether the ordering for cuDSS: (-1) automatic, (0) cuDSS default (1) AMD
  • --augmented to control what linear system to solve: (-1) automatic, (0) solve ADAT, (1) solve the augmented system
  • --eliminate-dense-columns, true to eliminate dense columns, false to not
  • --cudss-deterministic, true to use cuDSS deterministic mode, false to use nondeterministic mode

Closes #204

Checklist

  • I am familiar with the Contributing Guidelines.
  • Testing
    • New or existing tests cover these changes
    • Added tests
    • Created an issue to follow-up
    • NA
  • Documentation
    • The documentation is up to date with these changes
    • Added new documentation
    • NA

@chris-maes chris-maes requested review from a team as code owners August 8, 2025 23:54
@copy-pr-bot
Copy link

copy-pr-bot bot commented Aug 8, 2025

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.

@chris-maes chris-maes changed the title Barrier method for LPs with cuDSS sparse cholesky / LDLT on the GPU Barrier method for LPs with cuDSS sparse Cholesky / LDLT on the GPU Aug 8, 2025
@chris-maes chris-maes self-assigned this Aug 8, 2025
@chris-maes chris-maes added feature request New feature or request non-breaking Introduces a non-breaking change labels Aug 8, 2025
@tmckayus
Copy link
Contributor

/ok to test 999b690

@tmckayus
Copy link
Contributor

As follow-ons we can add any necessary PRs to support this from Python (service, modeler integrations, etc)

@anandhkb anandhkb added this to the 25.10 milestone Aug 11, 2025
@chris-maes
Copy link
Contributor Author

As follow-ons we can add any necessary PRs to support this from Python (service, modeler integrations, etc)

@tmckayus I think the only external change is supporting another value for Method. So we will now have a Method=3 for Barrier.

@chris-maes
Copy link
Contributor Author

Note this PR will not build until cuDSS is integrated into the CI

To run the new barrier solver, set Method=3.

@rgsl888prabhu rgsl888prabhu mentioned this pull request Aug 14, 2025
8 tasks
@rgsl888prabhu
Copy link
Collaborator

@chris-maes
Copy link
Contributor Author

@chris-maes Observing failure in tests https://github.com/NVIDIA/cuopt/actions/runs/17053466642/job/48347187847?pr=304#step:10:3852 with cudss

@rgsl888prabhu this is because the concurrent mode with barrier and PDLP both running on the GPU does not work yet.

@rgsl888prabhu
Copy link
Collaborator

/ok to test 22e0421

@rgsl888prabhu
Copy link
Collaborator

/ok to test 03035db

@rgsl888prabhu
Copy link
Collaborator

/ok to test 42d4e8e

@rgsl888prabhu
Copy link
Collaborator

/ok to test edbf29c

@chris-maes
Copy link
Contributor Author

/ok to test

@copy-pr-bot
Copy link

copy-pr-bot bot commented Oct 5, 2025

/ok to test

@chris-maes, there was an error processing your request: E1

See the following link for more information: https://docs.gha-runners.nvidia.com/cpr/e/1/

@chris-maes
Copy link
Contributor Author

/ok to test d3dd52a

@chris-maes
Copy link
Contributor Author

/ok to test bc5ef06

@chris-maes
Copy link
Contributor Author

/ok to test fc90fed

@chris-maes
Copy link
Contributor Author

/merge

@rapids-bot rapids-bot bot merged commit 9f241a1 into NVIDIA:branch-25.10 Oct 6, 2025
88 checks passed
rapids-bot bot pushed a commit that referenced this pull request Oct 7, 2025
This PR enables stream concurrency by sharing SM resources between PDLP and Barrier. It fixes compile errors that occured while merging #272

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

Approvers:
  - Chris Maes (https://github.com/chris-maes)
  - Bradley Dice (https://github.com/bdice)
  - Ramakrishnap (https://github.com/rgsl888prabhu)

URL: #448
rapids-bot bot pushed a commit that referenced this pull request Oct 10, 2025
This PR is a follow-up for PR #272 to add documentation and additional tests

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

Approvers:
  - Ishika Roy (https://github.com/Iroy30)
  - Trevor McKay (https://github.com/tmckayus)
  - Chris Maes (https://github.com/chris-maes)

URL: #449
@Kh4ster Kh4ster assigned hlinsen, Kh4ster and chris-maes and unassigned chris-maes Nov 19, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature request New feature or request non-breaking Introduces a non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEA] GPU Barrier (interior point) solver

9 participants