From dd0b69ee57e25be42782a6da6a77ea173843b4bf Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Wed, 28 Jan 2026 14:07:13 -0600 Subject: [PATCH 01/12] update --- RELEASE-NOTES.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 3112b56ec..d72e0a758 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,6 +1,26 @@ # Release Notes +## Release Notes 26.02 +### New Features (26.02) + +- + +### Breaking Changes (26.02) + +- + +### Improvements (26.02) + +- + +### Bug Fixes (26.02) + +- + +### Documentation (26.02) + +- ## Release Notes 25.12 From aad24250b189c31d2cb68f12a0c20cef5102a026 Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Wed, 28 Jan 2026 16:24:30 -0600 Subject: [PATCH 02/12] Add details about agentic skill --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index f497d6b67..82844a123 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ + # cuOpt - GPU accelerated Optimization Engine [![Build Status](https://github.com/NVIDIA/cuopt/actions/workflows/build.yaml/badge.svg)](https://github.com/NVIDIA/cuopt/actions/workflows/build.yaml) @@ -153,6 +154,10 @@ cuOpt follows the RAPIDS release schedule and is part of the **"others"** catego For current release timelines and dates, refer to the [RAPIDS Maintainers Docs](https://docs.rapids.ai/maintainers/). +## For AI Coding Agents + +See [AGENTS.md](./AGENTS.md) for agent-specific guidelines. + ## Contributing Guide Review the [CONTRIBUTING.md](CONTRIBUTING.md) file for information on how to contribute code and issues to the project. From 3b575f17ffd3fb6e3ce5f19c8fe4959fe228acef Mon Sep 17 00:00:00 2001 From: Nicolas Blin <31096601+Kh4ster@users.noreply.github.com> Date: Thu, 5 Feb 2026 09:30:24 +0100 Subject: [PATCH 03/12] Update RELEASE-NOTES.md Added batch PDLP and related improvements to the release notes --- RELEASE-NOTES.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index d72e0a758..4b5ebb5b3 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -4,7 +4,8 @@ ### New Features (26.02) -- +- Add option to use batch PDLP instead of parallel Dual Simplex when running Strong Branching at the root [#805](https://github.com/NVIDIA/cuopt/pull/805) (off by default). Based on [Batched First-Order Methods for Parallel LP Solving in MIP](https://arxiv.org/abs/2601.21990) ([Nicolas Blin](https://github.com/Kh4ster), [Stefano Gualandi](https://github.com/stegua), [Christopher Maes](https://github.com/chris-maes), [Andrea Lodi](https://github.com/andrealodi), [Bartolomeo Stellato](https://github.com/bstellato)) +- New infeasiblity detection for PDLP's default solver mode Stable3 (off by default) [#805](https://github.com/NVIDIA/cuopt/pull/805) ### Breaking Changes (26.02) @@ -12,7 +13,7 @@ ### Improvements (26.02) -- +- Improved primal/dual warm start for PDLP's default solver mode Stable3 [#805](https://github.com/NVIDIA/cuopt/pull/805) ### Bug Fixes (26.02) From 193887480b1c5f357cd827e53704ba845273a6f9 Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Thu, 5 Feb 2026 14:47:14 -0600 Subject: [PATCH 04/12] update release notes --- RELEASE-NOTES.md | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 4b5ebb5b3..5cebed49c 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -4,8 +4,15 @@ ### New Features (26.02) -- Add option to use batch PDLP instead of parallel Dual Simplex when running Strong Branching at the root [#805](https://github.com/NVIDIA/cuopt/pull/805) (off by default). Based on [Batched First-Order Methods for Parallel LP Solving in MIP](https://arxiv.org/abs/2601.21990) ([Nicolas Blin](https://github.com/Kh4ster), [Stefano Gualandi](https://github.com/stegua), [Christopher Maes](https://github.com/chris-maes), [Andrea Lodi](https://github.com/andrealodi), [Bartolomeo Stellato](https://github.com/bstellato)) -- New infeasiblity detection for PDLP's default solver mode Stable3 (off by default) [#805](https://github.com/NVIDIA/cuopt/pull/805) +- Parallel reliability branching inside MIP solver +- Cuts are now added at the root node: Gomory, Knapsack, MIR, CG +- Add option to use batch PDLP instead of parallel Dual Simplex when running Strong Branching at the root (off by default). Based on [Batched First-Order Methods for Parallel LP Solving in MIP](https://arxiv.org/abs/2601.21990) ([Nicolas Blin](https://github.com/Kh4ster), [Stefano Gualandi](https://github.com/stegua), [Christopher Maes](https://github.com/chris-maes), [Andrea Lodi](https://github.com/andrealodi), [Bartolomeo Stellato](https://github.com/bstellato)) +- BatchPDLP solver option for initializing pseudocosts via strong-branching +- New infeasibility detection for PDLP's default solver mode Stable3 (off by default) +- Solutions callbacks added to C API +- Multiple new diving techniques added for finding integer feasible solutions +- PSLP presolve option for LP +- Add batch solve for routing to boost throughput for many similar instances ### Breaking Changes (26.02) @@ -13,15 +20,32 @@ ### Improvements (26.02) -- Improved primal/dual warm start for PDLP's default solver mode Stable3 [#805](https://github.com/NVIDIA/cuopt/pull/805) +- 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 +- 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 ### Bug Fixes (26.02) -- +- Fix out-of-bounds in dense-column detection in barrier +- Correct infeasible-list handling to avoid incorrect infeasibility reports +- 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 crossover dualization issues in LP crossover +- 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 ## Release Notes 25.12 From ecc1e4feb42d8cd51e5f828c96644416596514b5 Mon Sep 17 00:00:00 2001 From: Chris Maes Date: Thu, 5 Feb 2026 12:52:49 -0800 Subject: [PATCH 05/12] Update RELEASE-NOTES.md --- RELEASE-NOTES.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 5cebed49c..b942fc10d 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -5,10 +5,9 @@ ### New Features (26.02) - Parallel reliability branching inside MIP solver -- Cuts are now added at the root node: Gomory, Knapsack, MIR, CG -- Add option to use batch PDLP instead of parallel Dual Simplex when running Strong Branching at the root (off by default). Based on [Batched First-Order Methods for Parallel LP Solving in MIP](https://arxiv.org/abs/2601.21990) ([Nicolas Blin](https://github.com/Kh4ster), [Stefano Gualandi](https://github.com/stegua), [Christopher Maes](https://github.com/chris-maes), [Andrea Lodi](https://github.com/andrealodi), [Bartolomeo Stellato](https://github.com/bstellato)) -- BatchPDLP solver option for initializing pseudocosts via strong-branching -- New infeasibility detection for PDLP's default solver mode Stable3 (off by default) +- Mixed Integer Gomory, Knapsack, Mixed Integer Round, 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](https://arxiv.org/abs/2601.21990) ([Nicolas Blin](https://github.com/Kh4ster), [Stefano Gualandi](https://github.com/stegua), [Christopher Maes](https://github.com/chris-maes), [Andrea Lodi](https://github.com/andrealodi), [Bartolomeo Stellato](https://github.com/bstellato)) +- New infeasibility detection option for PDLP's default solver mode Stable3 - Solutions callbacks added to C API - Multiple new diving techniques added for finding integer feasible solutions - PSLP presolve option for LP @@ -33,7 +32,7 @@ ### Bug Fixes (26.02) - Fix out-of-bounds in dense-column detection in barrier -- Correct infeasible-list handling to avoid incorrect infeasibility reports +- 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 From c28927a975e6068db825e6f8fe5cbc4e6eef97a7 Mon Sep 17 00:00:00 2001 From: Ramakrishnap <42624703+rgsl888prabhu@users.noreply.github.com> Date: Fri, 6 Feb 2026 09:46:50 -0600 Subject: [PATCH 06/12] Update RELEASE-NOTES.md --- RELEASE-NOTES.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index b942fc10d..8065412d0 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -8,14 +8,14 @@ - Mixed Integer Gomory, Knapsack, Mixed Integer Round, 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](https://arxiv.org/abs/2601.21990) ([Nicolas Blin](https://github.com/Kh4ster), [Stefano Gualandi](https://github.com/stegua), [Christopher Maes](https://github.com/chris-maes), [Andrea Lodi](https://github.com/andrealodi), [Bartolomeo Stellato](https://github.com/bstellato)) - New infeasibility detection option for PDLP's default solver mode Stable3 -- Solutions callbacks added to C API +- Solutions callbacks added to C API, additionally cuopt supports dual_bound and user_data. - Multiple new diving techniques added for finding integer feasible solutions - PSLP presolve option for LP - Add batch solve for routing to boost throughput for many similar instances ### Breaking Changes (26.02) -- +- Solutions callbacks added to C API, additionally cuopt supports dual_bound and user_data. ### Improvements (26.02) From c46403f2bbc45527bc399f536bccf1bc5fc95f4f Mon Sep 17 00:00:00 2001 From: Chris Maes Date: Fri, 6 Feb 2026 08:11:59 -0800 Subject: [PATCH 07/12] Update README.md --- README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 82844a123..4595205cb 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -# cuOpt - GPU accelerated Optimization Engine +# cuOpt - GPU-accelerated Optimization Engine [![Build Status](https://github.com/NVIDIA/cuopt/actions/workflows/build.yaml/badge.svg)](https://github.com/NVIDIA/cuopt/actions/workflows/build.yaml) [![Version](https://img.shields.io/badge/version-26.02.00-blue)](https://github.com/NVIDIA/cuopt/releases) @@ -12,13 +12,16 @@ -NVIDIA® cuOpt™ is a GPU-accelerated optimization engine that excels in mixed integer linear programming (MILP), linear programming (LP), quadratic programming (QP) and vehicle routing problems (VRP). It enables near real-time solutions for large-scale challenges with millions of variables and constraints, offering -easy integration into existing solvers and seamless deployment across hybrid and multi-cloud environments. +NVIDIA® cuOpt™ is a GPU-accelerated optimization engine that excels in mixed integer linear programming (MILP), linear programming (LP), quadratic programming (QP) and vehicle routing problems (VRP). It enables near real-time solutions for large-scale LPs with millions of variables and constraints, and MIPs with hundreds of thousands of variables. cuOpt offers easy integration into existing modeling languages and seamless deployment across hybrid and multi-cloud environments. The core engine is written in C++ and wrapped with a C API, Python API and Server API. For the latest stable version ensure you are on the `main` branch. +## Latest Documentation + +[cuOpt Documentation](https://docs.nvidia.com/cuopt/user-guide/latest/introduction.html)) + ## Supported APIs cuOpt supports the following APIs: From 69b68ad0cdc5f86e80c7f28163fe1257f75399cb Mon Sep 17 00:00:00 2001 From: Chris Maes Date: Fri, 6 Feb 2026 08:12:32 -0800 Subject: [PATCH 08/12] Update RELEASE-NOTES.md Co-authored-by: Rajesh Gandham --- RELEASE-NOTES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 8065412d0..5efd1748f 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -10,7 +10,7 @@ - New infeasibility detection option for PDLP's default solver mode Stable3 - Solutions callbacks added to C API, additionally cuopt supports dual_bound and user_data. - Multiple new diving techniques added for finding integer feasible solutions -- PSLP presolve option for LP +- The PSLP presolver (https://github.com/dance858/PSLP) is enabled by default for LP problems. To disable set presolve value to 0. - Add batch solve for routing to boost throughput for many similar instances ### Breaking Changes (26.02) From 4d72e6aa00bc79a137cb51da1316536275cada0e Mon Sep 17 00:00:00 2001 From: Chris Maes Date: Fri, 6 Feb 2026 08:19:50 -0800 Subject: [PATCH 09/12] Update RELEASE-NOTES.md --- RELEASE-NOTES.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 5efd1748f..0ad31179d 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -4,18 +4,18 @@ ### New Features (26.02) -- Parallel reliability branching inside MIP solver -- Mixed Integer Gomory, Knapsack, Mixed Integer Round, and Strong Chvatal Gomory cuts are now added at root node +- 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](https://arxiv.org/abs/2601.21990) ([Nicolas Blin](https://github.com/Kh4ster), [Stefano Gualandi](https://github.com/stegua), [Christopher Maes](https://github.com/chris-maes), [Andrea Lodi](https://github.com/andrealodi), [Bartolomeo Stellato](https://github.com/bstellato)) - New infeasibility detection option for PDLP's default solver mode Stable3 -- Solutions callbacks added to C API, additionally cuopt supports dual_bound and user_data. +- 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 (https://github.com/dance858/PSLP) is enabled by default for LP problems. To disable set presolve value to 0. -- Add batch solve for routing to boost throughput for many similar instances +- The [PSLP presolver](https://github.com/dance858/PSLP) 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 ### Breaking Changes (26.02) -- Solutions callbacks added to C API, additionally cuopt supports dual_bound and user_data. +- The signature of the solution callbacks have changed for the Python API ### Improvements (26.02) @@ -36,7 +36,7 @@ - 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 crossover dualization issues in LP crossover +- Fix issue in crossover after dualization in barrier - Repair container build and test failures - Miscellaneous additional fixes and stability improvements From e22836b99ba6256acf061f9c6227df4cc3e30598 Mon Sep 17 00:00:00 2001 From: Chris Maes Date: Fri, 6 Feb 2026 08:20:39 -0800 Subject: [PATCH 10/12] Update RELEASE-NOTES.md --- RELEASE-NOTES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 0ad31179d..ca9d080b7 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -22,6 +22,7 @@ - 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 From a8484a4095125707c8db211bf3919a9d60e95e66 Mon Sep 17 00:00:00 2001 From: Chris Maes Date: Fri, 6 Feb 2026 08:24:38 -0800 Subject: [PATCH 11/12] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4595205cb..e0cc784cd 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -# cuOpt - GPU-accelerated Optimization Engine +# cuOpt - GPU-accelerated Optimization [![Build Status](https://github.com/NVIDIA/cuopt/actions/workflows/build.yaml/badge.svg)](https://github.com/NVIDIA/cuopt/actions/workflows/build.yaml) [![Version](https://img.shields.io/badge/version-26.02.00-blue)](https://github.com/NVIDIA/cuopt/releases) From 474dad5c194c772c84ffe2fd2c07168aebe98b38 Mon Sep 17 00:00:00 2001 From: Chris Maes Date: Fri, 6 Feb 2026 08:25:14 -0800 Subject: [PATCH 12/12] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e0cc784cd..12ebfcece 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ NVIDIA® cuOpt™ is a GPU-accelerated optimization engine that excels in mixed The core engine is written in C++ and wrapped with a C API, Python API and Server API. -For the latest stable version ensure you are on the `main` branch. +For the latest version ensure you are on the `main` branch. ## Latest Documentation