NVIDIA cuOpt

repository·main·Indexed 21 days ago

https://github.com/nvidia/cuopt

A high-performance, GPU-accelerated optimization engine for solving large-scale linear, quadratic, and vehicle routing problems in near real-time. The library includes a C++ implementation, a self-hosted Python client (cuopt-sh-client), and a cuOpt Server deployable via Helm on Kubernetes.

Tokens
124.5K
Snippets
329
Records
577
Agent score
73%

What's inside cuOpt

  1. Overview of the cuOpt Python API

    main

    The NVIDIA cuOpt Python API provides GPU-accelerated interfaces for three primary optimization domains:

    1. Routing Optimization: Solving complex vehicle routing and logistics problems.
    2. Convex Optimization: Solving Linear Programming (LP), Quadratic Programming (QP), Quadratically Constrained Quadratic Programming (QCQP), and Second-Order Cone Programming (SOCP) problems.
    3. Mixed-Integer Programming (MIP): Solving optimization problems involving both continuous and integer variables.

    Users can access these capabilities through the cuopt Python package.

  2. Overview of cuOpt Microserver

    main
    cuOpt Microserver is a GPU-accelerated combinatorial optimization service. It provides a microserver architecture designed to handle complex optimization problems using GPU acceleration, allowing users to interact with optimization solvers via a service-based model.
  3. Overview of NVIDIA cuOpt interfaces

    main

    NVIDIA cuOpt provides GPU-accelerated combinatorial optimization through several distinct interfaces depending on your deployment and programming needs:

    • C (libcuopt): Low-level C API for high-performance integration.
    • Python (cuopt): High-level Python API for rapid development and data science workflows.
    • gRPC Remote Execution: Interface for executing optimization tasks remotely via gRPC.
    • Server (cuopt-server): A microserver implementation for hosting cuOpt services.
    • Command Line Interface (cuopt-cli): A CLI for interacting with cuOpt services.
    • Third-Party Modeling Languages: Support for integrating with external modeling languages.
  4. Overview of NVIDIA cuOpt

    main

    NVIDIA® cuOpt™ is a GPU-accelerated optimization engine designed for large-scale problems including:

    • Linear Programming (LP)
    • Quadratic Programming (QP)
    • Vehicle Routing Problems (VRP), including TSP and PDP
    • Mixed Integer Linear Programming (MILP) (beta)
    • Quadratically Constrained Quadratic Programming (QCQP) (beta)
    • Second-Order Cone Programming (SOCP) (beta)

    It is optimized for near real-time solutions with millions of variables and constraints. The core engine is written in C++ and provides C, C++, Python, and Server APIs.

  5. Overview of the cuOpt C API

    main

    NVIDIA cuOpt provides a C API for GPU-accelerated optimization. This interface allows developers to solve complex optimization problems efficiently using GPU hardware. The C API is divided into two primary functional areas:

    1. Convex Optimization: Supports Linear Programming (LP), Quadratic Programming (QP), Quadratically Constrained Quadratic Programming (QCQP), and Second-Order Cone Programming (SOCP).
    2. Mixed-Integer Programming (MIP): Supports solving problems with both continuous and integer variables.
  6. Overview of cuOpt GPU Combinatorial Optimization

    main
    cuOpt is a GPU-accelerated library designed for solving complex combinatorial optimization problems. It leverages GPU acceleration to provide high-performance solutions for large-scale optimization tasks.
  7. Overview of the NVIDIA cuOpt self-hosted server

    main

    The NVIDIA cuOpt self-hosted server is a REST (HTTP/JSON) service designed for integrations that communicate via HTTP. It provides a way to offload combinatorial optimization tasks to a GPU-accelerated service.

    Important Distinction:

    • REST API: Uses HTTP/JSON for communication. Use the Server API and Client API documentation for this service.
    • gRPC API: Uses a different protocol for remote execution (supported via Python, C API, cuopt_cli, or custom clients connecting to cuopt_grpc_server). The gRPC interface is distinct from the HTTP REST surface.
  8. Overview of NVIDIA cuOpt capabilities

    main

    NVIDIA® cuOpt™ is a GPU-accelerated optimization library designed to solve large-scale problems with millions of variables and constraints. It is built on a C++ core engine with various API wrappers (Python, C, gRPC, etc.).

    Supported Problem Types:

    • Routing: Traveling Salesperson Problem (TSP), Vehicle Routing Problem (VRP), and Pickup and Delivery Problems (PDP).
    • Linear Programming (LP): Optimization of linear objective functions subject to linear constraints.
    • Quadratic Programming (QP): Optimization of quadratic objective functions.
    • Mixed Integer Linear Programming (MILP) (Beta): Optimization where some variables are restricted to integer values.
    • Quadratically Constrained Quadratic Programming (QCQP) (Beta)
    • Second-Order Cone Programming (SOCP) (Beta)
  9. Overview of the cuopt_cli

    main

    The cuopt_cli is a command-line interface designed for LP/MILP (Linear Programming / Mixed-Integer Linear Programming) solvers. It allows users to solve optimization problems by providing model files in standard formats.

    Supported Input Formats: The CLI automatically dispatches files to the appropriate parser based on their extension (case-insensitive). Supported extensions include:

    • .lp (supports optional .gz or .bz2 compression)
    • .mps (supports optional .gz or .bz2 compression)
    • .qps (supports optional .gz or .bz2 compression)

    Solver Capabilities: The cuOpt MIP solver is currently in beta. It is optimized for finding high-quality feasible solutions rapidly using GPU-accelerated primal heuristics. Note that proving the optimality of feasible solutions is a feature currently under active development.

  10. Choose between cuOpt Self-Hosted Service and Python SDK

    main

    The cuOpt Routing solver is available in two deployment modes:

    • Self-Hosted Service: Deploy cuOpt in your own infrastructure for full control and integration into existing systems. See cuopt-server/quick-start for details.
    • Python SDK: A direct Python package for seamless integration into Python applications and workflows. See cuopt-python/quick-start for details.

    Both modes provide identical routing optimization capabilities.

  11. Access cuOpt convex optimization solvers

    main

    cuOpt provides GPU-accelerated solvers for Linear Programming (LP), Quadratic Programming (QP), Quadratically Constrained Quadratic Programming (QCQP), and Second-Order Cone Programming (SOCP). You can access these solvers through several interfaces:

    • Third-Party Modeling Languages: Use existing workflows in languages like AMPL, CVXPY, GAMS, JuMP, PuLP, or Pyomo.
      • Note: QCQP/SOCP support is currently in beta and is only available via CVXPY among the listed modeling languages.
    • C API: Direct low-level access for integration into C-compatible applications.
    • Python SDK: A high-level, intuitive API for Python applications.
    • Self-Hosted Service: Deploy solvers as a service within your own infrastructure.