Skip to content

Releases: NVIDIA/cuopt

v26.04.00

09 Apr 20:42
d9b7c96

Choose a tag to compare

What's Changed

🚨 Breaking Changes

  • Update solution object to include the LP solver by @nguidotti in #822

🐛 Bug Fixes

  • Fix doc version update script to handle new url by @rgsl888prabhu in #810
  • Add nvjitlink to cuda-toolkit pip extras for cusparse compatibility by @bdice in #850
  • Fix issue with incorrect lower bound on air05 by @chris-maes in #890
  • Fix batch pdlp and python api support by @Kh4ster in #893
  • Fix timer checks by @akifcorduk in #849
  • fix how tests create service subprocess (causes errors with new cuda) by @tmckayus in #897
  • Fix thrust tuple includes + more timer checks by @aliceb-nv in #902
  • Fix race condition in add_external_solutions_to_population by @akifcorduk in #909
  • Update to PSLP version with bug fixes by @rg20 in #920
  • Fix variable bound violation in CPUFJ moves by @aliceb-nv in #930
  • Fix #903: Validate unique vehicle_ids in VRP fleet data by @anandhkb in #917
  • Fix incorrect errors with x + x*x, +x, -x in Python API by @chris-maes in #936
  • turn off cpu only tests to unblock CI during investigation by @tmckayus in #959
  • Fix lexicographic search by @rgsl888prabhu in #969
  • apply -UNDEBUG to coupt flags instead of global settings by @tmckayus in #964
  • papilo probing workaround, probing cache sync, extra error logging by @aliceb-nv in #992
  • Add exception handling for pdlp in concurrent mode by @Iroy30 in #966
  • Implement UnboundedOrInfeasible termination status by @rg20 in #941
  • Fix race in graph capture when set_simplex_solution() is called by @aliceb-nv in #1017
  • Fix issue with infinite lower bounds and try to bound free variables in barrier by @chris-maes in #1001

📖 Documentation

🚀 New Features

  • Add memory model support for host-resident problem data by @tmckayus in #819
  • Add support for FP32 and mixed precision in PDLP by @Kh4ster in #910
  • Remote execution implementation by @tmckayus in #939
  • Add cuopt_grpc_server as an option for the cuopt image by @tmckayus in #1003

🛠️ Improvements

New Contributors

Full Changelog: v26.04.00a...v26.04.00

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