-
Notifications
You must be signed in to change notification settings - Fork 75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP: [DO NOT MERGE] introduce libcuvs wheels #594
base: branch-25.02
Are you sure you want to change the base?
Changes from all commits
fbe777d
941c711
1a07f09
0f7c7d8
591bcff
0bc1f0a
7e04e6d
270081e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -80,7 +80,28 @@ jobs: | |
node_type: "gpu-v100-latest-1" | ||
run_script: "ci/build_docs.sh" | ||
sha: ${{ inputs.sha }} | ||
wheel-build-libcuvs: | ||
secrets: inherit | ||
uses: rapidsai/shared-workflows/.github/workflows/[email protected] | ||
with: | ||
build_type: ${{ inputs.build_type || 'branch' }} | ||
branch: ${{ inputs.branch }} | ||
sha: ${{ inputs.sha }} | ||
date: ${{ inputs.date }} | ||
script: ci/build_wheel_libcuvs.sh | ||
wheel-publish-libcuvs: | ||
needs: wheel-build-libcuvs | ||
secrets: inherit | ||
uses: rapidsai/shared-workflows/.github/workflows/[email protected] | ||
with: | ||
build_type: ${{ inputs.build_type || 'branch' }} | ||
branch: ${{ inputs.branch }} | ||
sha: ${{ inputs.sha }} | ||
date: ${{ inputs.date }} | ||
package-name: cuvs | ||
package-type: cpp | ||
wheel-build-cuvs: | ||
needs: wheel-build-libcuvs | ||
secrets: inherit | ||
uses: rapidsai/shared-workflows/.github/workflows/[email protected] | ||
with: | ||
|
@@ -99,3 +120,4 @@ jobs: | |
sha: ${{ inputs.sha }} | ||
date: ${{ inputs.date }} | ||
package-name: cuvs | ||
package-type: python |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,12 +16,13 @@ jobs: | |
- changed-files | ||
- checks | ||
- conda-cpp-build | ||
- conda-cpp-tests | ||
# - conda-cpp-tests | ||
- conda-cpp-checks | ||
- conda-python-build | ||
- conda-python-tests | ||
- docs-build | ||
- rust-build | ||
- wheel-build-libcuvs | ||
- wheel-build-cuvs | ||
- wheel-tests-cuvs | ||
- devcontainer | ||
|
@@ -87,13 +88,13 @@ jobs: | |
with: | ||
build_type: pull-request | ||
node_type: cpu16 | ||
conda-cpp-tests: | ||
needs: [conda-cpp-build, changed-files] | ||
secrets: inherit | ||
uses: rapidsai/shared-workflows/.github/workflows/[email protected] | ||
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp | ||
with: | ||
build_type: pull-request | ||
# conda-cpp-tests: | ||
# needs: [conda-cpp-build, changed-files] | ||
# secrets: inherit | ||
# uses: rapidsai/shared-workflows/.github/workflows/[email protected] | ||
# if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp | ||
# with: | ||
# build_type: pull-request | ||
conda-cpp-checks: | ||
needs: conda-cpp-build | ||
secrets: inherit | ||
|
@@ -135,10 +136,17 @@ jobs: | |
arch: "amd64" | ||
container_image: "rapidsai/ci-conda:latest" | ||
run_script: "ci/build_rust.sh" | ||
wheel-build-cuvs: | ||
wheel-build-libcuvs: | ||
needs: checks | ||
secrets: inherit | ||
uses: rapidsai/shared-workflows/.github/workflows/[email protected] | ||
with: | ||
build_type: pull-request | ||
script: ci/build_wheel_libcuvs.sh | ||
wheel-build-cuvs: | ||
needs: wheel-build-libcuvs | ||
secrets: inherit | ||
uses: rapidsai/shared-workflows/.github/workflows/[email protected] | ||
with: | ||
build_type: pull-request | ||
script: ci/build_wheel_cuvs.sh | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -313,12 +313,6 @@ if [[ ${CMAKE_TARGET} == "" ]]; then | |
CMAKE_TARGET="all" | ||
fi | ||
|
||
|
||
SKBUILD_EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS}" | ||
if [[ "${EXTRA_CMAKE_ARGS}" != *"DFIND_CUVS_CPP"* ]]; then | ||
SKBUILD_EXTRA_CMAKE_ARGS="${SKBUILD_EXTRA_CMAKE_ARGS};-DFIND_CUVS_CPP=ON" | ||
fi | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Just picking a mostly-arbitrary place on the diff to start this thread... the
I strongly suspect it's related to this PR, because I've seen it on multiple runs and because that build is succeeding on branch builds and other PRs. For example, it just passed 6 minutes ago on #596: https://github.com/rapidsai/cuvs/actions/runs/12895689316/job/35960708413?pr=596 |
||
|
||
# If clean given, run it prior to any other steps | ||
if (( ${CLEAN} == 1 )); then | ||
# If the dirs to clean are mounted dirs in a container, the | ||
|
@@ -434,7 +428,7 @@ fi | |
|
||
# Build and (optionally) install the cuvs Python package | ||
if (( ${NUMARGS} == 0 )) || hasArg python; then | ||
SKBUILD_CMAKE_ARGS="${SKBUILD_EXTRA_CMAKE_ARGS}" \ | ||
SKBUILD_CMAKE_ARGS="${EXTRA_CMAKE_ARGS}" \ | ||
SKBUILD_BUILD_OPTIONS="-j${PARALLEL_LEVEL}" \ | ||
python -m pip install --no-build-isolation --no-deps --config-settings rapidsai.disable-cuda=true ${REPODIR}/python/cuvs | ||
fi | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,20 @@ | ||
#!/bin/bash | ||
# Copyright (c) 2023-2024, NVIDIA CORPORATION. | ||
# Copyright (c) 2023-2025, NVIDIA CORPORATION. | ||
|
||
set -euo pipefail | ||
|
||
package_dir="python/cuvs" | ||
|
||
case "${RAPIDS_CUDA_VERSION}" in | ||
12.*) | ||
EXTRA_CMAKE_ARGS=";-DUSE_CUDA_MATH_WHEELS=ON" | ||
;; | ||
11.*) | ||
EXTRA_CMAKE_ARGS=";-DUSE_CUDA_MATH_WHEELS=OFF" | ||
;; | ||
esac | ||
RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen ${RAPIDS_CUDA_VERSION})" | ||
|
||
# Set up skbuild options. Enable sccache in skbuild config options | ||
export SKBUILD_CMAKE_ARGS="-DDETECT_CONDA_ENV=OFF;-DFIND_CUVS_CPP=OFF${EXTRA_CMAKE_ARGS}" | ||
# Downloads libcuvs wheels from this current build, | ||
# then ensures 'cuvs' wheel builds always use the 'libcuvs' just built in the same CI run. | ||
# | ||
# Using env variable PIP_CONSTRAINT is necessary to ensure the constraints | ||
# are used when creating the isolated build environment. | ||
RAPIDS_PY_WHEEL_NAME="libcuvs_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 cpp /tmp/libcuvs_dist | ||
echo "libcuvs-${RAPIDS_PY_CUDA_SUFFIX} @ file://$(echo /tmp/libcuvs_dist/libcuvs_*.whl)" > /tmp/constraints.txt | ||
export PIP_CONSTRAINT="/tmp/constraints.txt" | ||
|
||
ci/build_wheel.sh cuvs ${package_dir} | ||
ci/build_wheel.sh cuvs ${package_dir} python | ||
ci/validate_wheel.sh ${package_dir} final_dist |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
#!/bin/bash | ||
# Copyright (c) 2025, NVIDIA CORPORATION. | ||
|
||
set -euo pipefail | ||
|
||
package_name="libcuvs" | ||
package_dir="python/libcuvs" | ||
|
||
rapids-logger "Generating build requirements" | ||
matrix_selectors="cuda=${RAPIDS_CUDA_VERSION%.*};arch=$(arch);py=${RAPIDS_PY_VERSION};cuda_suffixed=true" | ||
|
||
rapids-dependency-file-generator \ | ||
--output requirements \ | ||
--file-key "py_build_${package_name}" \ | ||
--file-key "py_rapids_build_${package_name}" \ | ||
--matrix "${matrix_selectors}" \ | ||
| tee /tmp/requirements-build.txt | ||
|
||
rapids-logger "Installing build requirements" | ||
python -m pip install \ | ||
-v \ | ||
--prefer-binary \ | ||
-r /tmp/requirements-build.txt | ||
|
||
# build with '--no-build-isolation', for better sccache hit rate | ||
# 0 really means "add --no-build-isolation" (ref: https://github.com/pypa/pip/issues/5735) | ||
export PIP_NO_BUILD_ISOLATION=0 | ||
|
||
RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen ${RAPIDS_CUDA_VERSION})" | ||
|
||
case "${RAPIDS_CUDA_VERSION}" in | ||
12.*) | ||
EXTRA_CMAKE_ARGS="-DUSE_CUDA_MATH_WHEELS=ON" | ||
;; | ||
11.*) | ||
EXTRA_CMAKE_ARGS="-DUSE_CUDA_MATH_WHEELS=OFF" | ||
;; | ||
esac | ||
|
||
export SKBUILD_CMAKE_ARGS="${EXTRA_CMAKE_ARGS}" | ||
|
||
ci/build_wheel.sh libcuvs ${package_dir} cpp | ||
ci/validate_wheel.sh ${package_dir} final_dist libcuvs |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,5 +14,12 @@ rapids-dependency-file-generator \ | |
rapids-mamba-retry env create --yes -f env.yaml -n checks | ||
conda activate checks | ||
|
||
# get config for cmake-format checks | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The diff from this change doesn't appear to be too large, so I am okay with including it in this PR. |
||
RAPIDS_VERSION_MAJOR_MINOR="$(rapids-version-major-minor)" | ||
FORMAT_FILE_URL="https://raw.githubusercontent.com/rapidsai/rapids-cmake/branch-${RAPIDS_VERSION_MAJOR_MINOR}/cmake-format-rapids-cmake.json" | ||
export RAPIDS_CMAKE_FORMAT_FILE=/tmp/rapids_cmake_ci/cmake-formats-rapids-cmake.json | ||
mkdir -p $(dirname ${RAPIDS_CMAKE_FORMAT_FILE}) | ||
wget -O ${RAPIDS_CMAKE_FORMAT_FILE} ${FORMAT_FILE_URL} | ||
|
||
# Run pre-commit checks | ||
pre-commit run --all-files --show-diff-on-failure |
Original file line number | Diff line number | Diff line change | ||||||
---|---|---|---|---|---|---|---|---|
|
@@ -44,8 +44,9 @@ echo "${NEXT_FULL_TAG}" > VERSION | |||||||
DEPENDENCIES=( | ||||||||
dask-cuda | ||||||||
cuvs | ||||||||
pylibraft | ||||||||
libraft | ||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||
librmm | ||||||||
pylibraft | ||||||||
rmm | ||||||||
rapids-dask-dependency | ||||||||
) | ||||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,16 @@ | ||
#!/bin/bash | ||
# Copyright (c) 2023-2024, NVIDIA CORPORATION. | ||
# Copyright (c) 2023-2025, NVIDIA CORPORATION. | ||
|
||
set -euo pipefail | ||
|
||
mkdir -p ./dist | ||
RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen ${RAPIDS_CUDA_VERSION})" | ||
RAPIDS_PY_WHEEL_NAME="cuvs_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 ./dist | ||
RAPIDS_PY_WHEEL_NAME="libcuvs_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 cpp ./local-libcuvs-dep | ||
RAPIDS_PY_WHEEL_NAME="cuvs_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 python ./dist | ||
|
||
# echo to expand wildcard before adding `[extra]` requires for pip | ||
python -m pip install $(echo ./dist/cuvs*.whl)[test] | ||
python -m pip install \ | ||
./local-libcuvs-dep/libcuvs*.whl \ | ||
"$(echo ./dist/cuvs*.whl)[test]" | ||
|
||
python -m pytest ./python/cuvs/cuvs/test |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.