Skip to content

Releases: NVIDIA/cuopt

v26.02.00

11 Feb 18:01
v26.02.00
f73da24

Choose a tag to compare

Release Notes 26.02

New Features (26.02)

  • New parallel reliability branching inside MIP solver
  • Mixed Integer Gomory, Mixed Integer Rounding, Knapsack and Strong Chvatal Gomory cuts are now added at root node
  • Added an option to use batch PDLP when running strong branching at the root. Based on Batched First-Order Methods for Parallel LP Solving in MIP (Nicolas Blin, Stefano Gualandi, Christopher Maes, Andrea Lodi, Bartolomeo Stellato)
  • Quadratic programming (QP) solver is now generally available (previously beta)
  • New infeasibility detection option for PDLP's default solver mode Stable3
  • Solutions callbacks added to C API. Users can now retrieve the dual bound and pass in user data
  • Multiple new diving techniques added for finding integer feasible solutions
  • The PSLP presolver is enabled by default for LP problems. Use the presolve option to select Papilo or disable
  • Added a batch solve for routing to boost throughput for many similar instances
  • Added experimental support for determinism in the parallel branch-and-bound solver. GPU heuristics are not supported yet in this mode

Breaking Changes (26.02)

  • The signatures of the solution callbacks have changed for the Python API
  • To use PDLP warm start, presolve must now be explicitly disabled by setting CUOPT_PRESOLVE=0. Previously, presolve was disabled automatically

Improvements (26.02)

  • Improved primal/dual warm start for PDLP's default solver mode Stable3
  • Quadratic objectives can now be constructed via a matrix in Python API
  • QP barrier now updates and solves augmented system on the GPU
  • Improved performance for LP folding
  • Probing implications and better variable ordering to strengthen presolve and branching
  • Replace deprecated cuDF Column/Buffer APIs with pylibcudf and public cuDF interfaces
  • Modernize dependency pinnings; make CUDA runtime linkage static for portability
  • Build/tooling: add --split-compile, --jobserver, Clang host build, ThreadSanitizer, improved container scripts, and branch/commit metadata in images
  • Use explicit cudaStream_t with cub::DeviceTransform and non-blocking streams for GPU control
  • Enable barrier LP tests, add regression testing, and add SonarQube static analysis
  • Added parameter for specifying the random seed used by the solver

Bug Fixes (26.02)

  • Fixed an issue with incorrect signs of dual variables and reduced costs on maximization problems
  • Fix out-of-bounds in dense-column detection in barrier
  • Correct infeasible-list handling to avoid incorrect infeasibility reports in dual simplex
  • Fix race conditions found via Clang host build + ThreadSanitizer
  • Resolve CUDA–Numba version mismatches with cuDF
  • Fix device code to include required trailing return types
  • Fix issue in crossover after dualization in barrier
  • Repair container build and test failures
  • Miscellaneous additional fixes and stability improvements

Documentation (26.02)

  • Update README and top-level docs for current build and usage
  • Document new repository branching strategies and release-cycle details in README and CONTRIBUTING
  • Add best practices for batch solving

[NIGHTLY] v25.12.00

15 Oct 18:54
b0fea30

Choose a tag to compare

[NIGHTLY] v25.12.00 Pre-release
Pre-release

🔗 Links

🐛 Bug Fixes

📖 Documentation

🛠️ Improvements

[NIGHTLY] v25.10.00

06 Aug 16:06
1a39bd4

Choose a tag to compare

[NIGHTLY] v25.10.00 Pre-release
Pre-release

🔗 Links

🚨 Breaking Changes

🐛 Bug Fixes

📖 Documentation

🚀 New Features

🛠️ Improvements

[NIGHTLY] v25.08.00

11 Jun 21:09
v25.08.00a
4c92bf8

Choose a tag to compare

[NIGHTLY] v25.08.00 Pre-release
Pre-release

🔗 Links

🚨 Breaking Changes

🐛 Bug Fixes

  • Fix a segfault on bnatt500 due to small mu leading to inf/nan (#254) @chris-maes
  • Fix a bug in basis repair. Recover from numerical issues in primal update. (#249) @chris-maes
  • Unset NDEBUG in cmake in assert mode (#248) @hlinsen
  • Manual cuda graph creation in load balanced bounds presolve (#242) @kaatish
  • Fix assert failure on MIP problem reducing to LP after presolve (#235) @aliceb-nv
  • align service api with SDK (compat with deprecations) (#227) @tmckayus
  • Fix bug on initial solution size in the check and cuda set device order (#226) @akifcorduk
  • No cuda graph in batched pdlp (#225) @Kh4ster
  • Disable feasibility jump test for one of the dataset (#215) @rgsl888prabhu
  • Fix logging levels (#201) @akifcorduk
  • Fix bug in scaling of dual slacks and sign of dual variables for >= constraints (#191) @chris-maes
  • Fix inversion crossover bug with pdp and prize collection (#179) @hlinsen
  • Fix a bug in extract_best_per_route kernel (#156) @rg20
  • Fix several bugs appeared in unit testing of JuMP interface (#149) @rg20
  • Fix incorrect reported solving time (#131) @aliceb-nv
  • Fix max offset (#113) @Kh4ster
  • Fix batch graph capture issue caused by pinned memory allocator (#110) @Kh4ster
  • Fix bug in optimization_problem_solution_t::copy_from (#109) @rg20
  • Fix issue when problem has an empty problem in pdlp (#107) @Kh4ster
  • Fix crash on models with variables but no constraints (#105) @aliceb-nv
  • Fix inversion of constraint bounds in conditional bounds presolve (#75) @kaatish
  • Fix data initialization in create depot node for max travel time feature (#74) @hlinsen

📖 Documentation

🚀 New Features

🛠️ Improvements

[NIGHTLY] v25.05.00

11 Jun 21:37
b833f7a

Choose a tag to compare

[NIGHTLY] v25.05.00 Pre-release
Pre-release

🔗 Links

🐛 Bug Fixes

  • Fix issue with reported solving time on time-limit termination (#93) @aliceb-nv
  • Fix to decouple thin client requirements from cuopt main module (#92) @rgsl888prabhu
  • Fix occasional incorrect solution bound on maximization problems (#83) @rgsl888prabhu
  • Fix inversion of constraint bounds in conditional bounds presolve (#82) @kaatish
  • Fix nightly build which is failing on jq request (#78) @rgsl888prabhu
  • Pdlp fix batch cuda graph (#68) @Kh4ster
  • allow long client version in service version check' (#61) @tmckayus
  • Fix obj constant on max. Fix undefined memory access at root (#52) @chris-maes
  • include Python constraints for pure-Python conda packages (#51) @jameslamb
  • Disable failing FJ test on ARM CI (#39) @aliceb-nv
  • Fix bug on probing cache usage of lb bounds prop and probing cache bounds lookup with wrong variable id (#36) @akifcorduk
  • Fix graph bug seen when using batch (#34) @Kh4ster
  • Fix bug: dual simplex does not fill in additional info (#33) @chris-maes
  • Switch to using v3.2 of argparser for wheels (#31) @rg20
  • Bug fix: solution incorrect when simplex presolve removes empty columns (#29) @chris-maes
  • Bug fixes on preprocess, line segment returning worse solution, temporary fix add B&B solution directly (#27) @akifcorduk
  • Fix non-trivial presolve not reporting Optimality (#26) @aliceb-nv
  • Fix bug in C API for bool parameters. Fix bug on irish-electricty (#25) @chris-maes
  • Fix bug on consecutive runs caused by static lp_state_t object (#24) @aliceb-nv
  • Fix bug in crossover where numerical was returned instead of time limit (#23) @chris-maes
  • Handle out of memory and out of time limit issues gracefully (#22) @rg20
  • PDLP solution file generation and binary fix (#21) @Kh4ster
  • Fix objective value when LP is unbounded (#19) @chris-maes
  • Fix bugs on empty problem and pre_process assignment (#18) @akifcorduk
  • Fix LP termination status 9 errors in batch LP solves (#17) @chris-maes
  • Fix branch build and nightly (#12) @rgsl888prabhu

📖 Documentation

🛠️ Improvements