What's Changed
🚨 Breaking Changes
- build: don't install libcuopt into conda env by default by @ramakrishnap-nv in #1650
- Presolve work and iteration limits by @akifcorduk in #1656
- refactor: make to_optimization_problem a free function by @ramakrishnap-nv in #1802
- Migrate stream APIs from rmm::cuda_stream_view to cuda::stream_ref by @bdice in #1828
- build(cmake): split libcuopt into cuopt_client / cuopt_mathopt / cuopt_routing component libs by @ramakrishnap-nv in #1622
- build(cmake): give each component its own install component by @ramakrishnap-nv in #1926
- modify docker image to run proxy+grpc by default by @tmckayus in #2007
- build(wheel): make libcuopt a thin metapackage by @ramakrishnap-nv in #2013
🐛 Bug Fixes
- GF2 presolve rank-deficiency fix by @aliceb-nv in #1660
- Fix crash when symmetry generators are pruned by @nguidotti in #1689
- [BUG] Fixed uninitialized FJ constraint weights when the problem grows by @nguidotti in #1698
- Use configured feasibility tolerance in Papilo by @hlinsen in #1688
- Fix GF2 incorrectly treating some one-sided rows as equality by @aliceb-nv in #1707
- Fix dual residual computation in final solution output by @yuwenchen95 in #1718
- Remove split compile by default by @Kh4ster in #1722
- Report absent solution values instead of returning success by @ramakrishnap-nv in #1734
- fix: avoid uncapturable RMM copies inside routing CUDA graph captures by @ramakrishnap-nv in #1753
- fix: keep host sources alive for async route-view copies (#1756) by @ramakrishnap-nv in #1759
- Revert changes to PCG by @nguidotti in #1762
- Fix QCQP dual solution overrun and constraint count reporting by @yuwenchen95 in #1761
- fix: build-images CI failures (deadsnakes PPA flakiness + nightly version mismatch) by @ramakrishnap-nv in #1780
- Fix mod2 integrality tolerance by @akifcorduk in #1770
- Fix cuopt_assert macro argument expansion by @aliceb-nv in #1784
- Fix device_scalar constructors after RMM change by @aliceb-nv in #1795
- ci: pass the build datetime through to image builds by @ramakrishnap-nv in #1792
- Correctly return reduced costs for PDLP (stable3) by @mlubin in #1797
- Add missing TransactionGuard in the SLDA presolver by @aliceb-nv in #1815
- Fix cuopt_mvn retry loop being silently skipped under set -e by @ramakrishnap-nv in #1823
- Route Java console logging through System.out instead of native stdout by @ramakrishnap-nv in #1825
- Fix asynchronous clique table handoff by @hlinsen in #1834
- Disable clique/zero-half cuts in determinism mode by @nguidotti in #1841
- Forward routing gRPC settings and map node name strings to ints by @tmckayus in #1837
- fix(build): pin RAPIDS_BRANCH and shared-workflows to release/26.10 by @ramakrishnap-nv in #1870
- change Python grpc client so wait loop happens in Python by @tmckayus in #1857
- Concurrent halt fix on barrier by @akifcorduk in #1810
- fix(build): repair cuda::stream_ref migration breakage from #1828 by @ramakrishnap-nv in #1894
- fix(docker): keep libgomp1 in the Ubuntu runtime image (cuDSS threading layer, #1670) by @vgong-nv in #1888
- ci(thirdparty-cvxpy): fix cwd import-shadowing that masked the installed wheel by @ramakrishnap-nv in #1891
- Routing: avoid division by zero when vehicle capacity is zero by @vitor1001 in #1853
- Guard against nullptr dereference when checking concurrent solver status by @vitor1001 in #1845
- Routing: Guard diagonal element lookup against negative offsets in top_k by @vitor1001 in #1855
- Routing: Fix vector lifetimes in breaks unit test by @vitor1001 in #1854
- docs: update NVIDIA Brev documentation links by @ZedingZhang in #1925
- Pin cuDSS's dlopen'd threading-layer plugin to prevent a teardown race by @ramakrishnap-nv in #1883
- Fix a few CI issues by @KyleFromNVIDIA in #1927
- presolve: refresh the cached linear column count after removing empty… by @yuwenchen95 in #1923
- Fix issue in dual simplex where cut off used perturbed objective; use original objective and require dual feasibility by @chris-maes in #1901
- grpc server align ping handling with client behavior by @tmckayus in #1937
- Fix run mip tolerance by @akifcorduk in #1956
- wire MIP initial solutions into gRPC by @tmckayus in #1868
- [BUG] Correctly stop sub-MIP when main solve finishes by @nguidotti in #1911
- refactor(routing): stop cpu_routing_problem.hpp from leaking raft/rmm by @ramakrishnap-nv in #1969
- Fix Java JNI build on Ubuntu 22.04, add a Java smoke test to image CI by @ramakrishnap-nv in #1974
- Recompute dual variables and check dual feasibility after basis repair by @chris-maes in #1965
- fix(grpc): regenerate cuopt_mcp_schema.json, fail codegen drift earlier in CI by @ramakrishnap-nv in #1980
- proxy server make msgpack the default for wildcard ACCEPT by @tmckayus in #1964
- Fix false optimality declaration in the determinsitic mode by @aliceb-nv in #1954
- fix: escape parser error messages by @neuriv in #1947
- bugfix: handle cuda graph errors by @neuriv in #1945
- proxy: always include warnings and notes on result-file stubs by @tmckayus in #1990
- proxy: DELETE of an unknown request returns 200 with zero counts by @tmckayus in #1991
- proxy: say file vs stream in optimization-data 422s by @tmckayus in #1992
- fix(ci/docker): manifest --amend duplicate entries + unused gdb-gdbserver by @ramakrishnap-nv in #1997
- proxy server match legacy behavior on missing logs by @tmckayus in #1989
- track and return solve time for VRP solves in the gRPC server to support proxy server parity with legacy by @tmckayus in #1985
- proxy: use a stable job 404 and stop UUID-gating job routes for parity with legacy by @tmckayus in #1987
- Restore parameter logging by @nguidotti in #1996
- Bug fix: barrier determinism by @yuwenchen95 in #1856
- Fix concurrent clique table publication by @derluke in #1775
- Fix solution queue memory overflow by @akifcorduk in #2002
- fix(routing): declare cusparse, which libcuopt_routing.so links by @ramakrishnap-nv in #2008
- fix(cmake): ship constants.h with the component that needs it by @ramakrishnap-nv in #2016
- [BUG] Fix delayed termination during root loop by @nguidotti in #2003
- [BUG] Fix long interval between progress report by @nguidotti in #2019
- Fix ranged constraint conversion and MPS round trips by @rg20 in #2027
- Fix erroneous early solve termination by @aliceb-nv in #2037
- Fix/mip time limit overruns by @akifcorduk in #2046
- grpc pdlp warmstart data was not transmitted and read by the server by @tmckayus in #2041
- fix(wheel): declare libraft, whose headers the public API needs by @ramakrishnap-nv in #2014
- Reject unsupported mixed-integer quadratic problems before solving by @rg20 in #2032
- Bug fix: Insert barrier slack columns in front of the cone block for range rows by @yuwenchen95 in #2029
- Fix MPS writing for empty CSR constraint matrices by @mlubin in #2039
- fix(ci): pin remaining shared-workflows refs to release/26.10 by @ramakrishnap-nv in #2040
- Fix knapsack rational coefficient scaling by @aliceb-nv in #1754
- fix(test): update grpc_integration_test to submit_mip's new solver_settings_t signature by @ramakrishnap-nv in #2055
- fix(wheel): symlink component VERSION files to the repo-root VERSION by @ramakrishnap-nv in #2061
- fix(docker): build the Java JNI library against the split libcuopt wheels by @ramakrishnap-nv in #2062
- grpc server add a check for successful cuda init in worker by @tmckayus in #2063
- Fix continuous variable elimination tolerance in MIP presolve by @chris-maes in #2066
- Add extra termination checks in LP and submip by @aliceb-nv in #2054
- fix(docker): install the unsuffixed nvidia-cuda-cccl for every CUDA major by @ramakrishnap-nv in #2075
- Dual simplex objective logging fixes by @chris-maes in #2072
- grpc and proxy server, return the bound value for incumbents by @tmckayus in #2079
- skip job cancellation tests temporarily by @tmckayus in #2081
- Fix scale fallback direction in dual simplex by @chris-maes in #2080
- Fix FJ score alignment for CUDA atomic loads by @mlubin in #2088
- fix(linear_programming): implement neg, pos, and abs for LinearExpression (fixes #2056) by @reginaldalfret in #2068
- FIX : respecting project_initial_primal in mPDLP by @Bubullzz in #2050
- Fix rationalize coefficient bug and too conservative knapsack separation for fractional capacity by @chris-maes in #2083
- grpc switch worker creation from fork to posix spawn with exec by @tmckayus in #2085
- Local patch for papilo by @mlubin in #2102
- Keep presolve enabled for MIP set-solution callbacks by @akifcorduk in #2098
- fix(packaging): make single-component installs consumable from CMake by @ramakrishnap-nv in #2094
- build.sh: find libcuopt build tree for the cuopt Python build without --install by @ramakrishnap-nv in #2120
- Downgrade PSLP to v0.1.0 by @rg20 in #2116
- Fix leak of stale duals in compute_dual_solution_from_basis by @mlubin in #2124
- Fix duplicate substitution records emitted in presolve probing by @aliceb-nv in #2126
- ci: skip the PuLP nightly step on Python < 3.12 by @ramakrishnap-nv in #2138
- fix(mip): ask every early heuristic to stop before waiting for any by @ramakrishnap-nv in #2139
📖 Documentation
- docs: enforce heading title case with Vale by @ramakrishnap-nv in #1668
- Show mamba commands directly instead of a conda-then-swap note by @ramakrishnap-nv in #1827
- docs(grpc): document the VRP gRPC client (RoutingClient) by @ramakrishnap-nv in #1838
- docs: make Java bindings discoverable, documented, and installable via the selector by @ramakrishnap-nv in #1999
- docs build server spec from proxy server by @tmckayus in #2084
- cuopt server documentation update by @tmckayus in #2115
- docs: Release Notes 26.10 and missing settings docs by @ramakrishnap-nv in #1972
🚀 New Features
- Upgrade cmake version to include the PDLP objective offset fix by @Kh4ster in #1695
- Expose solver statistics as scalar solution attributes by @ramakrishnap-nv in #1715
- Add a solver setting for controlling adaptive regularization in barrier by @rg20 in #1743
- Java bindings for LP, MIP and QP by @nvidiacbrissette in #1524
- move server LPData transform into a standalone function by @tmckayus in #1848
- Extract LP create_data_model/create_solver into conversion.py by @tmckayus in #1849
- extract routing server data creation routines into standalone module by @tmckayus in #1850
- move server data compression handling into a standalone module by @tmckayus in #1851
- extract result file support logic to be shared by proxy by @tmckayus in #1869
- Move deprecated server modules into utils/deprecated. by @tmckayus in #1874
- move cuopt server job_queue and worker runtime into deprecated utils by @tmckayus in #1876
- routing: add distance breaks by @np96 in #1196
- Keep permanent utils from importing the legacy HTTP runtime. by @tmckayus in #1879
- add cancel and status for grpc routing client by @tmckayus in #1886
- add basic http proxy server that forwards to grpc by @tmckayus in #1892
- Add solver caching to support re-solves for barrier QP by @Iroy30 in #1821
- proxy server add VRP request and solution over gRPC by @tmckayus in #1917
- proxy server make the health check dependent on live grpc server by @tmckayus in #1919
- proxy server add pdlp warmstart support to match legacy by @tmckayus in #1918
- add cuopt/cuopt sync endpoint to the proxy server for backward compatability by @tmckayus in #1933
- Expose distributed (multi-GPU) PDLP settings in the Java API by @ramakrishnap-nv in #1961
- Implement Curtis Reid Scaling by @rg20 in #1934
- proxy server implement incumbent_set_solutions by @tmckayus in #1971
- Fix logging bug when asking for more GPUs than available by @Bubullzz in #1935
- change CI to test proxy+grpc instead of legacy http by @tmckayus in #1993
- grpc support a map<string, string> for parameters in the server by @tmckayus in #2010
- Add C API support for multiGPU PDLP by @Bubullzz in #1958
- grpc modify the client to use the new parameter map<string, string> by @tmckayus in #2022
- Distributed curtis reid by @Bubullzz in #2004
- grpc add a gpu health check before each job or after idle by @tmckayus in #2031
- standardize interface and remote solves on solver_settings_t by @tmckayus in #2034
- grpc add standard grpc health problems and fix up helm chart by @tmckayus in #2047
- grpc for the bundled client with new server handle only new parameter map by @tmckayus in #2057
- proxy server add legacy openapi spec endpoint for parity by @tmckayus in #2077
- Fix multi-GPU PDLP dispatch in the gRPC server worker by @ramakrishnap-nv in #1962
- Implement column reduction for PDLP for large problems by @rg20 in #2067
🛠️ Improvements
- ci: sync skill-card.md versions in update-version flow by @ramakrishnap-nv in #1669
- fix: add statuses: read permission to request-nvskills-ci workflow by @ramakrishnap-nv in #1681
- docs: fix Vale heading case errors in gRPC async client docs by @ramakrishnap-nv in #1682
- Symbol visibility controls and exports (remove-internal approach) by @ramakrishnap-nv in #1625
- ensure nightly builds always produce new packages by @jameslamb in #1661
- ci: update NVSkills CI request template and add require-nvskills-status workflow by @ramakrishnap-nv in #1690
- chore: trigger NVSkills CI for cuopt-multi-objective-exploration by @ramakrishnap-nv in #1673
- chore: trigger NVSkills CI for cuopt-numerical-optimization-formulation by @ramakrishnap-nv in #1675
- chore: trigger NVSkills CI for cuopt-numerical-optimization-api by @ramakrishnap-nv in #1674
- Add iterative refinement to the GPU ADAT solve path by @rg20 in #1680
- Update to rapids-logger 0.3 by @bdice in #1659
- ci: make pr-test-summary and NVSkills CI checks non-blocking by @ramakrishnap-nv in #1696
- chore: trigger NVSkills CI for cuopt-routing-api-python by @ramakrishnap-nv in #1676
- chore: trigger NVSkills CI for cuopt-user-rules by @ramakrishnap-nv in #1679
- Add a hyperparameter that controls bounding of free variables by @yuwenchen95 in #1713
- Print total setup time by @yuwenchen95 in #1714
- make 'vale' check optional locally by @jameslamb in #1708
- fix: exec the binary from console-script wrappers instead of spawning it by @ramakrishnap-nv in #1723
- Update cpp/benchmarks codeowners to cuopt-solver-codeowners by @ramakrishnap-nv in #1742
- Release pslp presolve memory by @hlinsen in #1735
- wheels: avoid vendoring libnvJitLink by @jameslamb in #1741
- Build cuopt as an abi3 wheel using the CPython Limited API by @ramakrishnap-nv in #1731
- Routing over gRPC: VRP server + compiled C++/Cython client by @ramakrishnap-nv in #1597
- test: isolate library wheel smoke test by @bdice in #1624
- Build conda python packages independently of the Python version by @ramakrishnap-nv in #1744
- Mod-2 cut separator for zero-half cuts by @akifcorduk in #1726
- Revert presolve tolerance by @akifcorduk in #1757
- Block Bounded Value Elimination presolving pass for binary problems by @aliceb-nv in #1683
- Add a binary 2opt move fed from the probing cache into CPUFJ by @aliceb-nv in #1738
- Reuse existing cuOptGetProblemIntAttribute to simplify code in c API by @yuwenchen95 in #1769
- ci: stop nightly builds for release/26.08 by @ramakrishnap-nv in #1777
- fix: give each solver its own seed instead of a process-wide counter by @ramakrishnap-nv in #1717
- Root heuristics by @nguidotti in #1700
- RENS by @nguidotti in #1719
- chore: trigger NVSkills CI for cuopt-install by @ramakrishnap-nv in #1672
- Add Kitmaker Portal wheel publishing via Charon Ferry by @ramakrishnap-nv in #1763
- ci: report step timeouts explicitly, and skip the test that was hitting them by @ramakrishnap-nv in #1773
- Add a dual aggregation presolver for binary variables with a single lock by @aliceb-nv in #901
- B&B Halt by @nguidotti in #1760
- Resolve NVSkills Tier 1 security findings in cuopt-server-api-python by @ramakrishnap-nv in #1677
- Add parameters for tuning barrier primal and dual regularization by @yuwenchen95 in #1807
- workaround for signal during grpc test framework teardown by @tmckayus in #1691
- Make MIP root relaxation honor LP method by @hlinsen in #1829
- Python api performance improvement by @Iroy30 in #1615
- Add more strategies of init point computation in barrier by @yuwenchen95 in #1577
- Remove unused cusolver/curand deps from libcuopt by @ramakrishnap-nv in #1830
- Reduce GPU/host synchronization overhead in barrier termination check by @yuwenchen95 in #1808
- refactor(logger): give each component library its own logger by @ramakrishnap-nv in #1778
- Fix vendored PSLP writing a stray infeasible-message printf to native stdout by @ramakrishnap-nv in #1836
- refactor: split host-only members out of CUDA translation units by @ramakrishnap-nv in #1801
- Exhaustive coefficient reduction for binary rows by @aliceb-nv in #1686
- Heuristic for arc-flow formulations by @aliceb-nv in #1833
- RoutingClient: match Client's (host, port, tls=...) signature by @ramakrishnap-nv in #1840
- Tune Maven's own retry/concurrency to reduce Maven Central rate-limiting by @ramakrishnap-nv in #1835
- feat(c-api): add cuOptSetLogCallback by @ramakrishnap-nv in #1636
- Diving on cut passes by @nguidotti in #1812
- Replace process-wide seed_generator with per-worker RNGs in MIP heuristics by @ramakrishnap-nv in #1809
- Replaced cusparse wrappers with simple unique_ptrs and more RAII by @Bubullzz in #1342
- Set Papilo back to the main branch by @nguidotti in #1694
- Adopt CUDA stream compatibility accessors by @bdice in #1858
- Bump cuopt-java compile target from Java 11 to Java 17 by @ramakrishnap-nv in #1865
- add a smoke test to ensure server images start correctly by @tmckayus in #1646
- refactor: keep the GPU warm-start path out of host-only translation units by @ramakrishnap-nv in #1803
- update variable type by @Iroy30 in #1783
- build: add the CUDA-free cuopt_client library by @ramakrishnap-nv in #1804
- Improve duplicate cut detection by @hlinsen in #1764
- refactor: build the routing gRPC arm into cuopt_client by @ramakrishnap-nv in #1884
- Improvement for qcqp canonicalization and symmetric check by @yuwenchen95 in #1864
- Presolve: remove empty columns with a diagonal quadratic term by @rg20 in #1885
- simplify test for incumbent solution arrival during wait by @tmckayus in #1898
- [CPUFJ PR 1] Improve time-to-first-incumbent, unify solution callback publication, scaffolding changes by @aliceb-nv in #1880
- chore(skills): trigger benchmark regeneration for cuopt-server-api-python by @ramakrishnap-nv in #1895
- Don't abort the process when cudssSetThreadingLayer fails by @ramakrishnap-nv in #1897
- [CPUFJ PR2] Add a fast-path to the CPUFJ engine for binary problems with integer activities by @aliceb-nv in #1881
- fix(test): stop DeleteQueuedJobPreventsRun/DeleteRunningJobCancelsWorker from inheriting worker respawn debt by @ramakrishnap-nv in #1877
- add a proxy server CPU path for routing conversion to DataModel by @tmckayus in #1910
- Speedup barrier second-order cone conversion in general path by @yuwenchen95 in #1914
- test: skip incumbent-callback tests until #1909 lands by @ramakrishnap-nv in #1921
- Fix compilation with Clang / LLVM by @vitor1001 in #1843
- refactor(routing): standardize cost terminology by @Juan-Francisco-Robles in #1299
- Describe solver settings and defaults in the gRPC codegen field registry by @ramakrishnap-nv in #1701
- build(cython): link each extension module against the component it uses by @ramakrishnap-nv in #1920
- Update Doxygen to 1.18.0 by @vuule in #1900
- Give cuDSS a threading layer built against cuOpt's own libgomp (wheels) by @ramakrishnap-nv in #1905
- Use new
verify-dependencieshook from pre-commit-hooks by @KyleFromNVIDIA in #1915 - Handle PSLP false-infeasible on badly-scaled LPs by @rg20 in #1922
- Clarify factorization issue causes residual error by @yuwenchen95 in #1866
- build(conda): split libcuopt into per-component packages by @ramakrishnap-nv in #1928
- cuopt_mcp: add an MCP server for LP/MILP solving over gRPC by @ramakrishnap-nv in #1916
- Explore self-contained Java classifier JARs with a statically linked libcuopt by @ramakrishnap-nv in #1818
- Enable all NVCC warnings as errors by @mlubin in #1948
- build(cmake): stop compiling routing/mathopt sources twice by @ramakrishnap-nv in #1960
- Scale the variables with variable bounds by @rg20 in #1652
- fix(client): hold the GPU variant alternatives behind an opaque pointer by @ramakrishnap-nv in #1940
- Fusing Halpern Kernels for performances by @Bubullzz in #1904
- Build the Java bindings dynamically against the pip-installed libcuopt in the official Docker images by @ramakrishnap-nv in #1959
- codeowners: route gRPC paths under cpp/ to infra team by @ramakrishnap-nv in #1975
- build(wheel): split libcuopt into per-component wheels by @ramakrishnap-nv in #1929
- Update PSLP to v0.0.12 by @hlinsen in #1943
- Add NNZ cutoff for concurrent mode by @hlinsen in #1932
- [CPUFJ PR3] Modular CPUFJ engine, simple portfolio by @aliceb-nv in #1950
- cuopt-developer skill: sanitize internal context before it becomes public by @ramakrishnap-nv in #1988
- Primal and dual simplex improvements by @chris-maes in #1889
- Eliminate zero-cost free variables by equality substitution in QP/SOCP barrier presolve by @rg20 in #1912
- Fix O(n^2) loop in the flow cover cut generation by @aliceb-nv in #1842
- build(wheel): drop the CUDA suffix and dimension from libcuopt-client by @ramakrishnap-nv in #1967
- fix(barrier): resolve cuDSS mtlayer path at runtime by @ramakrishnap-nv in #1982
- [CPUFJ PR4] Structure-aware starts and repairs for CPUFJ by @aliceb-nv in #1951
- Rename CUOPT_DISTRIBUTED_PDLP_PARTITIONER to CUOPT_MULTIGPU_PDLP_PARTITIONER; remove CUOPT_USE_DISTRIBUTED_PDLP by @ramakrishnap-nv in #1984
- Include objective gap in QP termination criteria by @rg20 in #1733
- [Java] Remove setMethod/setPDLPSolverMode/setNumGpus/setMpdlpPartitioner wrappers by @ramakrishnap-nv in #2000
- [CPUFJ PR5] Portfolio diversification, more starts, move batching by @aliceb-nv in #1953
- Move Ruiz scaling and building KKT system to the GPU by @yuwenchen95 in #1913
- Mutation by @nguidotti in #2001
- grpc integration test tighten up warmup job handling by @tmckayus in #2012
- Indicator Strengthening by @nguidotti in #1983
- fixing mPDLP logs, adding header back by @Bubullzz in #2017
- perf(wheel): skip gRPC/abseil build for mathopt and routing wheels by @ramakrishnap-nv in #2035
- Replace CUB umbrella header with specific includes by @bdice in #2033
- Remove remaining rmm::cuda_stream_view usage by @bdice in #2030
- ci: gate wheel publish on the whole libcuopt/cuopt family building by @ramakrishnap-nv in #2051
- perf(wheel): skip mathopt/routing/grpc_server when building libcuopt-client by @ramakrishnap-nv in #2043
- Add update apis - RHS by @Iroy30 in #1941
- ci: remove issue auto-labeling, round-robin assignment, and inactivity reminder by @ramakrishnap-nv in #2053
- chore(release): add manual script to publish placeholder release images by @ramakrishnap-nv in #2038
- fix(conda): declare libraft-headers, and stop routing inheriting nccl by @ramakrishnap-nv in #2060
- ci: use proxy cache for pypi.anaconda.org, remove pip indices from dependencies.yaml by @jameslamb in #2064
- fix(conda): drop nccl and libnvjitlink from the client's run exports by @ramakrishnap-nv in #2070
- Flag to expose symbols by @nguidotti in #2074
- ci: bump C++ gtest step timeout to 90 minutes by @ramakrishnap-nv in #2087
- grpc follow up to #2063 by @tmckayus in #2071
- Remove Papilo unconditional NDEBUG definition by @aliceb-nv in #2078
- Wire cuOpt Java bindings into the shared maven-publish workflow by @ramakrishnap-nv in #1970
- Reduce PDLP memory use and avoid warm-start copies by @rg20 in #2065
- fix(ci): report crashed gtest binaries in pr-test-summary by @ramakrishnap-nv in #2086
- Update PSLP to v0.1.1 by @rg20 in #2092
- Fix bug #2042 absence of logs on mPDLP error with C API and not using rhs when present by @Bubullzz in #2091
- Propagate primal simplex to APIs. Ensure consistency with dual simplex. by @chris-maes in #2096
- [CPUFJ PR6] CDCL heuristic start for CPUFJ by @aliceb-nv in #2049
- Persistent LNS ruin-repair search by @akifcorduk in #2058
- update code base to replace occurences of "distributed PDLP" with multi-GPU PDLP by @Bubullzz in #2076
- Reduce barrier refinement allocations and launch overhead by @rg20 in #2069
- Update APIs - SOCP support by @Iroy30 in #1979
- Exploit degeneracy in MIP by @chris-maes in #1685
- Fix nightly build: barrier_cache_t template argument in SOCP barrier test by @ramakrishnap-nv in #2110
- Map LP initial solutions through PSLP presolve for PDLP by @rg20 in #2024
- Fix excessive setups and low diversity in local search CPUFJ calls by @aliceb-nv in #2105
- Skip duplicate banner print in sequential solve by @yuwenchen95 in #2109
- add a cli toggle for PDLP hyper parameter project_initial_primal by @Bubullzz in #2089
- ci: use shared NVSkills team-request workflow to support fork PRs by @ramakrishnap-nv in #2100
- CPUFJ: no per-move objective rebuild while infeasible and add halt checks in the epigraph projection loop by @hlinsen in #2117
- Preserve recoverable barrier iterates with converged objective gaps by @rg20 in #2103
- add a C API test to ensure mPDLP works with cuOptCreateProblem from RHS by @Bubullzz in #2108
- Limit column reduction log to first activation by @chris-maes in #2125
- ci(thirdparty-cvxpy): test the cvxpy release when no C++ compiler is available by @nicoloangileri in #2101
New Contributors
- @nvidiacbrissette made their first contribution in #1524
- @vgong-nv made their first contribution in #1888
- @Juan-Francisco-Robles made their first contribution in #1299
- @ZedingZhang made their first contribution in #1925
- @vuule made their first contribution in #1900
- @neuriv made their first contribution in #1947
- @derluke made their first contribution in #1775
- @reginaldalfret made their first contribution in #2068
- @nicoloangileri made their first contribution in #2101
Full Changelog: v26.10.00a...v26.10.00