From dc5279de1104c93d1beb0dc12e484352753399e8 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Thu, 23 Jul 2026 13:14:52 -0500 Subject: [PATCH 01/11] fix: install cufile with libcudf wheels --- ci/test_wheel_cudf.sh | 15 ++++++++++++--- dependencies.yaml | 2 ++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ci/test_wheel_cudf.sh b/ci/test_wheel_cudf.sh index 8d4b8c5ba31c..d87f88f21e17 100755 --- a/ci/test_wheel_cudf.sh +++ b/ci/test_wheel_cudf.sh @@ -1,5 +1,5 @@ #!/bin/bash -# SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION. +# SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 set -euo pipefail @@ -13,7 +13,7 @@ LIBCUDF_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_c PYLIBCUDF_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python pylibcudf cudf --stable --cuda "$RAPIDS_CUDA_VERSION")") CUDF_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cudf cudf --stable --cuda "$RAPIDS_CUDA_VERSION")") -rapids-logger "Install pylibcudf and its basic dependencies in a virtual environment" +rapids-logger "Install libcudf and verify its runtime dependencies in a virtual environment" # generate constraints (possibly pinning to oldest support versions of dependencies) rapids-generate-pip-constraints py_test_cudf "${PIP_CONSTRAINT}" @@ -26,6 +26,16 @@ mkdir -p "${RAPIDS_TESTS_DIR}" python -m venv env . env/bin/activate +# Verify libcudf's runtime dependencies before pylibcudf's test extra can install them. +rapids-pip-retry install \ + -v \ + --prefer-binary \ + --constraint "${PIP_CONSTRAINT}" \ + "$(echo "${LIBCUDF_WHEELHOUSE}"/libcudf_"${RAPIDS_PY_CUDA_SUFFIX}"*.whl)" +python -c "import libcudf; libcudf.load_library()" + +rapids-logger "Install pylibcudf and its basic dependencies" + # notes: # # * echo to expand wildcard before adding `[test]` requires for pip @@ -36,7 +46,6 @@ rapids-pip-retry install \ -v \ --prefer-binary \ --constraint "${PIP_CONSTRAINT}" \ - "$(echo "${LIBCUDF_WHEELHOUSE}"/libcudf_"${RAPIDS_PY_CUDA_SUFFIX}"*.whl)" \ "$(echo "${PYLIBCUDF_WHEELHOUSE}"/pylibcudf_"${RAPIDS_PY_CUDA_SUFFIX}"*.whl)[test]" rapids-logger "pytest pylibcudf without optional dependencies" diff --git a/dependencies.yaml b/dependencies.yaml index 5eb907f5649a..206a6874aa67 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -1416,6 +1416,8 @@ dependencies: cuda_suffixed: "true" packages: - libkvikio-cu12==26.10.*,>=0.0.0a0 + # cuda-toolkit before 12.6.3 does not have the `cufile` extra. + - nvidia-cufile-cu12 - matrix: cuda: "13.*" cuda_suffixed: "true" From a2a108862584e72d10ce12aefe458121d4ca428e Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Thu, 23 Jul 2026 13:23:47 -0500 Subject: [PATCH 02/11] fix: install CUDA toolkit with libcudf wheels --- dependencies.yaml | 33 ++++++++++++--------------------- 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/dependencies.yaml b/dependencies.yaml index 206a6874aa67..034bd46a1a8d 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -829,6 +829,18 @@ dependencies: - matrix: use_cuda_wheels: "false" packages: + - matrix: + cuda: "12.*" + cuda_suffixed: "true" + use_cuda_wheels: "true" + packages: + - cuda-toolkit[nvcc,nvrtc]==12.* + - matrix: + cuda: "13.*" + cuda_suffixed: "true" + use_cuda_wheels: "true" + packages: + - cuda-toolkit[nvcc,nvrtc]==13.* # We always want nvJitLink >= whatever minor version was available in the build environment # nvJitLink tends to follow the CTK's minor versions, but check at https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html # @@ -963,27 +975,6 @@ dependencies: - nvtx>=0.2.1 - packaging - rich - specific: - - output_types: [requirements, pyproject] - matrices: - # if use_cuda_wheels=false is provided, do not add dependencies on any CUDA wheels - # (e.g. for DLFW and pip devcontainers) - - matrix: - use_cuda_wheels: "false" - packages: - - matrix: - cuda: "12.*" - cuda_suffixed: "true" - use_cuda_wheels: "true" - packages: - - cuda-toolkit[nvcc,nvrtc]==12.* - - matrix: - cuda: "13.*" - cuda_suffixed: "true" - use_cuda_wheels: "true" - packages: - - cuda-toolkit[nvcc,nvrtc]==13.* - - {matrix: null, packages: []} run_cudf_polars: common: - output_types: [conda, requirements, pyproject] From a57638b30d4b32886403054187b1a8523c07f264 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Thu, 23 Jul 2026 13:24:30 -0500 Subject: [PATCH 03/11] test: retain libcudf wheel installation --- ci/test_wheel_cudf.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/test_wheel_cudf.sh b/ci/test_wheel_cudf.sh index d87f88f21e17..821643359119 100755 --- a/ci/test_wheel_cudf.sh +++ b/ci/test_wheel_cudf.sh @@ -46,6 +46,7 @@ rapids-pip-retry install \ -v \ --prefer-binary \ --constraint "${PIP_CONSTRAINT}" \ + "$(echo "${LIBCUDF_WHEELHOUSE}"/libcudf_"${RAPIDS_PY_CUDA_SUFFIX}"*.whl)" \ "$(echo "${PYLIBCUDF_WHEELHOUSE}"/pylibcudf_"${RAPIDS_PY_CUDA_SUFFIX}"*.whl)[test]" rapids-logger "pytest pylibcudf without optional dependencies" From 683e850dae2f0edd4b208b9f104860dc31642260 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Thu, 23 Jul 2026 13:29:49 -0500 Subject: [PATCH 04/11] fix: install CUDA runtime dependencies with libcudf --- dependencies.yaml | 25 +++++++++---------------- python/libcudf/pyproject.toml | 2 ++ 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/dependencies.yaml b/dependencies.yaml index 034bd46a1a8d..37f7942140bc 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -835,30 +835,25 @@ dependencies: use_cuda_wheels: "true" packages: - cuda-toolkit[nvcc,nvrtc]==12.* - - matrix: - cuda: "13.*" - cuda_suffixed: "true" - use_cuda_wheels: "true" - packages: - - cuda-toolkit[nvcc,nvrtc]==13.* - # We always want nvJitLink >= whatever minor version was available in the build environment - # nvJitLink tends to follow the CTK's minor versions, but check at https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html - # - # ref: https://github.com/rapidsai/cudf/pull/20873 - - matrix: - cuda: "12.9" - use_cuda_wheels: "true" - packages: + # cuda-toolkit before 12.6.3 does not have the `cufile` extra. + - nvidia-cufile-cu12 + # We always want nvJitLink >= whatever minor version was available in the build environment + # nvJitLink tends to follow the CTK's minor versions, but check at https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html + # + # ref: https://github.com/rapidsai/cudf/pull/20873 - nvidia-nvjitlink-cu12>=12.9,<13 - matrix: cuda: "13.*" + cuda_suffixed: "true" use_cuda_wheels: "true" packages: + - cuda-toolkit[cufile,nvcc,nvrtc]==13.* - &nvjitlink_cu13 nvidia-nvjitlink>=13.3,<14 # if no matching matrix selectors passed, list the CUDA 13 requirement # (just as a source of documentation, as this populates pyproject.toml in source control) - matrix: packages: + - cuda-toolkit[cufile,nvcc,nvrtc]==13.* - *nvjitlink_cu13 cuda_static: common: @@ -1407,8 +1402,6 @@ dependencies: cuda_suffixed: "true" packages: - libkvikio-cu12==26.10.*,>=0.0.0a0 - # cuda-toolkit before 12.6.3 does not have the `cufile` extra. - - nvidia-cufile-cu12 - matrix: cuda: "13.*" cuda_suffixed: "true" diff --git a/python/libcudf/pyproject.toml b/python/libcudf/pyproject.toml index c1277f1489a4..dcd5e5f5aee9 100644 --- a/python/libcudf/pyproject.toml +++ b/python/libcudf/pyproject.toml @@ -26,6 +26,7 @@ classifiers = [ "Environment :: GPU :: NVIDIA CUDA", ] dependencies = [ + "cuda-toolkit[cufile,nvcc,nvrtc]==13.*", "libkvikio==26.10.*,>=0.0.0a0", "librmm==26.10.*,>=0.0.0a0", "nvidia-libnvcomp==5.2.0.13", @@ -70,6 +71,7 @@ dependencies-file = "../../dependencies.yaml" matrix-entry = "cuda_suffixed=true;use_cuda_wheels=true" requires = [ "cmake>=4.0", + "cuda-toolkit[cufile,nvcc,nvrtc]==13.*", "libkvikio==26.10.*,>=0.0.0a0", "librmm==26.10.*,>=0.0.0a0", "ninja", From 96dd9f6bfad39d8007b7d84c694fdeeafeb59e52 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Thu, 23 Jul 2026 13:31:55 -0500 Subject: [PATCH 05/11] test: isolate libcudf wheel smoke test --- ci/test_wheel_cudf.sh | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ci/test_wheel_cudf.sh b/ci/test_wheel_cudf.sh index 821643359119..afe9a141f62a 100755 --- a/ci/test_wheel_cudf.sh +++ b/ci/test_wheel_cudf.sh @@ -22,17 +22,20 @@ RESULTS_DIR=${RAPIDS_TESTS_DIR:-"$(mktemp -d)"} RAPIDS_TESTS_DIR=${RAPIDS_TESTS_DIR:-"${RESULTS_DIR}/test-results"}/ mkdir -p "${RAPIDS_TESTS_DIR}" -# To test pylibcudf without its optional dependencies, we create a virtual environment -python -m venv env -. env/bin/activate +python -m venv libcudf-env +. libcudf-env/bin/activate -# Verify libcudf's runtime dependencies before pylibcudf's test extra can install them. rapids-pip-retry install \ -v \ --prefer-binary \ --constraint "${PIP_CONSTRAINT}" \ "$(echo "${LIBCUDF_WHEELHOUSE}"/libcudf_"${RAPIDS_PY_CUDA_SUFFIX}"*.whl)" python -c "import libcudf; libcudf.load_library()" +deactivate + +# To test pylibcudf without its optional dependencies, we create a virtual environment +python -m venv env +. env/bin/activate rapids-logger "Install pylibcudf and its basic dependencies" From 998e8d74b190ae16c4f1b95965f2834d9210ac11 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Thu, 23 Jul 2026 13:33:49 -0500 Subject: [PATCH 06/11] test: name pylibcudf wheel test environment --- ci/test_wheel_cudf.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/test_wheel_cudf.sh b/ci/test_wheel_cudf.sh index afe9a141f62a..805a9d4101cc 100755 --- a/ci/test_wheel_cudf.sh +++ b/ci/test_wheel_cudf.sh @@ -34,8 +34,8 @@ python -c "import libcudf; libcudf.load_library()" deactivate # To test pylibcudf without its optional dependencies, we create a virtual environment -python -m venv env -. env/bin/activate +python -m venv pylibcudf-env +. pylibcudf-env/bin/activate rapids-logger "Install pylibcudf and its basic dependencies" From 791dc8f35fe10d9ae302b45298367a85a6319611 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Thu, 23 Jul 2026 14:15:23 -0500 Subject: [PATCH 07/11] fix: narrow libcudf CUDA wheel dependencies --- dependencies.yaml | 8 +++----- python/libcudf/pyproject.toml | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/dependencies.yaml b/dependencies.yaml index 37f7942140bc..d176947ed843 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -834,9 +834,7 @@ dependencies: cuda_suffixed: "true" use_cuda_wheels: "true" packages: - - cuda-toolkit[nvcc,nvrtc]==12.* - # cuda-toolkit before 12.6.3 does not have the `cufile` extra. - - nvidia-cufile-cu12 + - cuda-toolkit[nvrtc]==12.* # We always want nvJitLink >= whatever minor version was available in the build environment # nvJitLink tends to follow the CTK's minor versions, but check at https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html # @@ -847,13 +845,13 @@ dependencies: cuda_suffixed: "true" use_cuda_wheels: "true" packages: - - cuda-toolkit[cufile,nvcc,nvrtc]==13.* + - cuda-toolkit[nvrtc]==13.* - &nvjitlink_cu13 nvidia-nvjitlink>=13.3,<14 # if no matching matrix selectors passed, list the CUDA 13 requirement # (just as a source of documentation, as this populates pyproject.toml in source control) - matrix: packages: - - cuda-toolkit[cufile,nvcc,nvrtc]==13.* + - cuda-toolkit[nvrtc]==13.* - *nvjitlink_cu13 cuda_static: common: diff --git a/python/libcudf/pyproject.toml b/python/libcudf/pyproject.toml index dcd5e5f5aee9..36cbebdd248b 100644 --- a/python/libcudf/pyproject.toml +++ b/python/libcudf/pyproject.toml @@ -26,7 +26,7 @@ classifiers = [ "Environment :: GPU :: NVIDIA CUDA", ] dependencies = [ - "cuda-toolkit[cufile,nvcc,nvrtc]==13.*", + "cuda-toolkit[nvrtc]==13.*", "libkvikio==26.10.*,>=0.0.0a0", "librmm==26.10.*,>=0.0.0a0", "nvidia-libnvcomp==5.2.0.13", @@ -71,7 +71,7 @@ dependencies-file = "../../dependencies.yaml" matrix-entry = "cuda_suffixed=true;use_cuda_wheels=true" requires = [ "cmake>=4.0", - "cuda-toolkit[cufile,nvcc,nvrtc]==13.*", + "cuda-toolkit[nvrtc]==13.*", "libkvikio==26.10.*,>=0.0.0a0", "librmm==26.10.*,>=0.0.0a0", "ninja", From 4a612fbf157e4ecab72926812a55e8617bcdf77b Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Thu, 23 Jul 2026 15:03:04 -0500 Subject: [PATCH 08/11] test: isolate libcudf-streaming wheel smoke test --- ci/test_wheel_cudf_streaming.sh | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/ci/test_wheel_cudf_streaming.sh b/ci/test_wheel_cudf_streaming.sh index 0a1210f9b04c..65b3fba04b47 100755 --- a/ci/test_wheel_cudf_streaming.sh +++ b/ci/test_wheel_cudf_streaming.sh @@ -1,5 +1,5 @@ #!/bin/bash -# SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION. +# SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 set -euo pipefail @@ -17,6 +17,19 @@ PYLIBCUDF_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel # generate constraints (possibly pinning to oldest support versions of dependencies) rapids-generate-pip-constraints py_test_cudf_streaming "${PIP_CONSTRAINT}" +rapids-logger "Install libcudf_streaming and verify its runtime dependencies in a virtual environment" + +python -m venv libcudf-streaming-env +. libcudf-streaming-env/bin/activate + +rapids-pip-retry install \ + -v \ + --prefer-binary \ + --constraint "${PIP_CONSTRAINT}" \ + "$(echo "${LIBCUDF_STREAMING_WHEELHOUSE}"/libcudf_streaming_"${RAPIDS_PY_CUDA_SUFFIX}"*.whl)" +python -c "import libcudf_streaming; libcudf_streaming.load_library()" +deactivate + rapids-logger "Install cudf_streaming and its dependencies" rapids-pip-retry install \ From 84840fe1a92760b5f8b585383a8386bc11948076 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Thu, 23 Jul 2026 16:32:09 -0500 Subject: [PATCH 09/11] fix: select CUDA wheel dependencies for libcudf builds --- ci/build_wheel_libcudf.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/build_wheel_libcudf.sh b/ci/build_wheel_libcudf.sh index b087f1b50b26..c5a007399f8d 100755 --- a/ci/build_wheel_libcudf.sh +++ b/ci/build_wheel_libcudf.sh @@ -1,5 +1,5 @@ #!/bin/bash -# SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION. +# SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 set -euo pipefail @@ -15,7 +15,7 @@ rapids-dependency-file-generator \ --output requirements \ --file-key "py_build_${package_name}" \ --file-key "py_rapids_build_${package_name}" \ - --matrix "cuda=${RAPIDS_CUDA_VERSION%.*};arch=$(arch);py=${RAPIDS_PY_VERSION};cuda_suffixed=true" \ + --matrix "cuda=${RAPIDS_CUDA_VERSION%.*};arch=$(arch);py=${RAPIDS_PY_VERSION};cuda_suffixed=true;use_cuda_wheels=true" \ | tee /tmp/requirements-build.txt rapids-logger "Installing build requirements" From 9d7fdd5b659f6d9c445781759cb8e225058fa529 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Fri, 24 Jul 2026 15:57:25 -0500 Subject: [PATCH 10/11] fix: use PR libcudf wheel in streaming smoke test --- ci/test_wheel_cudf_streaming.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/test_wheel_cudf_streaming.sh b/ci/test_wheel_cudf_streaming.sh index 65b3fba04b47..928bf5c32a6f 100755 --- a/ci/test_wheel_cudf_streaming.sh +++ b/ci/test_wheel_cudf_streaming.sh @@ -26,7 +26,8 @@ rapids-pip-retry install \ -v \ --prefer-binary \ --constraint "${PIP_CONSTRAINT}" \ - "$(echo "${LIBCUDF_STREAMING_WHEELHOUSE}"/libcudf_streaming_"${RAPIDS_PY_CUDA_SUFFIX}"*.whl)" + "$(echo "${LIBCUDF_STREAMING_WHEELHOUSE}"/libcudf_streaming_"${RAPIDS_PY_CUDA_SUFFIX}"*.whl)" \ + "$(echo "${LIBCUDF_WHEELHOUSE}"/libcudf_"${RAPIDS_PY_CUDA_SUFFIX}"*.whl)" python -c "import libcudf_streaming; libcudf_streaming.load_library()" deactivate From 9dae08dcc7ec276fdb3d42b0b8144fd5c3ac650f Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Fri, 24 Jul 2026 16:53:12 -0500 Subject: [PATCH 11/11] test: assert native library loads --- ci/test_wheel_cudf.sh | 2 +- ci/test_wheel_cudf_streaming.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/test_wheel_cudf.sh b/ci/test_wheel_cudf.sh index 805a9d4101cc..deff898d4b9e 100755 --- a/ci/test_wheel_cudf.sh +++ b/ci/test_wheel_cudf.sh @@ -30,7 +30,7 @@ rapids-pip-retry install \ --prefer-binary \ --constraint "${PIP_CONSTRAINT}" \ "$(echo "${LIBCUDF_WHEELHOUSE}"/libcudf_"${RAPIDS_PY_CUDA_SUFFIX}"*.whl)" -python -c "import libcudf; libcudf.load_library()" +python -c "import libcudf; assert libcudf.load_library() is not None" deactivate # To test pylibcudf without its optional dependencies, we create a virtual environment diff --git a/ci/test_wheel_cudf_streaming.sh b/ci/test_wheel_cudf_streaming.sh index 928bf5c32a6f..8f2ec61323ed 100755 --- a/ci/test_wheel_cudf_streaming.sh +++ b/ci/test_wheel_cudf_streaming.sh @@ -28,7 +28,7 @@ rapids-pip-retry install \ --constraint "${PIP_CONSTRAINT}" \ "$(echo "${LIBCUDF_STREAMING_WHEELHOUSE}"/libcudf_streaming_"${RAPIDS_PY_CUDA_SUFFIX}"*.whl)" \ "$(echo "${LIBCUDF_WHEELHOUSE}"/libcudf_"${RAPIDS_PY_CUDA_SUFFIX}"*.whl)" -python -c "import libcudf_streaming; libcudf_streaming.load_library()" +python -c "import libcudf_streaming; assert libcudf_streaming.load_library() is not None" deactivate rapids-logger "Install cudf_streaming and its dependencies"