Skip to content
NVIDIAPublic

Latest commit

 

History

1,353 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

cuOpt - GPU-accelerated Optimization

Build Status Version Documentation Docker Hub Examples Open In Colab NVIDIA Launchable Videos and Tutorials

NVIDIA® cuOpt™ is a GPU-accelerated optimization engine that excels in linear programming (LP), quadratic programming (QP), and vehicle routing problems (VRP), with support for quadratically constrained quadratic programming (QCQP) (beta), second-order cone programming (SOCP) (beta), and mixed integer programming (MIP) (beta). cuOpt enables near real-time solutions for large-scale LPs with millions of variables and constraints and offers easy integration into existing modeling languages with seamless deployment across hybrid and multi-cloud environments.

The cuOpt MIP solver is in beta and under active development. The solver currently excels at finding high-quality feasible solutions quickly with GPU-accelerated primal heuristics. Proving feasible solutions optimal remains under active development.

cuOpt offers easy integration into existing solvers, and seamlessly extends into agent-first optimization workflows through open-source cuOpt agent skills.

The core engine is written in C++ and wrapped with a C API, Python API and Server API.

For the latest version, ensure you are on the main branch.

Latest Documentation

cuOpt Documentation

Supported APIs

cuOpt supports the following APIs:

  • C API support
    • Linear Programming (LP)
    • Quadratic Programming (QP)
    • Quadratically Constrained Quadratic Programming (QCQP) (beta)
    • Second-Order Cone Programming (SOCP) (beta)
    • Mixed Integer Programming (MIP) (beta)
  • C++ API support
    • 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.
  • Python support
    • Routing (TSP, VRP, and PDP)
    • Linear Programming (LP)
    • Quadratic Programming (QP)
    • Quadratically Constrained Quadratic Programming (QCQP) (beta)
    • Second-Order Cone Programming (SOCP) (beta)
    • Mixed Integer Programming (MIP) (beta)
    • Algebraic modeling Python API allows users to easily build constraints and objectives
  • Server support
    • Linear Programming (LP)
    • Routing (TSP, VRP, and PDP)
    • Mixed Integer Programming (MIP) (beta)

This repo is also hosted as a COIN-OR project.

Latest Release Notes:

RELEASE-NOTES.md

Installation

CUDA/GPU requirements

  • CUDA 12.0+ or CUDA 13.0+
  • NVIDIA driver >= 525.60.13 (Linux) and >= 527.41 (Windows)
  • Volta architecture or better (Compute Capability >=7.0)

Python requirements

  • Python >=3.11, <=3.14

OS requirements

  • Only Linux is supported and Windows via WSL2
    • x86_64 (64-bit)
    • aarch64 (64-bit)

Note: WSL2 is tested to run cuOpt, but not for building.

More details on system requirements can be found here

Latest release branch

The sections below cover installing the latest release and nightly builds.

Latest release

Pip

Pip wheels are easy to install and easy to configure. Users with existing workflows who uses pip as base to build their workflows can use pip to install cuOpt.

cuOpt can be installed via pip from the NVIDIA Python Package Index. Be sure to select the appropriate cuOpt package depending on the major version of CUDA available in your environment:

For CUDA 12.x:

pip install \
  --extra-index-url=https://pypi.nvidia.com \
  nvidia-cuda-runtime-cu12==12.9.* \
  cuopt-server-cu12 cuopt-sh-client

For CUDA 13.x:

pip install \
  --extra-index-url=https://pypi.nvidia.com \
  cuopt-server-cu13 cuopt-sh-client

Conda

cuOpt can be installed with conda (via miniforge):

All other dependencies are installed automatically when cuopt-server and cuopt-sh-client are installed.

conda install -c rapidsai -c conda-forge -c nvidia cuopt-server cuopt-sh-client

Container

cuOpt ships two container variants on Docker Hub — an Ubuntu-based image for general use and a Red Hat Universal Base Image 10 (UBI10) image for FIPS 140-3 compliant environments.

Ubuntu image
# For CUDA 12.x
docker pull nvidia/cuopt:latest-cu12

# For CUDA 13.x
docker pull nvidia/cuopt:latest-cu13

The latest tag is the latest stable release. To pin a specific version use <version>-cu12 / <version>-cu13 (e.g. 26.6.0-cu13). See the cuOpt Docker Hub page for the full list.

UBI10 image (FIPS 140-3)

Based on Red Hat Universal Base Image 10 (RHEL 10), which ships OpenSSL 3.5 validated under FIPS 140-3. Use this image in environments with strict FIPS or RHEL compliance requirements. UBI10 images are available for CUDA 13.x only.

docker pull nvidia/cuopt:latest-cu13-ubi10

Nightly

Nightly packages are built from the HEAD of the development branch (26.12) and are not as stable as the latest release.

Pip

# For CUDA 12.x
pip install --pre \
  --extra-index-url=https://pypi.nvidia.com \
  --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple/ \
  nvidia-cuda-runtime-cu12==12.9.* \
  cuopt-server-cu12==26.12.* cuopt-sh-client==26.12.*

# For CUDA 13.x
pip install --pre \
  --extra-index-url=https://pypi.nvidia.com \
  --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple/ \
  cuopt-server-cu13==26.12.* cuopt-sh-client==26.12.*

Conda

conda install -c rapidsai-nightly -c conda-forge -c nvidia cuopt-server=26.12.* cuopt-sh-client=26.12.*

See the nightly conda packages for the full list.

Container

Nightly images are tagged <version>a-cu12 / <version>a-cu13 (Ubuntu) and <version>a-cu13-ubi10 (UBI10, CUDA 13.x only):

# For CUDA 12.x
docker pull nvidia/cuopt:26.12.0a-cu12

# For CUDA 13.x
docker pull nvidia/cuopt:26.12.0a-cu13

# UBI10, CUDA 13.x only
docker pull nvidia/cuopt:26.12.0a-cu13-ubi10

See the cuOpt Docker Hub page for the full list.

Container notes

Both container variants include the same cuOpt packages (libcuopt, cuopt, cuopt-server, cuopt-sh-client) and expose the same server entrypoint. They are built and tested for x86-64 and ARM64.

More information about the cuOpt container can be found here.

Users who are using cuOpt for quick testing or research can use the cuOpt container. Alternatively, users who are planning to plug cuOpt as a service in their workflow can quickly start with the cuOpt container. But users are required to build security layers around the service to safeguard the service from untrusted users.

Build from Source and Test

Please see our guide for building cuOpt from source. This will be helpful if users want to add new features or fix bugs for cuOpt. This would also be very helpful in case users want to customize cuOpt for their own use cases which require changes to the cuOpt source code.

Release Timeline

cuOpt follows the RAPIDS release schedule and is part of the "others" category in the release timeline. The release cycle consists of:

  • Development: Active feature development and bug fixes targeting main
  • Burn Down: Focus shifts to stabilization; new features should target the next release
  • Code Freeze: Only critical bug fixes allowed; PRs require admin approval
  • Release: Final testing, tagging, and official release

For current release timelines and dates, refer to the RAPIDS Maintainers Docs.

For AI Coding Agents

See AGENTS.md for agent-specific guidelines.

Contributing Guide

Review the CONTRIBUTING.md file for information on how to contribute code and issues to the project.

Releases

Packages

Used by

Contributors

Languages