Skip to content
Open
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
5 changes: 4 additions & 1 deletion .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,10 @@ jobs:
script: ci/build_wheel_libcuopt_client.sh
package-name: libcuopt_client
package-type: cpp
matrix_filter: group_by([.ARCH, (.CUDA_VER|split(".")|map(tonumber)|.[0])]) | map(max_by(.PY_VER|split(".")|map(tonumber)))
# The wheel name carries no CUDA suffix, so neither should the artifact.
append-cuda-suffix: false
# One build per arch: the client has no CUDA dimension.
matrix_filter: group_by(.ARCH) | map(max_by([(.CUDA_VER|split(".")|map(tonumber)), (.PY_VER|split(".")|map(tonumber))]))
wheel-publish-libcuopt-client:
needs: wheel-build-libcuopt-client
permissions:
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ jobs:
runs-on: ubuntu-latest
outputs:
libcuopt_filter: ${{ steps.set-filters.outputs.libcuopt_filter }}
libcuopt_client_filter: ${{ steps.set-filters.outputs.libcuopt_client_filter }}
cuopt_filter: ${{ steps.set-filters.outputs.cuopt_filter }}
cuopt_server_filter: ${{ steps.set-filters.outputs.cuopt_server_filter }}
cuopt_server_test_filter: ${{ steps.set-filters.outputs.cuopt_server_test_filter }}
Expand All @@ -64,6 +65,8 @@ jobs:
id: set-filters
run: |
echo "libcuopt_filter=group_by([.ARCH, (.CUDA_VER|split(\".\")|map(tonumber)|.[0])]) | map(max_by(.PY_VER|split(\".\")|map(tonumber)))" >> $GITHUB_OUTPUT
# One build per arch: the client has no CUDA dimension.
echo "libcuopt_client_filter=group_by(.ARCH) | map(max_by([(.CUDA_VER|split(\".\")|map(tonumber)), (.PY_VER|split(\".\")|map(tonumber))]))" >> $GITHUB_OUTPUT
echo "cuopt_filter=group_by({CUDA_VER, ARCH}) | map(min_by(.PY_VER | split(\".\") | map(tonumber)))" >> $GITHUB_OUTPUT
echo "cuopt_server_filter=map(select(.ARCH == \"amd64\")) | group_by(.CUDA_VER|split(\".\")|map(tonumber)|.[0]) | map(max_by([(.PY_VER|split(\".\")|map(tonumber)), (.CUDA_VER|split(\".\")|map(tonumber))]))" >> $GITHUB_OUTPUT
echo "cuopt_server_test_filter=map(select(.ARCH == \"amd64\")) | group_by(.CUDA_VER | split(\".\") | map(tonumber) | .[0]) | map(max_by([(.PY_VER | split(\".\") | map(tonumber)), (.CUDA_VER | split(\".\") | map(tonumber))]))" >> $GITHUB_OUTPUT
Expand Down Expand Up @@ -623,10 +626,11 @@ jobs:
secrets: inherit # zizmor: ignore[secrets-inherit]
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@release/26.10
with:
# Same filter as libcuopt: every arch and CUDA version, latest Python only.
matrix_filter: ${{ needs.compute-matrix-filters.outputs.libcuopt_filter }}
matrix_filter: ${{ needs.compute-matrix-filters.outputs.libcuopt_client_filter }}
package-type: cpp
package-name: libcuopt_client
# The wheel name carries no CUDA suffix, so neither should the artifact.
append-cuda-suffix: false
build_type: pull-request
build-datetime: ${{ needs.build-details.outputs.build-datetime }}
script: ci/build_wheel_libcuopt_client.sh
Expand Down
3 changes: 2 additions & 1 deletion ci/build_wheel_libcuopt_client.sh
Original file line number Diff line number Diff line change
Expand Up @@ -129,5 +129,6 @@ python -m auditwheel repair "${EXCLUDE_ARGS[@]}" -w "${RAPIDS_WHEEL_BLD_OUTPUT_D

ci/validate_wheel.sh ${package_dir} "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}"

RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_cpp libcuopt_client cuopt --cuda "$RAPIDS_CUDA_VERSION")"
# The artifact is cuopt_wheel_cpp_libcuopt_client_{arch}; publish matches on the prefix.
RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_cpp libcuopt_client cuopt)"
export RAPIDS_PACKAGE_NAME
5 changes: 3 additions & 2 deletions conda/recipes/libcuopt/recipe.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -137,8 +137,9 @@ outputs:
- libabseil
- re2
run:
- ${{ pin_compatible("cuda-version", upper_bound="x", lower_bound="x") }}
- librmm =${{ minor_version }}
# Every library libcuopt_client.so links. rmm and the CUDA runtime are host-only:
# the client includes their headers but links neither.
- rapids-logger =0.3
- openssl
- c-ares
- libuuid
Expand Down
26 changes: 5 additions & 21 deletions dependencies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -175,16 +175,16 @@ files:
- build_common
- depends_on_librmm
- depends_on_rapids_logger
# The client links no CUDA and no rmm, so rapids-logger is its only runtime dependency.
py_run_libcuopt_client:
output: pyproject
pyproject_dir: python/libcuopt_client
matrix:
cuda_suffixed: ["false"]
use_cuda_wheels: ["true"]
use_cuda_wheels: ["false"]
extras:
table: project
includes:
- depends_on_librmm
- depends_on_rapids_logger
py_build_libcuopt_mathopt:
output: pyproject
Expand Down Expand Up @@ -601,33 +601,17 @@ dependencies:
- output_types: [requirements, pyproject]
packages:
- cuopt-cu13==26.10.*,>=0.0.0a0
# One unsuffixed libcuopt-client, for every CUDA version and every output type.
depends_on_libcuopt_client:
common:
- output_types: conda
- output_types: [conda, requirements, pyproject]
packages:
- &libcuopt_client_unsuffixed libcuopt-client==26.10.*,>=0.0.0a0
- libcuopt-client==26.10.*,>=0.0.0a0
- output_types: requirements
packages:
# pip recognizes the index as a global option for the requirements.txt file
- --extra-index-url=https://pypi.nvidia.com
- --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple
specific:
- output_types: [requirements, pyproject]
matrices:
- matrix:
cuda: "12.*"
cuda_suffixed: "true"
packages:
- libcuopt-client-cu12==26.10.*,>=0.0.0a0
- matrix:
cuda: "13.*"
cuda_suffixed: "true"
packages:
- libcuopt-client-cu13==26.10.*,>=0.0.0a0
- matrix:
cuda_suffixed: "false"
packages:
- *libcuopt_client_unsuffixed
depends_on_libcuopt_mathopt:
common:
- output_types: conda
Expand Down
6 changes: 3 additions & 3 deletions python/libcuopt_client/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,12 @@ classifiers = [
"Topic :: Database",
"Topic :: Scientific/Engineering",
"Programming Language :: C++",
"Environment :: GPU :: NVIDIA CUDA",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
]
dependencies = [
"librmm==26.10.*,>=0.0.0a0",
"rapids-logger==0.3.*",
] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`.

Expand Down Expand Up @@ -69,7 +67,9 @@ regex = "(?P<value>.*)"
[tool.rapids-build-backend]
build-backend = "scikit_build_core.build"
dependencies-file = "../../dependencies.yaml"
matrix-entry = "cuda_suffixed=true;use_cuda_wheels=true"
# The client links no CUDA and no rmm, so the wheel name carries no CUDA suffix.
disable-cuda = true
matrix-entry = "cuda_suffixed=false;use_cuda_wheels=false"
requires = [
"cmake>=4.0",
"librmm==26.10.*,>=0.0.0a0",
Expand Down
Loading