Skip to content

Commit b859963

Browse files
committed
Merge branch 'main' of github.com:NVIDIA/cuopt into fix-device-transform
2 parents 9293aed + 56c43d2 commit b859963

File tree

8 files changed

+109
-39
lines changed

8 files changed

+109
-39
lines changed

.github/workflows/build.yaml

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ concurrency:
4444
jobs:
4545
cpp-build:
4646
secrets: inherit
47-
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@cuda-13.1.0
47+
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@main
4848
with:
4949
build_type: ${{ inputs.build_type || 'branch' }}
5050
branch: ${{ inputs.branch }}
@@ -54,7 +54,7 @@ jobs:
5454
python-build:
5555
needs: [cpp-build]
5656
secrets: inherit
57-
uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@cuda-13.1.0
57+
uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@main
5858
with:
5959
build_type: ${{ inputs.build_type || 'branch' }}
6060
branch: ${{ inputs.branch }}
@@ -64,15 +64,15 @@ jobs:
6464
upload-conda:
6565
needs: [cpp-build, python-build]
6666
secrets: inherit
67-
uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@cuda-13.1.0
67+
uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@main
6868
with:
6969
build_type: ${{ inputs.build_type || 'branch' }}
7070
branch: ${{ inputs.branch }}
7171
date: ${{ inputs.date }}
7272
sha: ${{ inputs.sha }}
7373
wheel-build-cuopt-mps-parser:
7474
secrets: inherit
75-
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-13.1.0
75+
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
7676
with:
7777
build_type: ${{ inputs.build_type || 'branch' }}
7878
branch: ${{ inputs.branch }}
@@ -87,7 +87,7 @@ jobs:
8787
wheel-publish-cuopt-mps-parser:
8888
needs: wheel-build-cuopt-mps-parser
8989
secrets: inherit
90-
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuda-13.1.0
90+
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@main
9191
with:
9292
build_type: ${{ inputs.build_type || 'branch' }}
9393
branch: ${{ inputs.branch }}
@@ -98,7 +98,7 @@ jobs:
9898
wheel-build-libcuopt:
9999
needs: wheel-build-cuopt-mps-parser
100100
secrets: inherit
101-
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-13.1.0
101+
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
102102
with:
103103
build_type: ${{ inputs.build_type || 'branch' }}
104104
branch: ${{ inputs.branch }}
@@ -111,7 +111,7 @@ jobs:
111111
wheel-publish-libcuopt:
112112
needs: wheel-build-libcuopt
113113
secrets: inherit
114-
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuda-13.1.0
114+
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@main
115115
with:
116116
build_type: ${{ inputs.build_type || 'branch' }}
117117
branch: ${{ inputs.branch }}
@@ -122,7 +122,7 @@ jobs:
122122
wheel-build-cuopt:
123123
needs: [wheel-build-cuopt-mps-parser, wheel-build-libcuopt]
124124
secrets: inherit
125-
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-13.1.0
125+
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
126126
with:
127127
build_type: ${{ inputs.build_type || 'branch' }}
128128
branch: ${{ inputs.branch }}
@@ -134,7 +134,7 @@ jobs:
134134
wheel-publish-cuopt:
135135
needs: wheel-build-cuopt
136136
secrets: inherit
137-
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuda-13.1.0
137+
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@main
138138
with:
139139
build_type: ${{ inputs.build_type || 'branch' }}
140140
branch: ${{ inputs.branch }}
@@ -144,7 +144,7 @@ jobs:
144144
package-type: python
145145
wheel-build-cuopt-server:
146146
secrets: inherit
147-
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-13.1.0
147+
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
148148
with:
149149
build_type: ${{ inputs.build_type || 'branch' }}
150150
branch: ${{ inputs.branch }}
@@ -159,7 +159,7 @@ jobs:
159159
wheel-publish-cuopt-server:
160160
needs: wheel-build-cuopt-server
161161
secrets: inherit
162-
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuda-13.1.0
162+
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@main
163163
with:
164164
build_type: ${{ inputs.build_type || 'branch' }}
165165
branch: ${{ inputs.branch }}
@@ -170,7 +170,7 @@ jobs:
170170
docs-build:
171171
needs: [python-build]
172172
secrets: inherit
173-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@cuda-13.1.0
173+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
174174
with:
175175
build_type: ${{ inputs.build_type || 'branch' }}
176176
node_type: "gpu-l4-latest-1"
@@ -184,7 +184,7 @@ jobs:
184184
script: "ci/build_docs.sh"
185185
wheel-build-cuopt-sh-client:
186186
secrets: inherit
187-
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-13.1.0
187+
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
188188
with:
189189
build_type: ${{ inputs.build_type || 'branch' }}
190190
branch: ${{ inputs.branch }}
@@ -200,7 +200,7 @@ jobs:
200200
wheel-publish-cuopt-sh-client:
201201
needs: wheel-build-cuopt-sh-client
202202
secrets: inherit
203-
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuda-13.1.0
203+
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@main
204204
with:
205205
build_type: ${{ inputs.build_type || 'branch' }}
206206
branch: ${{ inputs.branch }}

.github/workflows/pr.yaml

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434
- wheel-build-cuopt-sh-client
3535
- test-self-hosted-server
3636
secrets: inherit
37-
uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@cuda-13.1.0
37+
uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@main
3838
check-lean-ci:
3939
runs-on: ubuntu-latest
4040
outputs:
@@ -108,7 +108,7 @@ jobs:
108108
109109
changed-files:
110110
secrets: inherit
111-
uses: rapidsai/shared-workflows/.github/workflows/changed-files.yaml@cuda-13.1.0
111+
uses: rapidsai/shared-workflows/.github/workflows/changed-files.yaml@main
112112
with:
113113
files_yaml: |
114114
test_cpp:
@@ -173,20 +173,20 @@ jobs:
173173
- '!python/nvcf_client/**'
174174
checks:
175175
secrets: inherit
176-
uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@cuda-13.1.0
176+
uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@main
177177
with:
178178
enable_check_generated_files: false
179179
conda-cpp-build:
180180
needs: [checks, compute-matrix-filters]
181181
secrets: inherit
182-
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@cuda-13.1.0
182+
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@main
183183
with:
184184
build_type: pull-request
185185
script: ci/build_cpp.sh
186186
matrix_filter: ${{ needs.compute-matrix-filters.outputs.conda_lean_filter }}
187187
conda-cpp-tests:
188188
needs: [conda-cpp-build, changed-files, compute-matrix-filters]
189-
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@cuda-13.1.0
189+
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@main
190190
#if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp
191191
with:
192192
build_type: pull-request
@@ -202,14 +202,14 @@ jobs:
202202
conda-python-build:
203203
needs: [conda-cpp-build, compute-matrix-filters]
204204
secrets: inherit
205-
uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@cuda-13.1.0
205+
uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@main
206206
with:
207207
build_type: pull-request
208208
script: ci/build_python.sh
209209
matrix_filter: ${{ needs.compute-matrix-filters.outputs.conda_test_filter }}
210210
conda-python-tests:
211211
needs: [conda-python-build, changed-files, compute-matrix-filters]
212-
uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@cuda-13.1.0
212+
uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@main
213213
#if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python
214214
with:
215215
run_codecov: false
@@ -226,7 +226,7 @@ jobs:
226226
docs-build:
227227
needs: conda-python-build
228228
secrets: inherit
229-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@cuda-13.1.0
229+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
230230
with:
231231
build_type: pull-request
232232
node_type: "gpu-l4-latest-1"
@@ -238,7 +238,7 @@ jobs:
238238
wheel-build-cuopt-mps-parser:
239239
needs: compute-matrix-filters
240240
secrets: inherit
241-
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-13.1.0
241+
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
242242
with:
243243
build_type: pull-request
244244
script: ci/build_wheel_cuopt_mps_parser.sh
@@ -250,7 +250,7 @@ jobs:
250250
wheel-build-libcuopt:
251251
needs: [wheel-build-cuopt-mps-parser, compute-matrix-filters]
252252
secrets: inherit
253-
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-13.1.0
253+
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
254254
with:
255255
# build for every combination of arch and CUDA version, but only for the latest Python
256256
matrix_filter: ${{ needs.compute-matrix-filters.outputs.libcuopt_filter }}
@@ -261,7 +261,7 @@ jobs:
261261
wheel-build-cuopt:
262262
needs: [wheel-build-cuopt-mps-parser, wheel-build-libcuopt, compute-matrix-filters]
263263
secrets: inherit
264-
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-13.1.0
264+
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
265265
with:
266266
build_type: pull-request
267267
script: ci/build_wheel_cuopt.sh
@@ -270,7 +270,7 @@ jobs:
270270
matrix_filter: ${{ needs.compute-matrix-filters.outputs.wheel_lean_filter }}
271271
wheel-tests-cuopt:
272272
needs: [wheel-build-cuopt, wheel-build-cuopt-mps-parser, wheel-build-cuopt-sh-client, changed-files, compute-matrix-filters]
273-
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-13.1.0
273+
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@main
274274
#if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_cuopt
275275
with:
276276
build_type: pull-request
@@ -286,7 +286,7 @@ jobs:
286286
wheel-build-cuopt-server:
287287
needs: [checks, compute-matrix-filters]
288288
secrets: inherit
289-
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-13.1.0
289+
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
290290
with:
291291
build_type: pull-request
292292
script: ci/build_wheel_cuopt_server.sh
@@ -298,7 +298,7 @@ jobs:
298298
wheel-build-cuopt-sh-client:
299299
needs: compute-matrix-filters
300300
secrets: inherit
301-
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-13.1.0
301+
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
302302
with:
303303
build_type: pull-request
304304
script: ci/build_wheel_cuopt_sh_client.sh
@@ -310,7 +310,7 @@ jobs:
310310
matrix_filter: ${{ needs.compute-matrix-filters.outputs.cuopt_sh_client_filter }}
311311
wheel-tests-cuopt-server:
312312
needs: [wheel-build-cuopt, wheel-build-cuopt-server, changed-files, compute-matrix-filters]
313-
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-13.1.0
313+
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@main
314314
#if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_cuopt_server
315315
with:
316316
build_type: pull-request

.github/workflows/test.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ on:
2727

2828
jobs:
2929
conda-cpp-tests:
30-
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@cuda-13.1.0
30+
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@main
3131
with:
3232
build_type: ${{ inputs.build_type }}
3333
branch: ${{ inputs.branch }}
@@ -42,7 +42,7 @@ jobs:
4242
script-env-secret-3-key: CUOPT_AWS_SECRET_ACCESS_KEY
4343
script-env-secret-3-value: ${{ secrets.CUOPT_AWS_SECRET_ACCESS_KEY }}
4444
conda-python-tests:
45-
uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@cuda-13.1.0
45+
uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@main
4646
with:
4747
run_codecov: false
4848
build_type: ${{ inputs.build_type }}
@@ -58,7 +58,7 @@ jobs:
5858
script-env-secret-3-key: CUOPT_AWS_SECRET_ACCESS_KEY
5959
script-env-secret-3-value: ${{ secrets.CUOPT_AWS_SECRET_ACCESS_KEY }}
6060
wheel-tests-cuopt:
61-
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-13.1.0
61+
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@main
6262
with:
6363
build_type: ${{ inputs.build_type }}
6464
branch: ${{ inputs.branch }}
@@ -73,7 +73,7 @@ jobs:
7373
script-env-secret-3-key: CUOPT_AWS_SECRET_ACCESS_KEY
7474
script-env-secret-3-value: ${{ secrets.CUOPT_AWS_SECRET_ACCESS_KEY }}
7575
wheel-tests-cuopt-server:
76-
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-13.1.0
76+
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@main
7777
with:
7878
build_type: ${{ inputs.build_type }}
7979
branch: ${{ inputs.branch }}
@@ -89,7 +89,7 @@ jobs:
8989
script-env-secret-3-value: ${{ secrets.CUOPT_AWS_SECRET_ACCESS_KEY }}
9090
conda-notebook-tests:
9191
secrets: inherit
92-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@cuda-13.1.0
92+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
9393
with:
9494
build_type: ${{ inputs.build_type }}
9595
branch: ${{ inputs.branch }}

.github/workflows/trigger-breaking-change-alert.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
trigger-notifier:
1616
if: contains(github.event.pull_request.labels.*.name, 'breaking')
1717
secrets: inherit
18-
uses: rapidsai/shared-workflows/.github/workflows/breaking-change-alert.yaml@cuda-13.1.0
18+
uses: rapidsai/shared-workflows/.github/workflows/breaking-change-alert.yaml@main
1919
with:
2020
sender_login: ${{ github.event.sender.login }}
2121
sender_avatar: ${{ github.event.sender.avatar_url }}

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212

1313

14-
NVIDIA® cuOpt™ is a GPU-accelerated optimization engine that excels in mixed integer linear programming (MILP), linear programming (LP), and vehicle routing problems (VRP). It enables near real-time solutions for large-scale challenges with millions of variables and constraints, offering
14+
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
1515
easy integration into existing solvers and seamless deployment across hybrid and multi-cloud environments.
1616

1717
The core engine is written in C++ and wrapped with a C API, Python API and Server API.
@@ -25,12 +25,13 @@ cuOpt supports the following APIs:
2525
- C API support
2626
- Linear Programming (LP)
2727
- Mixed Integer Linear Programming (MILP)
28+
- Quadratic Programming (QP)
2829
- C++ API support
2930
- cuOpt is written in C++ and includes a native C++ API. However, we do not provide documentation for the C++ API at this time. We anticipate that the C++ API will change significantly in the future. Use it at your own risk.
3031
- Python support
3132
- Routing (TSP, VRP, and PDP)
32-
- Linear Programming (LP) and Mixed Integer Linear Programming (MILP)
33-
- cuOpt includes a Python API that is used as the backend of the cuOpt server. However, we do not provide documentation for the Python API at this time. We suggest using cuOpt server to access cuOpt via Python. We anticipate that the Python API will change significantly in the future. Use it at your own risk.
33+
- Linear Programming (LP), Mixed Integer Linear Programming (MILP) and Quadratic Programming (QP)
34+
- Algebraic modeling Python API allows users to easily build constraints and objectives
3435
- Server support
3536
- Linear Programming (LP)
3637
- Mixed Integer Linear Programming (MILP)

cpp/src/dual_simplex/barrier.cu

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,7 @@ class iteration_data_t {
307307
settings.log.printf("Density estimator time : %.2fs\n", column_density_time);
308308
if ((settings.augmented != 0) &&
309309
(n_dense_columns > 50 || n_dense_rows > 10 ||
310+
lp.A.m == 0 /* handle case with no constraints */ ||
310311
(max_row_nz > 5000 && estimated_nz_AAT > 1e10) || settings.augmented == 1)) {
311312
use_augmented = true;
312313
n_dense_columns = 0;
@@ -317,6 +318,7 @@ class iteration_data_t {
317318
n_dense_columns = 0;
318319
use_augmented = !Q_diagonal;
319320
}
321+
320322
if (use_augmented) {
321323
settings.log.printf("Linear system : augmented\n");
322324
} else {

cpp/tests/qp/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
# cmake-format: off
2-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
# SPDX-License-Identifier: Apache-2.0
44
# cmake-format: on
55

66
ConfigureTest(QP_UNIT_TEST
77
${CMAKE_CURRENT_SOURCE_DIR}/unit_tests/two_variable_test.cu
8+
${CMAKE_CURRENT_SOURCE_DIR}/unit_tests/no_constraints.cu
89
)

0 commit comments

Comments
 (0)