From 8650b865ad36792da2076deaa8511257a7421a38 Mon Sep 17 00:00:00 2001 From: Cindy Wilkinson Date: Thu, 2 Oct 2025 17:38:24 -0400 Subject: [PATCH 1/9] Release notes for v25.10 --- docs/cuopt/source/release-notes.rst | 95 +++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/docs/cuopt/source/release-notes.rst b/docs/cuopt/source/release-notes.rst index 6443782d8..44b36e416 100644 --- a/docs/cuopt/source/release-notes.rst +++ b/docs/cuopt/source/release-notes.rst @@ -2,6 +2,101 @@ Release Notes ===================== +==================== +Release Notes 25.10 +==================== + +New Features (25.10) +-------------------- + +- Added a new PDLP Solver mode code Stable3, the new default. +- This library now supports the QPS format, which is an extension of the standard MPS format for representing quadratic programming problems. +- Add root node presolve using Papilo + +Breaking Changes (25.10) +------------------------ + +- Added a new PDLP Solver mode code Stable3, the new default. + + +Improvements (25.10) +-------------------- + +- Fix issue stemming because Rocky 8.10 is EOL and replaced by 8.11 +- Combine conda install for local and channel based artifacts into one env create call +- Enable miplib datasets which were disabled, and also update README +- ``cuopt-server``: update dependencies (drop httpx, add psutil) +- Build pure-Python wheels without waiting for dependencies +- Avoid triggering nightly tests until builds are complete +- GF(2) presolve reduction for ``enlight_hard.mps`` +- CPUFJ for local search + simple rounding +- Add jump testing to nightly testing +- Compression tests are not run when compression is disabled +- Add sanitizer build option +- Doc update for container version update, and add ``nvidia-cuda-runtime`` as a dependency +- Heuristic Improvements: balance between generation and improvement heuristics +- Loosen presolve tolerance and update timers to report cumulative presolve/solve time +- CUDA 13 support: follow-ups +- Warn in case a dependent library is not found in libcuopt load +- Combined variable bounds +- Enable parallelism for root node presolve +- Print cuOpt version / machine info before solving +- Implement node presolve +- Build and test with CUDA 13.0.0 +- Add Commit Sha to container for reference +- use GCC 14, consolidate dependency groups, update pre-commit hooks +- Decompression for ``.mps.gz`` and ``.mps.bz2`` files +- Enable singleton stuffing and use Papilo default params +- Fix high GPU memory usage +- Add support for nightly ``cuopt-examples`` notebook testing +- Reduce hard-coded version usage in repo +- Make infeasibility checks consistent between the main solver and presolver +- Add read/write MPS and relaxation to python API +- Add maximization support for root node presolve +- 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 +- Performance tweak for ``dual_simplex/right_looking_lu`` +- Fix pre-commit for trailing whitespace and end of file +- Simple diving for Branch-and-Bound +- Bump libcuopt size to 775MiB +- Merge update version and fix version format bugs +- Support CUDA 12.9 +- Adding actions to automate auto issue assignment and reminder on inactivity +- Sub-MIP recombiner and B&B global variable changes +- FP as a local search +- Update rapids-build-backend to 0.4.1 +- Branch 25.10 merge branch 25.08 + +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`` leftover +- Add 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`` +- Skip downloading netlib data +- 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 + + ==================== Release Notes 25.08 ==================== From e8bae27903058444decb20a5ce3de79c4030eecc Mon Sep 17 00:00:00 2001 From: Ramakrishnap <42624703+rgsl888prabhu@users.noreply.github.com> Date: Fri, 3 Oct 2025 11:00:33 -0500 Subject: [PATCH 2/9] Update docs/cuopt/source/release-notes.rst Co-authored-by: Rajesh Gandham --- docs/cuopt/source/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cuopt/source/release-notes.rst b/docs/cuopt/source/release-notes.rst index 44b36e416..6e6f0c729 100644 --- a/docs/cuopt/source/release-notes.rst +++ b/docs/cuopt/source/release-notes.rst @@ -30,7 +30,7 @@ Improvements (25.10) - Avoid triggering nightly tests until builds are complete - GF(2) presolve reduction for ``enlight_hard.mps`` - CPUFJ for local search + simple rounding -- Add jump testing to nightly testing +- Add nightly testing of cuOpt jump interface - Compression tests are not run when compression is disabled - Add sanitizer build option - Doc update for container version update, and add ``nvidia-cuda-runtime`` as a dependency From eb441b67f1883dfaba3dc1635dcec5eec7922b4e Mon Sep 17 00:00:00 2001 From: Ramakrishnap <42624703+rgsl888prabhu@users.noreply.github.com> Date: Fri, 3 Oct 2025 11:00:40 -0500 Subject: [PATCH 3/9] Update docs/cuopt/source/release-notes.rst Co-authored-by: Rajesh Gandham --- docs/cuopt/source/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cuopt/source/release-notes.rst b/docs/cuopt/source/release-notes.rst index 6e6f0c729..3c88c43ad 100644 --- a/docs/cuopt/source/release-notes.rst +++ b/docs/cuopt/source/release-notes.rst @@ -28,7 +28,7 @@ Improvements (25.10) - ``cuopt-server``: update dependencies (drop httpx, add psutil) - Build pure-Python wheels without waiting for dependencies - Avoid triggering nightly tests until builds are complete -- GF(2) presolve reduction for ``enlight_hard.mps`` +- Implement GF(2) presolve reduction - CPUFJ for local search + simple rounding - Add nightly testing of cuOpt jump interface - Compression tests are not run when compression is disabled From 3b867c238af404fd3af1dcb00825f6f9bef6feeb Mon Sep 17 00:00:00 2001 From: Ramakrishnap <42624703+rgsl888prabhu@users.noreply.github.com> Date: Fri, 3 Oct 2025 11:08:35 -0500 Subject: [PATCH 4/9] Update release-notes.rst Added barrier PR description and also made suggested review changes --- docs/cuopt/source/release-notes.rst | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/docs/cuopt/source/release-notes.rst b/docs/cuopt/source/release-notes.rst index 3c88c43ad..8902065a0 100644 --- a/docs/cuopt/source/release-notes.rst +++ b/docs/cuopt/source/release-notes.rst @@ -9,25 +9,23 @@ Release Notes 25.10 New Features (25.10) -------------------- -- Added a new PDLP Solver mode code Stable3, the new default. +- Added a new PDLP Solver mode code Stable3, and new default is also concurrent mode with PDLP, dual simplex, barrier. +- Barrier method for LPs with cuDSS sparse Cholesky / LDLT on the GPU. - This library now supports the QPS format, which is an extension of the standard MPS format for representing quadratic programming problems. - Add root node presolve using Papilo Breaking Changes (25.10) ------------------------ -- Added a new PDLP Solver mode code Stable3, the new default. +- Added a new PDLP Solver mode code Stable3, and new default is also concurrent mode with PDLP, dual simplex, barrier. Improvements (25.10) -------------------- - Fix issue stemming because Rocky 8.10 is EOL and replaced by 8.11 -- Combine conda install for local and channel based artifacts into one env create call - Enable miplib datasets which were disabled, and also update README - ``cuopt-server``: update dependencies (drop httpx, add psutil) -- Build pure-Python wheels without waiting for dependencies -- Avoid triggering nightly tests until builds are complete - Implement GF(2) presolve reduction - CPUFJ for local search + simple rounding - Add nightly testing of cuOpt jump interface @@ -59,14 +57,10 @@ Improvements (25.10) - Performance tweak for ``dual_simplex/right_looking_lu`` - Fix pre-commit for trailing whitespace and end of file - Simple diving for Branch-and-Bound -- Bump libcuopt size to 775MiB - Merge update version and fix version format bugs - Support CUDA 12.9 -- Adding actions to automate auto issue assignment and reminder on inactivity - Sub-MIP recombiner and B&B global variable changes - FP as a local search -- Update rapids-build-backend to 0.4.1 -- Branch 25.10 merge branch 25.08 Bug Fixes (25.10) ----------------- @@ -81,7 +75,6 @@ Bug Fixes (25.10) - Add 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`` -- Skip downloading netlib data - Empty columns with infinite bounds are not removed From 3a1a52030782d1f34f5007a709925098aa5346b8 Mon Sep 17 00:00:00 2001 From: Ramakrishnap <42624703+rgsl888prabhu@users.noreply.github.com> Date: Fri, 3 Oct 2025 11:09:17 -0500 Subject: [PATCH 5/9] Update release-notes.rst --- docs/cuopt/source/release-notes.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/cuopt/source/release-notes.rst b/docs/cuopt/source/release-notes.rst index 8902065a0..f808f039f 100644 --- a/docs/cuopt/source/release-notes.rst +++ b/docs/cuopt/source/release-notes.rst @@ -23,7 +23,6 @@ Breaking Changes (25.10) Improvements (25.10) -------------------- -- Fix issue stemming because Rocky 8.10 is EOL and replaced by 8.11 - Enable miplib datasets which were disabled, and also update README - ``cuopt-server``: update dependencies (drop httpx, add psutil) - Implement GF(2) presolve reduction From a191e74d009ff859d3f5841a04ad12accff631a0 Mon Sep 17 00:00:00 2001 From: Chris Maes Date: Fri, 3 Oct 2025 12:19:35 -0700 Subject: [PATCH 6/9] Update release-notes.rst --- docs/cuopt/source/release-notes.rst | 52 ++++++++++++++--------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/cuopt/source/release-notes.rst b/docs/cuopt/source/release-notes.rst index f808f039f..1ce867655 100644 --- a/docs/cuopt/source/release-notes.rst +++ b/docs/cuopt/source/release-notes.rst @@ -9,57 +9,56 @@ Release Notes 25.10 New Features (25.10) -------------------- -- Added a new PDLP Solver mode code Stable3, and new default is also concurrent mode with PDLP, dual simplex, barrier. -- Barrier method for LPs with cuDSS sparse Cholesky / LDLT on the GPU. -- This library now supports the QPS format, which is an extension of the standard MPS format for representing quadratic programming problems. -- Add root node presolve using Papilo +- 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) ------------------------ -- Added a new PDLP Solver mode code Stable3, and new default is also concurrent mode with PDLP, dual simplex, barrier. +- New PDLP Solver mode Stable3 is the default Improvements (25.10) -------------------- +- 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`` files +- Enable 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 - Enable miplib datasets which were disabled, and also update README - ``cuopt-server``: update dependencies (drop httpx, add psutil) -- Implement GF(2) presolve reduction -- CPUFJ for local search + simple rounding - Add nightly testing of cuOpt jump interface - Compression tests are not run when compression is disabled -- Add sanitizer build option -- Doc update for container version update, and add ``nvidia-cuda-runtime`` as a dependency -- Heuristic Improvements: balance between generation and improvement heuristics +- Add sanitizer build option- Heuristic Improvements: balance between generation and improvement heuristics - Loosen presolve tolerance and update timers to report cumulative presolve/solve time -- CUDA 13 support: follow-ups - Warn in case a dependent library is not found in libcuopt load - Combined variable bounds -- Enable parallelism for root node presolve -- Print cuOpt version / machine info before solving -- Implement node presolve -- Build and test with CUDA 13.0.0 - Add Commit Sha to container for reference - use GCC 14, consolidate dependency groups, update pre-commit hooks -- Decompression for ``.mps.gz`` and ``.mps.bz2`` files -- Enable singleton stuffing and use Papilo default params -- Fix high GPU memory usage - Add support for nightly ``cuopt-examples`` notebook testing - Reduce hard-coded version usage in repo -- Make infeasibility checks consistent between the main solver and presolver -- Add read/write MPS and relaxation to python API -- Add maximization support for root node presolve - 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 -- Performance tweak for ``dual_simplex/right_looking_lu`` - Fix pre-commit for trailing whitespace and end of file -- Simple diving for Branch-and-Bound - Merge update version and fix version format bugs -- Support CUDA 12.9 -- Sub-MIP recombiner and B&B global variable changes -- FP as a local search +- 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) ----------------- @@ -87,6 +86,7 @@ Documentation (25.10) - 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 ==================== From 03be5ca4ef452c08d07c03697a33d7426c47bfc1 Mon Sep 17 00:00:00 2001 From: Ramakrishnap <42624703+rgsl888prabhu@users.noreply.github.com> Date: Mon, 6 Oct 2025 15:26:58 -0500 Subject: [PATCH 7/9] Update release-notes.rst --- docs/cuopt/source/release-notes.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/cuopt/source/release-notes.rst b/docs/cuopt/source/release-notes.rst index 1ce867655..6508767dc 100644 --- a/docs/cuopt/source/release-notes.rst +++ b/docs/cuopt/source/release-notes.rst @@ -40,7 +40,6 @@ Improvements (25.10) - Performance improvement in dual simplex's right-looking LU factorization - Fix high GPU memory usage - Print cuOpt version / machine info before solving -- Enable miplib datasets which were disabled, and also update README - ``cuopt-server``: update dependencies (drop httpx, add psutil) - Add nightly testing of cuOpt jump interface - Compression tests are not run when compression is disabled From c3aae6d8563583537815b2cd9fa6eaf5eda4cbbf Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Mon, 6 Oct 2025 15:36:56 -0500 Subject: [PATCH 8/9] fix style --- docs/cuopt/source/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cuopt/source/release-notes.rst b/docs/cuopt/source/release-notes.rst index 6508767dc..5e7641908 100644 --- a/docs/cuopt/source/release-notes.rst +++ b/docs/cuopt/source/release-notes.rst @@ -9,7 +9,7 @@ Release Notes 25.10 New Features (25.10) -------------------- -- New barrier method for solving LPs. Uses cuDSS for sparse Cholesky / LDT. +- 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). From 0cb694acdecbed79214a78f5bfcb384448d46b2f Mon Sep 17 00:00:00 2001 From: Ramakrishnap <42624703+rgsl888prabhu@users.noreply.github.com> Date: Fri, 10 Oct 2025 13:34:25 -0500 Subject: [PATCH 9/9] Update release-notes.rst --- docs/cuopt/source/release-notes.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/cuopt/source/release-notes.rst b/docs/cuopt/source/release-notes.rst index 5e7641908..e01866f7c 100644 --- a/docs/cuopt/source/release-notes.rst +++ b/docs/cuopt/source/release-notes.rst @@ -24,6 +24,7 @@ Breaking Changes (25.10) 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