-
Notifications
You must be signed in to change notification settings - Fork 94
WIP: remote execution #587
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: release/25.12
Are you sure you want to change the base?
Conversation
<!-- Thank you for contributing to cuOpt :) Here are some guidelines to help the review process go smoothly. Many thanks in advance for your cooperation! Note: The pull request title will be included in the CHANGELOG. --> ## Description Update introduction to use engine instead of library ## Checklist - [x] I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/cuopt/blob/HEAD/CONTRIBUTING.md). - Testing - [ ] New or existing tests cover these changes - [ ] Added tests - [ ] Created an issue to follow-up - [x] NA - Documentation - [ ] The documentation is up to date with these changes - [x] Added new documentation - [ ] NA
Forward-merge branch-25.10 into branch-25.12
Hot fix with the following commits: - NVIDIA#541 - NVIDIA#544 - NVIDIA#550
Forward-merge branch-25.10 into branch-25.12
moved solution and optimization problems to host memory
Move to and from GPU is now local to solve_lp and solve_mip in local solving cases
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the ✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Note: remote solve is not working for the moment, switching to protocol buffers ....The remote server will be created by build.sh. It is written in C++ and is called "cuopt_remote_server". You can run it like this: $ cuopt_remote_server 9999 On the client side, just set the env vars and then solve normally: $ CUOPT_REMOT_HOST=localhost CUOPT_REMOTE_PORT=9999 cuopt_cli mydata.mps |
rgsl888prabhu
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there an approach on how to make a client backward compatible so new client will not break with any old server and any other such scenarios ?
| find_package(CUDSS REQUIRED) | ||
|
|
||
| # Find Protocol Buffers for remote solve support | ||
| find_package(Protobuf REQUIRED) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We may need to add protobuf requirement to both cli and library in dependecies.yaml, conda/receipe/libcuopt
| @@ -0,0 +1,457 @@ | |||
| /* | |||
| * SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| * SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights | |
| * SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights |
| @@ -0,0 +1,457 @@ | |||
| /* | |||
| * SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights | |||
| * reserved. SPDX-License-Identifier: Apache-2.0 | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You may want to refer to this latest PR on adding new shortened licensed header. https://github.com/NVIDIA/cuopt/pull/573/files
CUOPT_REMOTE_USE_SYNC=1 turns on sync calls (async default)
This change provides remote execution from solve_lp and solve_mip, thereby available from all interfaces and transparent to the user.
The remote mode is triggered by setting CUOPT_REMOTE_HOST and CUOPT_REMOTE_PORT env vars currently. Later, API calls will be added that allow the mode to be specified through the API.
The essential change here is to make all problem input and solution output use CPU memory exclusively outside of solve_lp and solve_mip. This alllows efficient serialization and deserialziation to and from the server, and also will allow cuopt to be run on a host without a GPU for remote solves.
Still to do: enhancing the server implementation to provide job queues, job abort, etc.