From 60722e91728ad71142eb8fec571ee00b289b7dab Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Fri, 6 Jun 2025 10:05:04 -0500 Subject: [PATCH 1/8] Add third party solvers and make container tag latest so we don't need to update often --- README.md | 7 +++++-- .../cuopt/source/cuopt-python/quick-start.rst | 7 +++++-- .../cuopt/source/cuopt-server/quick-start.rst | 7 +++++-- docs/cuopt/source/index.rst | 12 +++++++++++- docs/cuopt/source/introduction.rst | 4 ++++ docs/cuopt/source/lp-features.rst | 6 ++++++ docs/cuopt/source/milp-features.rst | 6 ++++++ .../source/thirdparty_solvers/index.html | 19 +++++++++++++++++++ 8 files changed, 61 insertions(+), 7 deletions(-) create mode 100644 docs/cuopt/source/thirdparty_solvers/index.html diff --git a/README.md b/README.md index 301296c393..f77ce40957 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ Users who are used to conda env based workflows would benefit with conda package For CUDA 12.x: ```bash conda install -c rapidsai -c conda-forge -c nvidia \ - cuopt-server=25.05 cuopt-sh-client=25.05 python=3.12 cuda-version=12.8 + cuopt-server=25.05.* cuopt-sh-client=25.05.* python=3.12 cuda-version=12.8 ``` We also provide [nightly Conda packages](https://anaconda.org/rapidsai-nightly) built from the HEAD @@ -85,8 +85,11 @@ of our latest development branch. Users can pull the cuOpt container from the NVIDIA container registry. ```bash -docker pull nvidia/cuopt:25.5.0-cuda12.8-py312 +docker pull nvidia/cuopt:latest-cuda12.8-py312 ``` + +Note: The ``latest`` tag is the latest stable release of cuOpt. If you want to use a specific version, you can use the ``-cuda12.8-py312`` tag. For example, to use cuOpt 25.5.0, you can use the ``25.5.0-cuda12.8-py312`` tag. Please refer to `cuOpt dockerhub page `_ for the list of available tags. + More information about the cuOpt container can be found [here](https://docs.nvidia.com/cuopt/user-guide/latest/cuopt-server/quick-start.html#container-from-docker-hub). 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. diff --git a/docs/cuopt/source/cuopt-python/quick-start.rst b/docs/cuopt/source/cuopt-python/quick-start.rst index 3fd72d58c5..75f5e5e5f8 100644 --- a/docs/cuopt/source/cuopt-python/quick-start.rst +++ b/docs/cuopt/source/cuopt-python/quick-start.rst @@ -37,13 +37,16 @@ NVIDIA cuOpt is also available as a container from Docker Hub: .. code-block:: bash - docker pull nvidia/cuopt:25.5.0-cuda12.8-py312 + docker pull nvidia/cuopt:latest-cuda12.8-py312 + +.. note:: + The ``latest`` tag is the latest stable release of cuOpt. If you want to use a specific version, you can use the ``-cuda12.8-py312`` tag. For example, to use cuOpt 25.5.0, you can use the ``25.5.0-cuda12.8-py312`` tag. Please refer to `cuOpt dockerhub page `_ for the list of available tags. The container includes both the Python API and self-hosted server components. To run the container: .. code-block:: bash - docker run --gpus all -it --rm nvidia/cuopt:25.5.0-cuda12.8-py312 + docker run --gpus all -it --rm nvidia/cuopt:latest-cuda12.8-py312 This will start an interactive session with cuOpt pre-installed and ready to use. diff --git a/docs/cuopt/source/cuopt-server/quick-start.rst b/docs/cuopt/source/cuopt-server/quick-start.rst index 770d36559c..a0a02c2f45 100644 --- a/docs/cuopt/source/cuopt-server/quick-start.rst +++ b/docs/cuopt/source/cuopt-server/quick-start.rst @@ -35,13 +35,16 @@ NVIDIA cuOpt is also available as a container from Docker Hub: .. code-block:: bash - docker pull nvidia/cuopt:25.5.0-cuda12.8-py312 + docker pull nvidia/cuopt:latest-cuda12.8-py312 + +.. note:: + The ``latest`` tag is the latest stable release of cuOpt. If you want to use a specific version, you can use the ``-cuda12.8-py312`` tag. For example, to use cuOpt 25.5.0, you can use the ``25.5.0-cuda12.8-py312`` tag. Please refer to `cuOpt dockerhub page `_ for the list of available tags. The container includes both the Python API and self-hosted server components. To run the container: .. code-block:: bash - docker run --gpus all -it --rm -p 8000:8000 -e CUOPT_SERVER_PORT=8000 nvidia/cuopt:25.5.0-cuda12.8-py312 /bin/bash -c "python3 -m cuopt_server.cuopt_service" + docker run --gpus all -it --rm -p 8000:8000 -e CUOPT_SERVER_PORT=8000 nvidia/cuopt:latest-cuda12.8-py312 /bin/bash -c "python3 -m cuopt_server.cuopt_service" .. note:: Make sure you have the NVIDIA Container Toolkit installed on your system to enable GPU support in containers. See the `installation guide `_ for details. diff --git a/docs/cuopt/source/index.rst b/docs/cuopt/source/index.rst index 44f50db163..377677a7ca 100644 --- a/docs/cuopt/source/index.rst +++ b/docs/cuopt/source/index.rst @@ -60,6 +60,16 @@ Command Line Interface (cuopt-cli) Command Line Interface Overview +======================================== +Third Party Solvers +======================================== +.. toctree:: + :maxdepth: 4 + :caption: Third Party Solvers + :name: Third Party Solvers + + thirdparty_solvers/index.rst + ============= Resources ============= @@ -80,4 +90,4 @@ Licenses :caption: Licenses :name: Licenses - license.rst + license.rst \ No newline at end of file diff --git a/docs/cuopt/source/introduction.rst b/docs/cuopt/source/introduction.rst index d3878d3eaa..5eb537ce2f 100644 --- a/docs/cuopt/source/introduction.rst +++ b/docs/cuopt/source/introduction.rst @@ -118,6 +118,10 @@ cuOpt supports the following APIs: - `Linear Programming (LP) - Server `_ - `Mixed Integer Linear Programming (MILP) - Server `_ - `Routing (TSP, VRP, and PDP) - Server `_ +- Third-party modeling languages + - `AMPL `_ + - `PuLP `_ + ================================== Installation Options diff --git a/docs/cuopt/source/lp-features.rst b/docs/cuopt/source/lp-features.rst index 7d0adab21c..9fa3b3fd99 100644 --- a/docs/cuopt/source/lp-features.rst +++ b/docs/cuopt/source/lp-features.rst @@ -7,6 +7,12 @@ Availability The LP solver can be accessed in the following ways: +- **Third-Party Modeling Languages**: cuOpt's LP and MILP solver can be called directly from the following third-party modeling languages. This allows you to leverage GPU acceleration while maintaining your existing optimization workflow in these modeling languages. + + Supported modeling languages: + - AMPL + - PuLP + - **C API**: A native C API that provides direct low-level access to cuOpt's LP capabilities, enabling integration into any application or system that can interface with C. - **As a Self-Hosted Service**: cuOpt's LP solver can be deployed as a in your own infrastructure, enabling you to maintain full control while integrating it into your existing systems. diff --git a/docs/cuopt/source/milp-features.rst b/docs/cuopt/source/milp-features.rst index 97a5729ac4..9168047f2b 100644 --- a/docs/cuopt/source/milp-features.rst +++ b/docs/cuopt/source/milp-features.rst @@ -7,6 +7,12 @@ Availability The MILP solver can be accessed in the following ways: +- **Third-Party Modeling Languages**: cuOpt's LP and MILP solver can be called directly from the following third-party modeling languages. This allows you to leverage GPU acceleration while maintaining your existing optimization workflow in these modeling languages. + + Currently supported solvers: + - AMPL + - PuLP + - **C API**: A native C API that provides direct low-level access to cuOpt's MILP solver, enabling integration into any application or system that can interface with C. - **As a Self-Hosted Service**: cuOpt's MILP solver can be deployed in your own infrastructure, enabling you to maintain full control while integrating it into your existing systems. diff --git a/docs/cuopt/source/thirdparty_solvers/index.html b/docs/cuopt/source/thirdparty_solvers/index.html new file mode 100644 index 0000000000..9cf45aa3e2 --- /dev/null +++ b/docs/cuopt/source/thirdparty_solvers/index.html @@ -0,0 +1,19 @@ +========================= +Third Party Solvers +========================= + + +-------------------------- +AMPL Support +-------------------------- + +AMPL can be used with near zero code changes to switch to cuOpt as a solver to solve linear and quadratic programming problems. +.. note:: + AMPL is a commercial solver and requires a license to use. AMPL hasn't made a new release with cuOpt support yet. + +-------------------------- +PuLP Support +-------------------------- + +PuLP can be used with near zero code changes to switch to cuOpt as a solver to solve linear and quadratic programming problems. +Please refer to the `PuLP documentation `_ for more information. And also refer to example notebook in the `cuopt-examples `_ repository. From 4910e89ef521318caec7dfafe4a9a527c3daab5d Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Fri, 6 Jun 2025 10:33:47 -0500 Subject: [PATCH 2/8] Add details on nightly --- README.md | 6 +++++- docs/cuopt/source/cuopt-python/quick-start.rst | 7 +++++++ docs/cuopt/source/cuopt-server/quick-start.rst | 5 +++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f77ce40957..25b2672b43 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,10 @@ For CUDA 12.x: pip install --extra-index-url=https://pypi.nvidia.com cuopt-server-cu12==25.5.* cuopt-sh-client==25.5.* nvidia-cuda-runtime-cu12==12.8.* ``` +Development wheels are available as nightlies, please update `--extra-index-url` to `https://pypi.anaconda.org/rapidsai-wheels-nightly/simple/` to install latest nightly packages. + +Nightly packages are availble on + ### Conda cuOpt can be installed with conda (via [miniforge](https://github.com/conda-forge/miniforge)) from the `nvidia` channel: @@ -78,7 +82,7 @@ conda install -c rapidsai -c conda-forge -c nvidia \ ``` We also provide [nightly Conda packages](https://anaconda.org/rapidsai-nightly) built from the HEAD -of our latest development branch. +of our latest development branch. Just replace `-c rapidsai` with `-c rapidsai-nightly`. ### Container diff --git a/docs/cuopt/source/cuopt-python/quick-start.rst b/docs/cuopt/source/cuopt-python/quick-start.rst index 75f5e5e5f8..84fad8af34 100644 --- a/docs/cuopt/source/cuopt-python/quick-start.rst +++ b/docs/cuopt/source/cuopt-python/quick-start.rst @@ -17,6 +17,10 @@ For CUDA 12.x: pip install --extra-index-url=https://pypi.nvidia.com cuopt-cu12==25.5.* nvidia-cuda-runtime-cu12==12.8.* +.. note:: + For development wheels which are available as nightlies, please update `--extra-index-url` to `https://pypi.anaconda.org/rapidsai-wheels-nightly/simple/`. + + Conda ----- @@ -29,6 +33,9 @@ For CUDA 12.x: conda install -c rapidsai -c conda-forge -c nvidia \ cuopt=25.05.* python=3.12 cuda-version=12.8 +.. note:: + For development wheels which are available as nightlies, please update `-c rapidsai` to `-c rapidsai-nightly`. + Container --------- diff --git a/docs/cuopt/source/cuopt-server/quick-start.rst b/docs/cuopt/source/cuopt-server/quick-start.rst index a0a02c2f45..89a305c1f2 100644 --- a/docs/cuopt/source/cuopt-server/quick-start.rst +++ b/docs/cuopt/source/cuopt-server/quick-start.rst @@ -14,6 +14,8 @@ For CUDA 12.x: pip install --extra-index-url=https://pypi.nvidia.com cuopt-server-cu12==25.5.* cuopt-sh-client==25.5.* nvidia-cuda-runtime-cu12==12.8.* +.. note:: + For development wheels which are available as nightlies, please update `--extra-index-url` to `https://pypi.anaconda.org/rapidsai-wheels-nightly/simple/`. Conda ----- @@ -27,6 +29,9 @@ For CUDA 12.x: conda install -c rapidsai -c conda-forge -c nvidia \ cuopt-server=25.05.* cuopt-sh-client=25.05.* python=3.12 cuda-version=12.8 +.. note:: + For development wheels which are available as nightlies, please update `-c rapidsai` to `-c rapidsai-nightly`. + Container from Docker Hub ------------------------- From 9e91a1200444dc63814e56a3ebf3797229bdb8e1 Mon Sep 17 00:00:00 2001 From: Chris Maes Date: Fri, 6 Jun 2025 08:57:26 -0700 Subject: [PATCH 3/8] Update index.rst Third Party Solvers -> "Third-Party Modeling Languages" --- docs/cuopt/source/index.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/cuopt/source/index.rst b/docs/cuopt/source/index.rst index 377677a7ca..d85e1ed534 100644 --- a/docs/cuopt/source/index.rst +++ b/docs/cuopt/source/index.rst @@ -61,12 +61,12 @@ Command Line Interface (cuopt-cli) Command Line Interface Overview ======================================== -Third Party Solvers +Third-Party Modeling Languages ======================================== .. toctree:: :maxdepth: 4 - :caption: Third Party Solvers - :name: Third Party Solvers + :caption: Third-Party Modeling Languages + :name: Third-Party Modeling Languages thirdparty_solvers/index.rst @@ -90,4 +90,4 @@ Licenses :caption: Licenses :name: Licenses - license.rst \ No newline at end of file + license.rst From 999389f478189f016f705f2c97ff530ab8f3a798 Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Fri, 6 Jun 2025 10:58:37 -0500 Subject: [PATCH 4/8] Fix docs and address review comments --- docs/cuopt/source/cuopt-python/quick-start.rst | 2 +- docs/cuopt/source/cuopt-server/quick-start.rst | 2 +- docs/cuopt/source/lp-milp-settings.rst | 2 +- docs/cuopt/source/thirdparty_solvers/{index.html => index.rst} | 2 ++ 4 files changed, 5 insertions(+), 3 deletions(-) rename docs/cuopt/source/thirdparty_solvers/{index.html => index.rst} (99%) diff --git a/docs/cuopt/source/cuopt-python/quick-start.rst b/docs/cuopt/source/cuopt-python/quick-start.rst index 84fad8af34..50d494318b 100644 --- a/docs/cuopt/source/cuopt-python/quick-start.rst +++ b/docs/cuopt/source/cuopt-python/quick-start.rst @@ -34,7 +34,7 @@ For CUDA 12.x: cuopt=25.05.* python=3.12 cuda-version=12.8 .. note:: - For development wheels which are available as nightlies, please update `-c rapidsai` to `-c rapidsai-nightly`. + For development conda packages which are available as nightlies, please update `-c rapidsai` to `-c rapidsai-nightly`. Container diff --git a/docs/cuopt/source/cuopt-server/quick-start.rst b/docs/cuopt/source/cuopt-server/quick-start.rst index 89a305c1f2..5fad1d5228 100644 --- a/docs/cuopt/source/cuopt-server/quick-start.rst +++ b/docs/cuopt/source/cuopt-server/quick-start.rst @@ -30,7 +30,7 @@ For CUDA 12.x: cuopt-server=25.05.* cuopt-sh-client=25.05.* python=3.12 cuda-version=12.8 .. note:: - For development wheels which are available as nightlies, please update `-c rapidsai` to `-c rapidsai-nightly`. + For development conda packages which are available as nightlies, please update `-c rapidsai` to `-c rapidsai-nightly`. Container from Docker Hub diff --git a/docs/cuopt/source/lp-milp-settings.rst b/docs/cuopt/source/lp-milp-settings.rst index d7800e14cb..6a5309a570 100644 --- a/docs/cuopt/source/lp-milp-settings.rst +++ b/docs/cuopt/source/lp-milp-settings.rst @@ -48,7 +48,7 @@ Solution File Note: the default value is ``""`` and no solution file is written. User Problem File -^^^^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^^^ ``CUOPT_USER_PROBLEM_FILE`` controls the name of a file where cuOpt should write the user problem. Note: the default value is ``""`` and no user problem file is written. diff --git a/docs/cuopt/source/thirdparty_solvers/index.html b/docs/cuopt/source/thirdparty_solvers/index.rst similarity index 99% rename from docs/cuopt/source/thirdparty_solvers/index.html rename to docs/cuopt/source/thirdparty_solvers/index.rst index 9cf45aa3e2..d3a10a44ea 100644 --- a/docs/cuopt/source/thirdparty_solvers/index.html +++ b/docs/cuopt/source/thirdparty_solvers/index.rst @@ -8,7 +8,9 @@ -------------------------- AMPL can be used with near zero code changes to switch to cuOpt as a solver to solve linear and quadratic programming problems. + .. note:: + AMPL is a commercial solver and requires a license to use. AMPL hasn't made a new release with cuOpt support yet. -------------------------- From 7d1aba2c85578d070b761c59fce1cb531fce9b36 Mon Sep 17 00:00:00 2001 From: Chris Maes Date: Fri, 6 Jun 2025 09:02:24 -0700 Subject: [PATCH 5/8] Update index.html --- docs/cuopt/source/thirdparty_solvers/index.html | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/cuopt/source/thirdparty_solvers/index.html b/docs/cuopt/source/thirdparty_solvers/index.html index 9cf45aa3e2..1e354270ff 100644 --- a/docs/cuopt/source/thirdparty_solvers/index.html +++ b/docs/cuopt/source/thirdparty_solvers/index.html @@ -1,19 +1,19 @@ -========================= -Third Party Solvers -========================= +=============================== +Third-Party Modeling Languages +=============================== -------------------------- AMPL Support -------------------------- -AMPL can be used with near zero code changes to switch to cuOpt as a solver to solve linear and quadratic programming problems. +AMPL can be used with near zero code changes: just switch to cuOpt as a solver to solve linear and mixed-integer programming problems. .. note:: - AMPL is a commercial solver and requires a license to use. AMPL hasn't made a new release with cuOpt support yet. + AMPL is a commercial modeling languages and requires a license to use. -------------------------- PuLP Support -------------------------- -PuLP can be used with near zero code changes to switch to cuOpt as a solver to solve linear and quadratic programming problems. -Please refer to the `PuLP documentation `_ for more information. And also refer to example notebook in the `cuopt-examples `_ repository. +PuLP can be used with near zero code changes: just switch to cuOpt as a solver to solve linear and mixed-integer programming problems. +Please refer to the `PuLP documentation `_ for more information. Also, see the example notebook in the `cuopt-examples `_ repository. From dcd60c4324a5f807537c994faf63f960da5c9a96 Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Fri, 6 Jun 2025 11:05:16 -0500 Subject: [PATCH 6/8] rename folder --- .../index.rst | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/cuopt/source/{thirdparty_solvers => thirdparty_modeling_languages}/index.rst (100%) diff --git a/docs/cuopt/source/thirdparty_solvers/index.rst b/docs/cuopt/source/thirdparty_modeling_languages/index.rst similarity index 100% rename from docs/cuopt/source/thirdparty_solvers/index.rst rename to docs/cuopt/source/thirdparty_modeling_languages/index.rst From 29f34d4838b9957a70f9841b8615eb0eccee97ee Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Fri, 6 Jun 2025 11:16:02 -0500 Subject: [PATCH 7/8] update index --- docs/cuopt/source/index.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/cuopt/source/index.rst b/docs/cuopt/source/index.rst index 377677a7ca..8de91cd82a 100644 --- a/docs/cuopt/source/index.rst +++ b/docs/cuopt/source/index.rst @@ -65,10 +65,10 @@ Third Party Solvers ======================================== .. toctree:: :maxdepth: 4 - :caption: Third Party Solvers - :name: Third Party Solvers + :caption: Third Party Modeling Languages + :name: Third Party Modeling Languages - thirdparty_solvers/index.rst + thirdparty_modeling_languages/index.rst ============= Resources From b810ecfba0e077eab7f2b030cf4595fcf32add8e Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Fri, 6 Jun 2025 12:47:45 -0500 Subject: [PATCH 8/8] address review comments --- README.md | 2 -- docs/cuopt/source/thirdparty_modeling_languages/index.rst | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 25b2672b43..4ca1e3aef2 100644 --- a/README.md +++ b/README.md @@ -65,8 +65,6 @@ pip install --extra-index-url=https://pypi.nvidia.com cuopt-server-cu12==25.5.* Development wheels are available as nightlies, please update `--extra-index-url` to `https://pypi.anaconda.org/rapidsai-wheels-nightly/simple/` to install latest nightly packages. -Nightly packages are availble on - ### Conda cuOpt can be installed with conda (via [miniforge](https://github.com/conda-forge/miniforge)) from the `nvidia` channel: diff --git a/docs/cuopt/source/thirdparty_modeling_languages/index.rst b/docs/cuopt/source/thirdparty_modeling_languages/index.rst index f9be5260d6..8a5024e9ea 100644 --- a/docs/cuopt/source/thirdparty_modeling_languages/index.rst +++ b/docs/cuopt/source/thirdparty_modeling_languages/index.rst @@ -7,11 +7,11 @@ Third-Party Modeling Languages AMPL Support -------------------------- -AMPL can be used with near zero code changes: just switch to cuOpt as a solver to solve linear and mixed-integer programming problems. Please refer to the `AMPL documentation `_ for more information. +AMPL can be used with near zero code changes: simply switch to cuOpt as a solver to solve linear and mixed-integer programming problems. Please refer to the `AMPL documentation `_ for more information. -------------------------- PuLP Support -------------------------- -PuLP can be used with near zero code changes: just switch to cuOpt as a solver to solve linear and mixed-integer programming problems. +PuLP can be used with near zero code changes: simply switch to cuOpt as a solver to solve linear and mixed-integer programming problems. Please refer to the `PuLP documentation `_ for more information. Also, see the example notebook in the `cuopt-examples `_ repository.