Skip to content

Conversation

chris-maes
Copy link
Contributor

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

Initial version of barrier (interior-point) algorithm. Currently solves 89/93 NETLIB LPs.

Note that cuDSS is nondeterminisitc so this number can vary from 87-89 (on my machine).

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 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.

Now solving 90/93 NETLIB LPs

Multiple changes:

1) Switch to termination criteria based on relative (rather than absolute) tolerances.
   Set the default relative tolerance to 1e-8.

2) Use mu affine, rather than mu, in the rhs of the corrector step

3) Disable dependent row checks in presolve

4) Add iteration limits and time limit checks

5) Add method to print out dense columns

6) Add PCG (currently disabled)
chris-maes and others added 30 commits August 29, 2025 11:55
…move regularization. Solves 83/91 NETLIB problems. Can factorize Dual2_5000. But reordering time is 352 seconds
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
6 participants