Release Notes#
Release Notes 25.10#
New Features (25.10)#
New barrier method for solving LPs. Uses cuDSS for sparse Cholesky / LDT.
Concurrent mode for LPs now uses PDLP, dual simplex, and barrier
New PDLP solver mode Stable3.
MIP presolve using Papilo (enabled by default). LP presolve using Papilo (optional).
Parallel branch and bound on the CPU: multiple best-first search and diving threads
Breaking Changes (25.10)#
New PDLP Solver mode Stable3 is the default
Improvements (25.10)#
Add setting “CUOPT_BARRIER_DUAL_INITIAL_POINT” to change the dual initial point used by barrier
CPUFJ for local search + simple rounding
FP as a local search
Sub-MIP recombiner and B&B global variable changes
Implement GF(2) presolve reduction
Implement node presolve
CUDA 13/12.9 support
Build and test with CUDA 13.0.0
Add read/write MPS and relaxation to python API
Decompression for
.mps.gz
and.mps.bz2
filesEnable parallelism for root node presolve
Enable singleton stuffing and use Papilo default params
Make infeasibility checks consistent between the main solver and presolver
Add maximization support for root node presolve
Performance improvement in dual simplex’s right-looking LU factorization
Fix high GPU memory usage
Print cuOpt version / machine info before solving
cuopt-server
: update dependencies (drop httpx, add psutil)Add nightly testing of cuOpt jump interface
Compression tests are not run when compression is disabled
Add sanitizer build option- Heuristic Improvements: balance between generation and improvement heuristics
Loosen presolve tolerance and update timers to report cumulative presolve/solve time
Warn in case a dependent library is not found in libcuopt load
Combined variable bounds
Add Commit Sha to container for reference
use GCC 14, consolidate dependency groups, update pre-commit hooks
Add support for nightly
cuopt-examples
notebook testingReduce hard-coded version usage in repo
Container to work on all different users including root
Changes to download LP and MILP datasets, and also disable cvxpy testing for 3.10
Faster engine compile time
Fix pre-commit for trailing whitespace and end of file
Merge update version and fix version format bugs
This library now supports the QPS format, which is an extension of the standard MPS format for representing quadratic programming problems.
Bug Fixes (25.10)#
Fix variables out of bounds caused by CPUFJ LP scratch thread
Fix the maybe-uninitialized compilation error
Fix linking errors in the test suite when disabling C adaptor
Compute relative gap with respect to user objectives
Add http timeout values for general, send, and receive to client
Fix bug in
fixed_problem_computation
Remove
limiting_resource_adaptor
leftoverAdd support for cuda13 container and fix cuda13 lib issues in wheel
Return Infeasible if the user problem contains crossing bounds
Fix out-of-bound access in
clean_up_infeasibilities
Empty columns with infinite bounds are not removed
Documentation (25.10)#
Add tutorial video links to Decompression
Add warmstart, model update, update docs
add docs on CI workflow inputs
Add name to drop-down for video link
Add video link to the docs and to the Readme
Add documentation on nightly installation commands
Fix version in version tab, change log, and fix typos
Doc update for container version update, and add
nvidia-cuda-runtime
as a dependency
Release Notes 25.08#
New Features (25.08)#
Added Python API for LP and MILP (#223)
Breaking Changes (25.08)#
Fixed versioning for nightly and release package (#175)
Improvements (25.08)#
New heuristic improvements (#178)
Add helm chart for cuOpt service (#224)
Add nightly container support (#180)
Adding deb package support as a beta feature (#190)
Use cusparsespmv_preprocess() now that Raft implements it (#120)
Create a bash script to run MPS files in parallel (#87)
Several fixes needed to compile cuOpt with LLVM (#121)
Small fixes for corner cases (#130)
Small improvements on how paths are handled in tests (#129)
Update cxxopts to v3.3.1 (#128)
Bump actions/checkout in nightly.yaml to v4 (#230)
Remove CUDA 11 specific changes from repo (#222)
Heuristic improvements with solution hash, MAB and simplex root solution (#216)
Various typos in comments and strings, note on result dir (#200)
Split very large tests into smaller individual test cases (#152)
Fix compile error when using clang with C++20 (#145)
Relax pinnings on several dependencies, remove nvidia channel (#125)
Fix compile error when building with clang (#119)
cuOpt service add healthcheck for / (#114)
refactor(shellcheck): fix all remaining shellcheck errors/warnings (#99)
Add CTK 12.9 fatbin flags to maintain existing binary sizes (#58)
Bug Fixes (25.08)#
Fixed a segfault on bnatt500 due to small mu leading to inf/nan (#254)
Fixed a bug in basis repair. Recover from numerical issues in primal update (#249)
Unset NDEBUG in cmake in assert mode (#248)
Manual cuda graph creation in load balanced bounds presolve (#242)
Fixed bug on initial solution size in the check and cuda set device order (#226)
Disable cuda graph in batched PDLP (#225)
Fix logging levels format with timestamps (#201)
Fix bug in scaling of dual slacks and sign of dual variables for >= constraints (#191)
Fix inversion crossover bug with PDP and prize collection (#179)
Fix a bug in extract_best_per_route kernel (#156)
Fix several bugs appeared in unit testing of JuMP interface (#149)
Fix incorrect reported solving time (#131)
Fix max offset (#113)
Fix batch graph capture issue caused by pinned memory allocator (#110)
Fix bug in optimization_problem_solution_t::copy_from (#109)
Fix issue when problem has an empty problem in PDLP (#107)
Fix crash on models with variables but no constraints (#105)
Fix inversion of constraint bounds in conditional bounds presolve (#75)
Fix data initialization in create depot node for max travel time feature (#74)
Documentation (25.08)#
Added more pre-commit checks to ensure coding standards (#213)
Mention GAMS and GAMSPy in third-party modeling languages page in documentation (#206)
Enable doc build workflow and build script for PR and Nightly (#203)
Fix the link to Python docs in README (#118)
Add link checker for doc build and test (#229)
Release Notes 25.05#
New Features (25.05)#
Added concurrent mode that runs PDLP and Dual Simplex together
Added crossover from PDLP to Dual Simplex
Added a C API for LP and MILP
PDLP: Faster iterations and new more robust default PDLPSolverMode Stable2
Added support for writing out mps file containing user problem. Useful for debugging
Breaking Changes (25.05)#
NoTermination is now a NumericalError
Split cuOpt as libcuopt and cuopt wheel
Improvements (25.05)#
Hook up MILP Gap parameters and add info about number of nodes explored and simplex iterations
FJ bug fixes, tests and improvements
Allow no time limit in MILP
Refactor routing
Probing cache optimization
Diversity improvements for routing
Enable more compile warnings and faster compile by bypassing rapids fetch
Constraint prop based on load balanced bounds update
Logger file handling and bug fixes on MILP
Add shellcheck to pre-commit and fix warnings
Bug Fixes (25.05)#
In the solution,
termination_status
should be cast to correct enum.Fixed a bug using vehicle IDs in construct feasible solution algorithm.
FP recombiner probing bug fix.
Fix concurrent LP crashes.
Fix print relative dual residual.
Handle empty problems gracefully.
Improve breaks to allow dimensions at arbitrary places in the route.
Free var elimination with a substitute variable for each free variable.
Fixed race condition when resetting vehicle IDs in heterogenous mode.
cuOpt self-hosted client, some MILPs do not have all fields in
lp_stats
.Fixed RAPIDS logger usage.
Handle LP state more cleanly, per solution.
Fixed routing solver intermittent failures.
Gracefully exit when the problem is infeasible after presolve.
Fixed bug on dual resizing.
Fix occasional incorrect solution bound on maximization problems
Fix inversion of constraint bounds in conditional bounds presolve
Pdlp fix batch cuda graph
Fix obj constant on max. Fix undefined memory access at root
Allow long client version in service version check, this fixes the issue in case version is of the format 25.05.00.dev0
Documentation (25.05)#
Restructure documementation to accomdate new APIs