Skip to content

Commit 7640f28

Browse files
committed
Merge branch 'branch-25.02' into remove_mean_sample
2 parents 5c667af + 85fd74d commit 7640f28

File tree

261 files changed

+940
-520
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

261 files changed

+940
-520
lines changed

.github/workflows/build.yaml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,30 @@ jobs:
6666
node_type: "gpu-v100-latest-1"
6767
run_script: "ci/build_docs.sh"
6868
sha: ${{ inputs.sha }}
69+
wheel-build-libraft:
70+
secrets: inherit
71+
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02
72+
with:
73+
build_type: ${{ inputs.build_type || 'branch' }}
74+
branch: ${{ inputs.branch }}
75+
sha: ${{ inputs.sha }}
76+
date: ${{ inputs.date }}
77+
script: ci/build_wheel_libraft.sh
78+
# build for every combination of arch and CUDA version, but only for the latest Python
79+
matrix_filter: group_by([.ARCH, (.CUDA_VER|split(".")|map(tonumber)|.[0])]) | map(max_by(.PY_VER|split(".")|map(tonumber)))
80+
wheel-publish-libraft:
81+
needs: wheel-build-libraft
82+
secrets: inherit
83+
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-25.02
84+
with:
85+
build_type: ${{ inputs.build_type || 'branch' }}
86+
branch: ${{ inputs.branch }}
87+
sha: ${{ inputs.sha }}
88+
date: ${{ inputs.date }}
89+
package-name: libraft
90+
package-type: cpp
6991
wheel-build-pylibraft:
92+
needs: wheel-build-libraft
7093
secrets: inherit
7194
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02
7295
with:
@@ -85,7 +108,9 @@ jobs:
85108
sha: ${{ inputs.sha }}
86109
date: ${{ inputs.date }}
87110
package-name: pylibraft
111+
package-type: python
88112
wheel-build-raft-dask:
113+
needs: wheel-build-libraft
89114
secrets: inherit
90115
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02
91116
with:
@@ -104,3 +129,4 @@ jobs:
104129
sha: ${{ inputs.sha }}
105130
date: ${{ inputs.date }}
106131
package-name: raft_dask
132+
package-type: python

.github/workflows/pr.yaml

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ jobs:
2121
- conda-python-build
2222
- conda-python-tests
2323
- docs-build
24+
- wheel-build-libraft
2425
- wheel-build-pylibraft
2526
- wheel-tests-pylibraft
2627
- wheel-build-raft-dask
@@ -116,10 +117,22 @@ jobs:
116117
arch: "amd64"
117118
container_image: "rapidsai/ci-conda:latest"
118119
run_script: "ci/build_docs.sh"
119-
wheel-build-pylibraft:
120+
wheel-build-libraft:
120121
needs: checks
121122
secrets: inherit
122123
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02
124+
with:
125+
build_type: pull-request
126+
branch: ${{ inputs.branch }}
127+
sha: ${{ inputs.sha }}
128+
date: ${{ inputs.date }}
129+
script: ci/build_wheel_libraft.sh
130+
# build for every combination of arch and CUDA version, but only for the latest Python
131+
matrix_filter: group_by([.ARCH, (.CUDA_VER|split(".")|map(tonumber)|.[0])]) | map(max_by(.PY_VER|split(".")|map(tonumber)))
132+
wheel-build-pylibraft:
133+
needs: [checks, wheel-build-libraft]
134+
secrets: inherit
135+
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02
123136
with:
124137
build_type: pull-request
125138
script: ci/build_wheel_pylibraft.sh
@@ -132,7 +145,7 @@ jobs:
132145
build_type: pull-request
133146
script: ci/test_wheel_pylibraft.sh
134147
wheel-build-raft-dask:
135-
needs: wheel-tests-pylibraft
148+
needs: [checks, wheel-build-libraft]
136149
secrets: inherit
137150
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02
138151
with:

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ repos:
8383
exclude: .*/thirdparty/.*
8484
- id: include-check
8585
name: include-check
86-
entry: python ./cpp/scripts/include_checker.py cpp/bench cpp/include cpp/test
86+
entry: python ./cpp/scripts/include_checker.py cpp/bench cpp/include cpp/tests
8787
pass_filenames: false
8888
language: python
8989
additional_dependencies: [gitpython]

build.sh

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -347,13 +347,8 @@ if [[ ${CMAKE_TARGET} == "" ]]; then
347347
CMAKE_TARGET="all"
348348
fi
349349

350-
# Append `-DFIND_RAFT_CPP=ON` to EXTRA_CMAKE_ARGS unless a user specified the option.
351-
SKBUILD_EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS}"
352-
if [[ "${EXTRA_CMAKE_ARGS}" != *"DFIND_RAFT_CPP"* ]]; then
353-
SKBUILD_EXTRA_CMAKE_ARGS="${SKBUILD_EXTRA_CMAKE_ARGS} -DFIND_RAFT_CPP=ON"
354-
fi
355350
# Replace spaces with semicolons in SKBUILD_EXTRA_CMAKE_ARGS
356-
SKBUILD_EXTRA_CMAKE_ARGS=$(echo ${SKBUILD_EXTRA_CMAKE_ARGS} | sed 's/ /;/g')
351+
SKBUILD_EXTRA_CMAKE_ARGS=$(echo ${EXTRA_CMAKE_ARGS} | sed 's/ /;/g')
357352

358353
# If clean given, run it prior to any other steps
359354
if (( ${CLEAN} == 1 )); then

ci/build_wheel.sh

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ set -euo pipefail
55

66
package_name=$1
77
package_dir=$2
8+
package_type=$3
89
underscore_package_name=$(echo "${package_name}" | tr "-" "_")
910

1011
# Clear out system ucx files to ensure that we're getting ucx from the wheel.
@@ -20,24 +21,21 @@ rapids-generate-version > ./VERSION
2021

2122
cd "${package_dir}"
2223

23-
case "${RAPIDS_CUDA_VERSION}" in
24-
12.*)
25-
EXCLUDE_ARGS=(
26-
--exclude "libcublas.so.12"
27-
--exclude "libcublasLt.so.12"
28-
--exclude "libcurand.so.10"
29-
--exclude "libcusolver.so.11"
30-
--exclude "libcusparse.so.12"
31-
--exclude "libnvJitLink.so.12"
32-
--exclude "libucp.so.0"
24+
EXCLUDE_ARGS=(
25+
--exclude "libcublas.so.*"
26+
--exclude "libcublasLt.so.*"
27+
--exclude "libcurand.so.*"
28+
--exclude "libcusolver.so.*"
29+
--exclude "libcusparse.so.*"
30+
--exclude "libnvJitLink.so.*"
31+
--exclude "libucp.so.*"
32+
)
33+
34+
if [[ ${package_name} != "libraft" ]]; then
35+
EXCLUDE_ARGS+=(
36+
--exclude "libraft.so"
3337
)
34-
;;
35-
11.*)
36-
EXCLUDE_ARGS=(
37-
--exclude "libucp.so.0"
38-
)
39-
;;
40-
esac
38+
fi
4139

4240
sccache --zero-stats
4341

@@ -55,4 +53,4 @@ sccache --show-adv-stats
5553
mkdir -p final_dist
5654
python -m auditwheel repair -w final_dist "${EXCLUDE_ARGS[@]}" dist/*
5755

58-
RAPIDS_PY_WHEEL_NAME="${underscore_package_name}_${RAPIDS_PY_CUDA_SUFFIX}" rapids-upload-wheels-to-s3 python final_dist
56+
RAPIDS_PY_WHEEL_NAME="${underscore_package_name}_${RAPIDS_PY_CUDA_SUFFIX}" rapids-upload-wheels-to-s3 ${package_type} final_dist

ci/build_wheel_libraft.sh

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/bin/bash
2+
# Copyright (c) 2024, NVIDIA CORPORATION.
3+
4+
set -euo pipefail
5+
6+
package_name="libraft"
7+
package_dir="python/libraft"
8+
9+
rapids-logger "Generating build requirements"
10+
matrix_selectors="cuda=${RAPIDS_CUDA_VERSION%.*};arch=$(arch);py=${RAPIDS_PY_VERSION};cuda_suffixed=true"
11+
12+
rapids-dependency-file-generator \
13+
--output requirements \
14+
--file-key "py_build_${package_name}" \
15+
--file-key "py_rapids_build_${package_name}" \
16+
--matrix "${matrix_selectors}" \
17+
| tee /tmp/requirements-build.txt
18+
19+
rapids-logger "Installing build requirements"
20+
python -m pip install \
21+
-v \
22+
--prefer-binary \
23+
-r /tmp/requirements-build.txt
24+
25+
# build with '--no-build-isolation', for better sccache hit rate
26+
# 0 really means "add --no-build-isolation" (ref: https://github.com/pypa/pip/issues/5735)
27+
export PIP_NO_BUILD_ISOLATION=0
28+
29+
RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen ${RAPIDS_CUDA_VERSION})"
30+
31+
ci/build_wheel.sh libraft ${package_dir} cpp
32+
ci/validate_wheel.sh ${package_dir} final_dist libraft

ci/build_wheel_pylibraft.sh

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,16 @@ set -euo pipefail
55

66
package_dir="python/pylibraft"
77

8-
case "${RAPIDS_CUDA_VERSION}" in
9-
12.*)
10-
EXTRA_CMAKE_ARGS=";-DUSE_CUDA_MATH_WHEELS=ON"
11-
;;
12-
11.*)
13-
EXTRA_CMAKE_ARGS=";-DUSE_CUDA_MATH_WHEELS=OFF"
14-
;;
15-
esac
8+
RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen ${RAPIDS_CUDA_VERSION})"
169

17-
# Set up skbuild options. Enable sccache in skbuild config options
18-
export SKBUILD_CMAKE_ARGS="-DDETECT_CONDA_ENV=OFF;-DFIND_RAFT_CPP=OFF${EXTRA_CMAKE_ARGS}"
10+
# Downloads libraft wheels from this current build,
11+
# then ensures 'pylibraft' wheel builds always use the 'libraft' just built in the same CI run.
12+
#
13+
# Using env variable PIP_CONSTRAINT is necessary to ensure the constraints
14+
# are used when creating the isolated build environment.
15+
RAPIDS_PY_WHEEL_NAME="libraft_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 cpp /tmp/libraft_dist
16+
echo "libraft-${RAPIDS_PY_CUDA_SUFFIX} @ file://$(echo /tmp/libraft_dist/libraft_*.whl)" > /tmp/constraints.txt
17+
export PIP_CONSTRAINT="/tmp/constraints.txt"
1918

20-
ci/build_wheel.sh pylibraft ${package_dir}
19+
ci/build_wheel.sh pylibraft ${package_dir} python
2120
ci/validate_wheel.sh ${package_dir} final_dist pylibraft

ci/build_wheel_raft_dask.sh

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,16 @@ set -euo pipefail
55

66
package_dir="python/raft-dask"
77

8-
# Set up skbuild options. Enable sccache in skbuild config options
9-
export SKBUILD_CMAKE_ARGS="-DDETECT_CONDA_ENV=OFF;-DFIND_RAFT_CPP=OFF"
8+
RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen ${RAPIDS_CUDA_VERSION})"
109

11-
ci/build_wheel.sh raft-dask ${package_dir}
10+
# Downloads libraft wheels from this current build,
11+
# then ensures 'raft-dask' wheel builds always use the 'libraft' just built in the same CI run.
12+
#
13+
# Using env variable PIP_CONSTRAINT is necessary to ensure the constraints
14+
# are used when creating the isolated build environment.
15+
RAPIDS_PY_WHEEL_NAME="libraft_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 cpp /tmp/libraft_dist
16+
echo "libraft-${RAPIDS_PY_CUDA_SUFFIX} @ file://$(echo /tmp/libraft_dist/libraft_*.whl)" > /tmp/constraints.txt
17+
export PIP_CONSTRAINT="/tmp/constraints.txt"
18+
19+
ci/build_wheel.sh raft-dask ${package_dir} python
1220
ci/validate_wheel.sh ${package_dir} final_dist raft-dask

ci/check_style.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,12 @@ rapids-dependency-file-generator \
1414
rapids-mamba-retry env create --yes -f env.yaml -n checks
1515
conda activate checks
1616

17+
# get config for cmake-format checks
18+
RAPIDS_VERSION_MAJOR_MINOR="$(rapids-version-major-minor)"
19+
FORMAT_FILE_URL="https://raw.githubusercontent.com/rapidsai/rapids-cmake/branch-${RAPIDS_VERSION_MAJOR_MINOR}/cmake-format-rapids-cmake.json"
20+
export RAPIDS_CMAKE_FORMAT_FILE=/tmp/rapids_cmake_ci/cmake-formats-rapids-cmake.json
21+
mkdir -p $(dirname ${RAPIDS_CMAKE_FORMAT_FILE})
22+
wget -O ${RAPIDS_CMAKE_FORMAT_FILE} ${FORMAT_FILE_URL}
23+
1724
# Run pre-commit checks
1825
pre-commit run --all-files --show-diff-on-failure

ci/release/update-version.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ echo "${NEXT_FULL_TAG}" > VERSION
4343

4444
DEPENDENCIES=(
4545
dask-cuda
46+
libraft
47+
librmm
4648
pylibraft
4749
rmm
4850
rapids-dask-dependency

ci/run_pylibraft_pytests.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ set -euo pipefail
66
# Support invoking run_pylibraft_pytests.sh outside the script directory
77
cd "$(dirname "$(realpath "${BASH_SOURCE[0]}")")"/../python/pylibraft/pylibraft
88

9-
pytest --cache-clear "$@" test
9+
pytest --cache-clear "$@" tests

ci/run_raft_dask_pytests.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ set -euo pipefail
66
# Support invoking run_raft_dask_pytests.sh outside the script directory
77
cd "$(dirname "$(realpath "${BASH_SOURCE[0]}")")"/../python/raft-dask/raft_dask
88

9-
pytest --cache-clear --import-mode=append "$@" test
9+
pytest --cache-clear --import-mode=append "$@" tests

ci/test_wheel_pylibraft.sh

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@ set -euo pipefail
55

66
mkdir -p ./dist
77
RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen ${RAPIDS_CUDA_VERSION})"
8-
RAPIDS_PY_WHEEL_NAME="pylibraft_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 ./dist
8+
RAPIDS_PY_WHEEL_NAME="libraft_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 cpp ./local-libraft-dep
9+
RAPIDS_PY_WHEEL_NAME="pylibraft_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 python ./dist
10+
911

1012
# echo to expand wildcard before adding `[extra]` requires for pip
11-
python -m pip install $(echo ./dist/pylibraft*.whl)[test]
13+
python -m pip install \
14+
./local-libraft-dep/libraft*.whl \
15+
"$(echo ./dist/pylibraft*.whl)[test]"
1216

13-
python -m pytest ./python/pylibraft/pylibraft/test
17+
python -m pytest ./python/pylibraft/pylibraft/tests

ci/test_wheel_raft_dask.sh

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@ set -euo pipefail
55

66
mkdir -p ./dist
77
RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen ${RAPIDS_CUDA_VERSION})"
8-
RAPIDS_PY_WHEEL_NAME="raft_dask_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 ./dist
9-
10-
# Download the pylibraft built in the previous step
11-
RAPIDS_PY_WHEEL_NAME="pylibraft_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 ./local-pylibraft-dep
8+
RAPIDS_PY_WHEEL_NAME="libraft_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 cpp ./local-libraft-dep
9+
RAPIDS_PY_WHEEL_NAME="pylibraft_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 python ./local-pylibraft-dep
10+
RAPIDS_PY_WHEEL_NAME="raft_dask_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 python ./dist
1211

1312
# echo to expand wildcard before adding `[extra]` requires for pip
1413
python -m pip install -v \
14+
./local-libraft-dep/libraft*.whl \
1515
./local-pylibraft-dep/pylibraft*.whl \
1616
"$(echo ./dist/raft_dask_${RAPIDS_PY_CUDA_SUFFIX}*.whl)[test]"
1717

18-
test_dir="python/raft-dask/raft_dask/test"
18+
test_dir="python/raft-dask/raft_dask/tests"
1919

2020
rapids-logger "pytest raft-dask"
2121
python -m pytest --import-mode=append ${test_dir}

ci/validate_wheel.sh

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,12 @@ package_name=$3
99

1010
RAPIDS_CUDA_MAJOR="${RAPIDS_CUDA_VERSION%%.*}"
1111

12-
# some packages are much larger on CUDA 11 than on CUDA 12
13-
if [[ "${package_name}" == "raft-dask" ]]; then
14-
PYDISTCHECK_ARGS=(
15-
--max-allowed-size-compressed '200M'
16-
)
17-
elif [[ "${package_name}" == "pylibraft" ]]; then
18-
if [[ "${RAPIDS_CUDA_MAJOR}" == "11" ]]; then
19-
PYDISTCHECK_ARGS=(
20-
--max-allowed-size-compressed '600M'
21-
)
22-
else
23-
PYDISTCHECK_ARGS=(
24-
--max-allowed-size-compressed '100M'
25-
)
26-
fi
27-
else
28-
echo "Unsupported package name: ${package_name}"
29-
exit 1
30-
fi
31-
3212
cd "${package_dir}"
3313

3414
rapids-logger "validate packages with 'pydistcheck'"
3515

3616
pydistcheck \
3717
--inspect \
38-
"${PYDISTCHECK_ARGS[@]}" \
3918
"$(echo ${wheel_dir_relative_path}/*.whl)"
4019

4120
rapids-logger "validate packages with 'twine'"

conda/environments/all_cuda-118_arch-aarch64.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,6 @@ dependencies:
5555
- spdlog>=1.14.1,<1.15
5656
- sphinx-copybutton
5757
- sphinx-markdown-tables
58-
- sysroot_linux-aarch64==2.17
58+
- sysroot_linux-aarch64==2.28
5959
- ucx-py==0.42.*,>=0.0.0a0
6060
name: all_cuda-118_arch-aarch64

conda/environments/all_cuda-118_arch-x86_64.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,6 @@ dependencies:
5555
- spdlog>=1.14.1,<1.15
5656
- sphinx-copybutton
5757
- sphinx-markdown-tables
58-
- sysroot_linux-64==2.17
58+
- sysroot_linux-64==2.28
5959
- ucx-py==0.42.*,>=0.0.0a0
6060
name: all_cuda-118_arch-x86_64

conda/environments/all_cuda-125_arch-aarch64.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ dependencies:
2424
- dask-cuda==25.2.*,>=0.0.0a0
2525
- distributed-ucxx==0.42.*,>=0.0.0a0
2626
- doxygen>=1.8.20
27-
- gcc_linux-aarch64=11.*
27+
- gcc_linux-aarch64=13.*
2828
- graphviz
2929
- ipython
3030
- libcublas-dev
@@ -51,6 +51,6 @@ dependencies:
5151
- spdlog>=1.14.1,<1.15
5252
- sphinx-copybutton
5353
- sphinx-markdown-tables
54-
- sysroot_linux-aarch64==2.17
54+
- sysroot_linux-aarch64==2.28
5555
- ucx-py==0.42.*,>=0.0.0a0
5656
name: all_cuda-125_arch-aarch64

0 commit comments

Comments
 (0)