Skip to content

v26.02.00

Latest

Choose a tag to compare

@AyodeAwe AyodeAwe released this 11 Feb 18:01
v26.02.00
f73da24

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