gRPC Remote Execution#

NVIDIA cuOpt can run LP, MIP, and QP solves on a remote GPU host through cuopt_grpc_server. There are two ways to reach that server:

Remote execution (zero code change)

Set CUOPT_REMOTE_HOST and CUOPT_REMOTE_PORT on the client machine. The Python solver APIs, the C API cuOptSolve, and cuopt_cli forward the solve automatically. No client code changes are required. See Quick Start.

gRPC clients (explicit client)

Your program opens a gRPC connection and manages jobs itself. Use the Python async gRPC client (cuopt.grpc.linear_programming.Client) for job management, or speak CuOptRemoteService directly from a custom client (gRPC API (Reference)).

In this section, remote execution always means the zero-code-change path above. When talking about programs that construct a client and call gRPC themselves, we say gRPC client.

Note

Problem types: LP, MIP, and QP are supported today. Routing (VRP, TSP, PDP, and related APIs) over gRPC is not available yet; support is planned for an upcoming release. For remote routing today, use the HTTP/JSON REST self-hosted server.

This is not the HTTP/JSON REST self-hosted server (FastAPI). REST is for arbitrary HTTP clients; gRPC serves remote execution (client integrated into the solver APIs) and explicit gRPC clients.

When to choose which path#

  • Remote execution — drop-in remote solves with no code changes; same scripts and APIs as a local solve.

  • Python async gRPC client — explicit job control: submit now, wait or poll later, cancel, stream solver logs, stream MIP incumbents.

  • Custom ``CuOptRemoteService`` client — non-Python (or fully custom) integrations that speak the protos directly. See gRPC API (Reference).

Start with Quick Start (install, server, and a minimal LP). Use Python Async gRPC Client for the Python gRPC client; Advanced Configuration for TLS, Docker, environment variables, and troubleshooting; Examples for additional patterns.

See System Requirements for GPU, CUDA, and OS requirements.