Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,20 +30,23 @@ jobs:
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@branch-25.06
with:
matrix_filter: map(select((.CUDA_VER | startswith("12"))))
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
script: ci/build_cpp.sh
python-build:
needs: [cpp-build]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.06
with:
matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER == "3.12"))
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
matrix_filter: map(select(.PY_VER != "3.13"))
script: ci/build_python.sh
wheel-build-cuopt-mps-parser:
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.06
Expand All @@ -69,14 +72,13 @@ jobs:
script: ci/build_wheel_libcuopt.sh
package-name: libcuopt
package-type: cpp
# build for every combination of arch and CUDA version, but only for the latest Python
matrix_filter: map(select(.PY_VER == "3.12")) | group_by([.ARCH, (.CUDA_VER|split(".")|map(tonumber)|.[0])]) | add
matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13"))
wheel-build-cuopt:
needs: [wheel-build-cuopt-mps-parser, wheel-build-libcuopt]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.06
with:
matrix_filter: map(select(.PY_VER != "3.13"))
matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13"))
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
sha: ${{ inputs.sha }}
Expand All @@ -89,7 +91,7 @@ jobs:
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.06
with:
matrix_filter: map(select(.PY_VER != "3.13"))
matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13"))
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
sha: ${{ inputs.sha }}
Expand Down
23 changes: 14 additions & 9 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -96,21 +96,25 @@ jobs:
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@branch-25.06
with:
build_type: pull-request
matrix_filter: map(select((.CUDA_VER | startswith("12"))))
script: ci/build_cpp.sh
conda-cpp-tests:
needs: [conda-cpp-build, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@branch-25.06
#if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp
with:
build_type: pull-request
matrix_filter: map(select(.PY_VER != "3.13"))
matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13"))
script: ci/test_cpp.sh
conda-python-build:
needs: conda-cpp-build
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.06
with:
build_type: pull-request
matrix_filter: map(select(.PY_VER != "3.13"))
matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13"))
script: ci/build_python.sh
conda-python-tests:
needs: [conda-python-build, changed-files]
secrets: inherit
Expand All @@ -119,7 +123,8 @@ jobs:
with:
run_codecov: false
build_type: pull-request
matrix_filter: map(select(.PY_VER != "3.13"))
matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13"))
script: ci/test_python.sh
#docs-build:
# needs: checks
# secrets: inherit
Expand Down Expand Up @@ -157,9 +162,9 @@ jobs:
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.06
with:
# build for every combination of arch and CUDA version, but only for the latest Python
matrix_filter: map(select(.PY_VER == "3.12")) | group_by([.ARCH, (.CUDA_VER|split(".")|map(tonumber)|.[0])]) | add
package-name: libcuopt
matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER == "3.12"))
package-type: cpp
package-name: libcuopt
build_type: pull-request
script: ci/build_wheel_libcuopt.sh
wheel-build-cuopt:
Expand All @@ -171,7 +176,7 @@ jobs:
script: ci/build_wheel_cuopt.sh
package-name: cuopt
package-type: python
matrix_filter: map(select(.PY_VER != "3.13"))
matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13"))
wheel-tests-cuopt:
needs: [wheel-build-cuopt, wheel-build-cuopt-mps-parser, changed-files]
secrets: inherit
Expand All @@ -180,7 +185,7 @@ jobs:
with:
build_type: pull-request
script: ci/test_wheel_cuopt.sh
matrix_filter: map(select(.PY_VER != "3.13"))
matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13"))
wheel-build-cuopt-server:
needs: wheel-build-cuopt
secrets: inherit
Expand All @@ -190,7 +195,7 @@ jobs:
script: ci/build_wheel_cuopt_server.sh
package-name: cuopt_server
package-type: python
matrix_filter: map(select(.PY_VER != "3.13"))
matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13"))
wheel-build-cuopt-sh-client:
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.06
Expand All @@ -209,7 +214,7 @@ jobs:
with:
build_type: pull-request
script: ci/test_wheel_cuopt_server.sh
matrix_filter: map(select(.PY_VER != "3.13"))
matrix_filter: map(select((.CUDA_VER | startswith("12")) and .PY_VER != "3.13"))
test-self-hosted-server:
needs: [wheel-build-cuopt-server, changed-files]
secrets: inherit
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/self_hosted_service_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ jobs:
runs-on: linux-amd64-gpu-l4-latest-1
strategy:
matrix:
ctk: ["11.8.0"]
linux_ver: ["ubuntu20.04"]
py_ver: ["3.10"]
ctk: ["12.8.0"]
linux_ver: ["ubuntu24.04"]
py_ver: ["3.12"]
container:
image: "rapidsai/citestwheel:cuda${{ matrix.ctk }}-${{ matrix.linux_ver}}-py${{ matrix.py_ver }}"
options: "--network-alias cuopt-service"
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ jobs:
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
script: ci/test_cpp.sh
conda-cpp-memcheck-tests:
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-25.06
Expand All @@ -45,6 +46,7 @@ jobs:
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
script: ci/test_python.sh
wheel-tests-cuopt:
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.06
Expand Down
15 changes: 2 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ Review the [CONTRIBUTING.md](CONTRIBUTING.md) file for information on how to con

### CUDA/GPU requirements

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

### Pip
Expand All @@ -32,12 +32,6 @@ 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 11.x:

```bash
pip install --extra-index-url=https://pypi.nvidia.com cuopt-cu11
```

For CUDA 12.x:

```bash
Expand All @@ -48,11 +42,6 @@ pip install --extra-index-url=https://pypi.nvidia.com cuopt-cu12

cuOpt can be installed with conda (via [miniforge](https://github.com/conda-forge/miniforge)) from the `nvidia` channel:

For CUDA 11.x:
```bash
conda install -c rapidsai -c conda-forge -c nvidia \
cuopt=25.05 python=3.12 cuda-version=11.8
```

For CUDA 12.x:
```bash
Expand Down
9 changes: 5 additions & 4 deletions benchmarks/linear_programming/cuopt/run_pdlp.cu
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ static void parse_arguments(argparse::ArgumentParser& program)

program.add_argument("--time-limit")
.help("Time limit in seconds")
.default_value(3600)
.scan<'f', double>();
.default_value(3600.0)
.scan<'g', double>();

program.add_argument("--iteration-limit")
.help("Iteration limit")
Expand All @@ -52,7 +52,7 @@ static void parse_arguments(argparse::ArgumentParser& program)
program.add_argument("--optimality-tolerance")
.help("Optimality tolerance")
.default_value(1e-4)
.scan<'f', double>();
.scan<'g', double>();

program.add_argument("--pdlp-solver-mode")
.help("Solver mode for PDLP. Possible values: Stable2 (default), Methodical1, Fast1")
Expand Down Expand Up @@ -102,7 +102,8 @@ static cuopt::linear_programming::pdlp_solver_settings_t<int, double> create_sol
settings.time_limit = program.get<double>("--time-limit");
settings.iteration_limit = program.get<int>("--iteration-limit");
settings.set_optimality_tolerance(program.get<double>("--optimality-tolerance"));
settings.solver_mode = string_to_pdlp_solver_mode(program.get<std::string>("--pdlp-solver-mode"));
settings.pdlp_solver_mode =
string_to_pdlp_solver_mode(program.get<std::string>("--pdlp-solver-mode"));
settings.method = static_cast<cuopt::linear_programming::method_t>(program.get<int>("--method"));
settings.crossover = program.get<int>("--crossover");

Expand Down
19 changes: 2 additions & 17 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ REPODIR=$(cd $(dirname $0); pwd)
LIBCUOPT_BUILD_DIR=${LIBCUOPT_BUILD_DIR:=${REPODIR}/cpp/build}
LIBMPS_PARSER_BUILD_DIR=${LIBMPS_PARSER_BUILD_DIR:=${REPODIR}/cpp/libmps_parser/build}

VALIDARGS="clean libcuopt libmps_parser cuopt_mps_parser cuopt cuopt_server cuopt_sh_client docs -a -b -d -g -v -l= --verbose-pdlp [--cmake-args=\\\"<args>\\\"] [--cache-tool=<tool>] -n --no-fetch-rapids --skip_l1_tests --allgpuarch --ci-only-arch --show_depr_warn -h --help"
VALIDARGS="clean libcuopt libmps_parser cuopt_mps_parser cuopt cuopt_server cuopt_sh_client docs -a -b -g -v -l= --verbose-pdlp [--cmake-args=\\\"<args>\\\"] [--cache-tool=<tool>] -n --allgpuarch --ci-only-arch --show_depr_warn -h --help"
HELP="$0 [<target> ...] [<flag> ...]
where <target> is:
clean - remove all existing build artifacts and configuration (start over)
Expand All @@ -43,15 +43,12 @@ HELP="$0 [<target> ...] [<flag> ...]
-g - build for debug
-a - Enable assertion (by default in debug mode)
-b - Build with benchmark settings
-d - Build with under development, non-release modules
-n - no install step
--no-fetch-rapids - don't fetch rapids dependencies
-l= - log level. Options are: TRACE | DEBUG | INFO | WARN | ERROR | CRITICAL | OFF. Default=INFO
--verbose-pdlp - verbose mode for pdlp solver
--cache-tool=<tool> - pass the build cache tool (eg: ccache, sccache, distcc) that will be used
to speedup the build process.
--cmake-args=\\\"<args>\\\" - pass arbitrary list of CMake configuration options (escape all quotes in argument)
--skip_l1_tests - Do not build level 1 regression tests
--allgpuarch - build for all supported GPU architectures
--ci-only-arch - build for volta and ampere only
--show_depr_warn - show cmake deprecation warnings
Expand All @@ -78,7 +75,6 @@ DEFINE_ASSERT=False
DEFINE_PDLP_VERBOSE_MODE=False
INSTALL_TARGET=install
BUILD_DISABLE_DEPRECATION_WARNING=ON
BUILD_L1_TESTS=ON
BUILD_ALL_GPU_ARCH=0
BUILD_CI_ONLY=0
CACHE_ARGS=""
Expand Down Expand Up @@ -203,21 +199,12 @@ fi
if hasArg -b; then
DEFINE_BENCHMARK=true
fi
if hasArg -d; then
DEFINE_DEVELOPMENT=true
fi
if hasArg --verbose-pdlp; then
DEFINE_PDLP_VERBOSE_MODE=true
fi
if hasArg -n; then
INSTALL_TARGET=""
fi
if hasArg --no-fetch-rapids; then
FETCH_RAPIDS=OFF
fi
if hasArg --skip_l1_tests; then
BUILD_L1_TESTS=OFF
fi
if hasArg --allgpuarch; then
BUILD_ALL_GPU_ARCH=1
fi
Expand Down Expand Up @@ -300,15 +287,13 @@ if buildAll || hasArg libcuopt; then
mkdir -p ${LIBCUOPT_BUILD_DIR}
cd ${LIBCUOPT_BUILD_DIR}
cmake -DDEFINE_ASSERT=${DEFINE_ASSERT} \
-DDEFINE_BENCHMARK=${DEFINE_BENCHMARK} \
-DDEFINE_DEVELOPMENT=${DEFINE_DEVELOPMENT} \
-DDEFINE_BENCHMARK=${DEFINE_BENCHMARK} \
-DDEFINE_PDLP_VERBOSE_MODE=${DEFINE_PDLP_VERBOSE_MODE} \
-DLIBCUOPT_LOGGING_LEVEL=${LOGGING_ACTIVE_LEVEL} \
-DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
-DCMAKE_CUDA_ARCHITECTURES=${CUOPT_CMAKE_CUDA_ARCHITECTURES} \
-DDISABLE_DEPRECATION_WARNING=${BUILD_DISABLE_DEPRECATION_WARNING} \
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
-DBUILD_L1_TESTS=${BUILD_L1_TESTS} \
-DFETCH_RAPIDS=${FETCH_RAPIDS} \
${EXTRA_CMAKE_ARGS} \
${REPODIR}/cpp
Expand Down
2 changes: 1 addition & 1 deletion ci/release/update-version-cuopt.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ function sed_runner() {
# Centralized version file update
echo "${NEXT_FULL_TAG}" > VERSION

dependencies='cuopt-cu11 cuopt-cu12 cuopt-mps-parser'
dependencies='cuopt-cu12 cuopt-mps-parser'
for FILE in conda/environments/*.yaml dependencies.yaml; do
for dependency in ${dependencies}; do
sed_runner "s/- ${dependency}==.*/- ${dependency}==${NEXT_SHORT_TAG}\.*/g" "${FILE}";
Expand Down
2 changes: 1 addition & 1 deletion ci/release/update-version-rapids.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ sed_runner 's/'"DEPENDENT_LIB_MAJOR_VERSION \"[0-9][0-9]\""'/'"DEPENDENT_LIB_MAJ
sed_runner 's/'"DEPENDENT_LIB_MINOR_VERSION \"[0-9][0-9]\""'/'"DEPENDENT_LIB_MINOR_VERSION \"${NEXT_MINOR}\""'/g' cpp/CMakeLists.txt

# RTD update
dependencies='cudf cudf-cu11 cudf-cu12 cuvs cuvs-cu11 cuvs-cu12 libcudf rmm rmm-cu11 rmm-cu12 librmm libraft-headers pylibraft pylibraft-cu11 pylibraft-cu12 raft-dask raft-dask-cu11 raft-dask-cu12 rapids-dask-dependency'
dependencies='cudf cudf-cu12 cuvs cuvs-cu12 libcudf rmm rmm-cu12 librmm libraft-headers pylibraft pylibraft-cu12 raft-dask rapids-dask-dependency'
for FILE in conda/environments/*.yaml dependencies.yaml; do
for dependency in ${dependencies}; do
sed_runner "s/- ${dependency}==.*/- ${dependency}==${NEXT_SHORT_TAG_PEP440}\.*/g" "${FILE}";
Expand Down
Loading
Loading