From 2c01577eac7836fec695b93886daefb745f3fd4b Mon Sep 17 00:00:00 2001 From: Gil Forsyth Date: Fri, 18 Jul 2025 11:54:05 -0400 Subject: [PATCH 01/11] chore: bump to 0.46 --- .github/workflows/build.yaml | 8 ++++---- .github/workflows/pr.yaml | 12 ++++++------ .github/workflows/test.yaml | 4 ++-- .github/workflows/trigger-breaking-change-alert.yaml | 2 +- RAPIDS_VERSION | 2 +- VERSION | 2 +- dependencies.yaml | 8 ++++---- pyproject.toml | 4 ++-- 8 files changed, 21 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 521a6805..502f5d3f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -34,7 +34,7 @@ concurrency: jobs: conda-python-build: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.08 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.10 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -44,7 +44,7 @@ jobs: upload-conda: needs: [conda-python-build] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@branch-25.08 + uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@branch-25.10 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -52,7 +52,7 @@ jobs: sha: ${{ inputs.sha }} wheel-build: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.08 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.10 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -64,7 +64,7 @@ jobs: wheel-publish: needs: wheel-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-25.08 + uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-25.10 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index eb7d287c..e53ea62f 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -19,7 +19,7 @@ jobs: - wheel-tests - telemetry-setup secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@branch-25.08 + uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@branch-25.10 with: needs: ${{ toJSON(needs) }} telemetry-setup: @@ -36,20 +36,20 @@ jobs: checks: secrets: inherit needs: telemetry-setup - uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@branch-25.08 + uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@branch-25.10 with: ignored_pr_jobs: telemetry-summarize conda-python-build: needs: checks secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.08 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.10 with: build_type: pull-request script: ci/build_python.sh conda-python-tests: needs: conda-python-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-25.08 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-25.10 with: build_type: pull-request container-options: "--cap-add CAP_SYS_PTRACE --shm-size=8g --ulimit=nofile=1000000:1000000" @@ -57,7 +57,7 @@ jobs: wheel-build: needs: checks secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.08 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.10 with: build_type: pull-request script: ci/build_wheel.sh @@ -66,7 +66,7 @@ jobs: wheel-tests: needs: wheel-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.08 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.10 with: build_type: pull-request script: ci/test_wheel.sh diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 5098c9d9..4403315b 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -25,7 +25,7 @@ on: jobs: conda-python-tests: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-25.08 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-25.10 with: build_type: ${{ inputs.build_type }} branch: ${{ inputs.branch }} @@ -35,7 +35,7 @@ jobs: container-options: "--cap-add CAP_SYS_PTRACE --shm-size=8g --ulimit=nofile=1000000:1000000" wheel-tests: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.08 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.10 with: build_type: ${{ inputs.build_type }} branch: ${{ inputs.branch }} diff --git a/.github/workflows/trigger-breaking-change-alert.yaml b/.github/workflows/trigger-breaking-change-alert.yaml index 593fcb10..48bf37af 100644 --- a/.github/workflows/trigger-breaking-change-alert.yaml +++ b/.github/workflows/trigger-breaking-change-alert.yaml @@ -12,7 +12,7 @@ jobs: trigger-notifier: if: contains(github.event.pull_request.labels.*.name, 'breaking') secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/breaking-change-alert.yaml@branch-25.08 + uses: rapidsai/shared-workflows/.github/workflows/breaking-change-alert.yaml@branch-25.10 with: sender_login: ${{ github.event.sender.login }} sender_avatar: ${{ github.event.sender.avatar_url }} diff --git a/RAPIDS_VERSION b/RAPIDS_VERSION index 3af4bda0..296e3528 100644 --- a/RAPIDS_VERSION +++ b/RAPIDS_VERSION @@ -1 +1 @@ -25.08.00 +25.10.00 diff --git a/VERSION b/VERSION index bcce5d06..30109231 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.45.0 +0.46.0 diff --git a/dependencies.yaml b/dependencies.yaml index f7ee497a..8fb0eaa7 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -203,13 +203,13 @@ dependencies: common: - output_types: conda packages: - - ucx-py==0.45.*,>=0.0.0a0 + - ucx-py==0.46.*,>=0.0.0a0 test_python: common: - output_types: [conda, requirements, pyproject] packages: - cloudpickle - - rapids-dask-dependency==25.8.*,>=0.0.0a0 + - rapids-dask-dependency==25.10.*,>=0.0.0a0 - distributed - numba>=0.59.1,<0.62.0a0 - pytest==7.* @@ -217,7 +217,7 @@ dependencies: - pytest-rerunfailures - output_types: [conda] packages: - - &cudf_unsuffixed cudf==25.8.*,>=0.0.0a0 + - &cudf_unsuffixed cudf==25.10.*,>=0.0.0a0 specific: - output_types: [requirements, pyproject] matrices: @@ -225,7 +225,7 @@ dependencies: cuda: "12.*" cuda_suffixed: "true" packages: - - cudf-cu12==25.8.*,>=0.0.0a0 + - cudf-cu12==25.10.*,>=0.0.0a0 - matrix: packages: - *cudf_unsuffixed diff --git a/pyproject.toml b/pyproject.toml index 15d421ea..b4aeec5e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,14 +48,14 @@ classifiers = [ [project.optional-dependencies] test = [ "cloudpickle", - "cudf==25.8.*,>=0.0.0a0", + "cudf==25.10.*,>=0.0.0a0", "cupy-cuda12x>=12.0.0", "distributed", "numba>=0.59.1,<0.62.0a0", "pytest-asyncio", "pytest-rerunfailures", "pytest==7.*", - "rapids-dask-dependency==25.8.*,>=0.0.0a0", + "rapids-dask-dependency==25.10.*,>=0.0.0a0", ] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit dependencies.yaml and run `rapids-dependency-file-generator`. [project.urls] From 4ac075e0e4e44392b636b521bb522d9ec1e0d5bd Mon Sep 17 00:00:00 2001 From: Vyas Ramasubramani Date: Fri, 25 Jul 2025 08:53:06 -0700 Subject: [PATCH 02/11] Use GCC 14 (#1147) --- conda/recipes/ucx-py/conda_build_config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conda/recipes/ucx-py/conda_build_config.yaml b/conda/recipes/ucx-py/conda_build_config.yaml index f643760f..360b3fb0 100644 --- a/conda/recipes/ucx-py/conda_build_config.yaml +++ b/conda/recipes/ucx-py/conda_build_config.yaml @@ -1,8 +1,8 @@ c_compiler_version: - - 13 + - 14 cxx_compiler_version: - - 13 + - 14 ucx: - "==1.15.*" From 2731d97e106f43c6071a239dfc7a7324ba98d6ea Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Tue, 5 Aug 2025 14:36:17 -0400 Subject: [PATCH 03/11] Update rapids-build-backend to 0.4.1 (#1159) Issue: https://github.com/rapidsai/build-planning/issues/207 Authors: - Kyle Edwards (https://github.com/KyleFromNVIDIA) Approvers: - Bradley Dice (https://github.com/bdice) - James Lamb (https://github.com/jameslamb) URL: https://github.com/rapidsai/ucx-py/pull/1159 --- conda/recipes/ucx-py/recipe.yaml | 2 +- dependencies.yaml | 2 +- pyproject.toml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/conda/recipes/ucx-py/recipe.yaml b/conda/recipes/ucx-py/recipe.yaml index 0fa58c6c..1e37fd13 100644 --- a/conda/recipes/ucx-py/recipe.yaml +++ b/conda/recipes/ucx-py/recipe.yaml @@ -30,7 +30,7 @@ requirements: - cython>=3.0.0 - pip - python =${{ py_version }} - - rapids-build-backend>=0.3.1,<0.4.0dev0 + - rapids-build-backend>=0.4.0,<0.5.0.dev0 - setuptools>=64.0.0 - ucx run: diff --git a/dependencies.yaml b/dependencies.yaml index 8fb0eaa7..3e24a466 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -131,7 +131,7 @@ dependencies: common: - output_types: [conda, requirements, pyproject] packages: - - rapids-build-backend>=0.3.1,<0.4.0dev0 + - rapids-build-backend>=0.4.0,<0.5.0.dev0 - setuptools>=64.0.0 run: common: diff --git a/pyproject.toml b/pyproject.toml index b4aeec5e..3188b7db 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ [build-system] build-backend = "rapids_build_backend.build" requires = [ - "rapids-build-backend>=0.3.1,<0.4.0dev0", + "rapids-build-backend>=0.4.0,<0.5.0.dev0", "setuptools>=64.0.0", ] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit dependencies.yaml and run `rapids-dependency-file-generator`. @@ -114,7 +114,7 @@ addopts = "--tb=native" [tool.rapids-build-backend] build-backend = "setuptools.build_meta" commit-files = [ - "ucp/COMMIT_FILE" + "ucp/GIT_COMMIT" ] # by default, do not rename the package 'ucx-py-cu${ver}' # (this is overridden in wheel publishing) From bb72a1d97c962878b1a2e82dd62e6bceae706931 Mon Sep 17 00:00:00 2001 From: Peter Andreas Entschev Date: Tue, 12 Aug 2025 19:14:37 +0200 Subject: [PATCH 04/11] Increase min and max UCX pins to >=1.17 and <1.20, respectively (#1161) UCX 1.19 was released last week and we need to support it. Furthermore, we can tighten pins a little and just keep supporting up to a maximum of 3 minor versions, thus increasing to minimum pin 1.17 as well. Authors: - Peter Andreas Entschev (https://github.com/pentschev) Approvers: - Bradley Dice (https://github.com/bdice) - Benjamin Zaitlen (https://github.com/quasiben) URL: https://github.com/rapidsai/ucx-py/pull/1161 --- conda/recipes/ucx-py/conda_build_config.yaml | 2 +- conda/recipes/ucx-py/recipe.yaml | 2 +- dependencies.yaml | 10 +++++----- docs/source/install.rst | 10 +++++----- ucp/__init__.py | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/conda/recipes/ucx-py/conda_build_config.yaml b/conda/recipes/ucx-py/conda_build_config.yaml index 360b3fb0..5dea1a47 100644 --- a/conda/recipes/ucx-py/conda_build_config.yaml +++ b/conda/recipes/ucx-py/conda_build_config.yaml @@ -5,4 +5,4 @@ cxx_compiler_version: - 14 ucx: - - "==1.15.*" + - "==1.17.*" diff --git a/conda/recipes/ucx-py/recipe.yaml b/conda/recipes/ucx-py/recipe.yaml index 1e37fd13..a0726bc3 100644 --- a/conda/recipes/ucx-py/recipe.yaml +++ b/conda/recipes/ucx-py/recipe.yaml @@ -37,7 +37,7 @@ requirements: - numpy>=1.23,<3.0a0 - pynvml>=12.0.0,<13.0.0a0 - python - - ucx >=1.15.0,<1.19.0 + - ucx >=1.17.0,<1.20.0 ignore_run_exports: from_package: - ${{ compiler("c") }} diff --git a/dependencies.yaml b/dependencies.yaml index 3e24a466..b9d83e7b 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -157,7 +157,7 @@ dependencies: common: - output_types: conda packages: - - ucx==1.15.0 + - ucx==1.17.0 - output_types: requirements packages: # pip recognizes the index as a global option for the requirements.txt file @@ -165,14 +165,14 @@ dependencies: - --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple specific: # very tight >=x.x.x,=1.15.0,<1.15.1 + - libucx-cu12>=1.17.0,<1.17.1 # this fallback is intentionally empty... it simplifies building from source # without CUDA, e.g. 'pip install .' - matrix: null @@ -181,7 +181,7 @@ dependencies: common: - output_types: conda packages: - - ucx>=1.15.0,<1.19 + - ucx>=1.17.0,<1.20 - output_types: requirements packages: # pip recognizes the index as a global option for the requirements.txt file @@ -194,7 +194,7 @@ dependencies: cuda: "12.*" cuda_suffixed: "true" packages: - - libucx-cu12>=1.15.0,<1.19 + - libucx-cu12>=1.17.0,<1.20 # this fallback is intentionally empty... it simplifies building from source # without CUDA, e.g. 'pip install .' - matrix: null diff --git a/docs/source/install.rst b/docs/source/install.rst index 24320c55..a2f70e2e 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -102,17 +102,17 @@ Test Dependencies dask distributed cloudpickle -UCX >= 1.15.0 +UCX >= 1.17.0 ^^^^^^^^^^^^^ -Instructions for building UCX >= 1.15.0 (minimum version supported by UCX-Py), make sure to change ``git checkout v1.15.0`` to a newer version if desired: +Instructions for building UCX >= 1.17.0 (minimum version supported by UCX-Py), make sure to change ``git checkout v1.17.0`` to a newer version if desired: :: conda activate ucx git clone https://github.com/openucx/ucx cd ucx - git checkout v1.15.0 + git checkout v1.17.0 ./autogen.sh mkdir build cd build @@ -134,13 +134,13 @@ It is possible to enable InfiniBand support via the conda-forge rdma-core packag conda install -c conda-forge c-compiler cxx-compiler gcc_linux-64=11.* rdma-core=28.* -After installing the necessary dependencies, it's now time to build UCX from source, make sure to change ``git checkout v1.15.0`` to a newer version if desired: +After installing the necessary dependencies, it's now time to build UCX from source, make sure to change ``git checkout v1.17.0`` to a newer version if desired: :: git clone https://github.com/openucx/ucx cd ucx - git checkout v1.15.0 + git checkout v1.17.0 ./autogen.sh mkdir build cd build diff --git a/ucp/__init__.py b/ucp/__init__.py index 53809d14..ad77a60e 100644 --- a/ucp/__init__.py +++ b/ucp/__init__.py @@ -41,7 +41,7 @@ _ucx_version = get_ucx_version() -__ucx_min_version__ = "1.15.0" +__ucx_min_version__ = "1.17.0" __ucx_version__ = "%d.%d.%d" % _ucx_version if _ucx_version < tuple(int(i) for i in __ucx_min_version__.split(".")): From 21d744c635fdbd2edd79dc420ccf2c42744f58b0 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Thu, 21 Aug 2025 15:09:01 -0500 Subject: [PATCH 05/11] Build and test with CUDA 13.0.0 (#1162) Contributes to https://github.com/rapidsai/build-planning/issues/208 * uses CUDA 13.0.0 to build and test * moves some dependency pins: - `cupy`: `>=13.6.0` Contributes to https://github.com/rapidsai/build-planning/issues/68 * updates to CUDA 13 dependencies in fallback entries in `dependencies.yaml` matrices (i.e., the ones that get written to `pyproject.toml` in source control) ## Notes for Reviewers This switches GitHub Actions workflows to the `cuda13.0` branch from here: https://github.com/rapidsai/shared-workflows/pull/413 A future round of PRs will revert that back to `branch-25.10`, once all of RAPIDS supports CUDA 13. Authors: - James Lamb (https://github.com/jameslamb) Approvers: - Peter Andreas Entschev (https://github.com/pentschev) - Bradley Dice (https://github.com/bdice) URL: https://github.com/rapidsai/ucx-py/pull/1162 --- .github/workflows/build.yaml | 8 +- .github/workflows/pr.yaml | 12 +-- .github/workflows/test.yaml | 4 +- .../trigger-breaking-change-alert.yaml | 2 +- .readthedocs.yml | 3 +- ci/run_benchmark_pytests.sh | 11 ++- conda/recipes/ucx-py/conda_build_config.yaml | 3 +- dependencies.yaml | 86 ++++++++++++++++--- docs/source/install.rst | 26 ++++-- pyproject.toml | 3 +- setup.py | 4 +- tests/test_custom_send_recv.py | 8 +- tests/test_send_recv.py | 10 ++- 13 files changed, 131 insertions(+), 49 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 502f5d3f..7b0cabf4 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -34,7 +34,7 @@ concurrency: jobs: conda-python-build: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@cuda13.0 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -44,7 +44,7 @@ jobs: upload-conda: needs: [conda-python-build] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@cuda13.0 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -52,7 +52,7 @@ jobs: sha: ${{ inputs.sha }} wheel-build: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda13.0 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -64,7 +64,7 @@ jobs: wheel-publish: needs: wheel-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuda13.0 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index a2a23ec2..2d7a2db9 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -16,7 +16,7 @@ jobs: - wheel-tests - telemetry-setup secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@cuda13.0 with: needs: ${{ toJSON(needs) }} telemetry-setup: @@ -33,20 +33,20 @@ jobs: checks: secrets: inherit needs: telemetry-setup - uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@cuda13.0 with: ignored_pr_jobs: telemetry-summarize conda-python-build: needs: checks secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@cuda13.0 with: build_type: pull-request script: ci/build_python.sh conda-python-tests: needs: conda-python-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@cuda13.0 with: build_type: pull-request container-options: "--cap-add CAP_SYS_PTRACE --shm-size=8g --ulimit=nofile=1000000:1000000" @@ -54,7 +54,7 @@ jobs: wheel-build: needs: checks secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda13.0 with: build_type: pull-request script: ci/build_wheel.sh @@ -63,7 +63,7 @@ jobs: wheel-tests: needs: wheel-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda13.0 with: build_type: pull-request script: ci/test_wheel.sh diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 4403315b..7e6eb506 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -25,7 +25,7 @@ on: jobs: conda-python-tests: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@cuda13.0 with: build_type: ${{ inputs.build_type }} branch: ${{ inputs.branch }} @@ -35,7 +35,7 @@ jobs: container-options: "--cap-add CAP_SYS_PTRACE --shm-size=8g --ulimit=nofile=1000000:1000000" wheel-tests: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda13.0 with: build_type: ${{ inputs.build_type }} branch: ${{ inputs.branch }} diff --git a/.github/workflows/trigger-breaking-change-alert.yaml b/.github/workflows/trigger-breaking-change-alert.yaml index 48bf37af..72751d07 100644 --- a/.github/workflows/trigger-breaking-change-alert.yaml +++ b/.github/workflows/trigger-breaking-change-alert.yaml @@ -12,7 +12,7 @@ jobs: trigger-notifier: if: contains(github.event.pull_request.labels.*.name, 'breaking') secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/breaking-change-alert.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/breaking-change-alert.yaml@cuda13.0 with: sender_login: ${{ github.event.sender.login }} sender_avatar: ${{ github.event.sender.avatar_url }} diff --git a/.readthedocs.yml b/.readthedocs.yml index 7106d0eb..1bb8c5cd 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -10,7 +10,8 @@ build: # is pulled in, and therefore tested in this no-CUDA environment - | pip install \ - -C rapidsai.matrix-entry="cuda=12.x;cuda_suffixed=true" \ + --extra-index-url https://pypi.anaconda.org/rapidsai-wheels-nightly/simple/ \ + -C rapidsai.matrix-entry="cuda=13.x;cuda_suffixed=true" \ . conda: diff --git a/ci/run_benchmark_pytests.sh b/ci/run_benchmark_pytests.sh index e23473e2..494b2cd3 100755 --- a/ci/run_benchmark_pytests.sh +++ b/ci/run_benchmark_pytests.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) 2024, NVIDIA CORPORATION. +# Copyright (c) 2024-2025, NVIDIA CORPORATION. set -euo pipefail @@ -8,5 +8,12 @@ set -euo pipefail pushd / timeout 1m python -m ucp.benchmarks.send_recv -o cupy --server-dev 0 --client-dev 0 --reuse-alloc --backend ucp-async timeout 1m python -m ucp.benchmarks.send_recv -o cupy --server-dev 0 --client-dev 0 --reuse-alloc --backend ucp-core -timeout 1m python -m ucp.benchmarks.cudf_merge --chunks-per-dev 4 --chunk-size 10000 --rmm-init-pool-size 2097152 + +# TODO: run cudf_merge benchmark unconditionally once there are CUDA 13 cudf packages +# ref: https://github.com/rapidsai/ucx-py/pull/1162#issuecomment-3210841342 +if [[ $(python -c "import cudf") ]]; then + timeout 1m python -m ucp.benchmarks.cudf_merge --chunks-per-dev 4 --chunk-size 10000 --rmm-init-pool-size 2097152 +else + echo "'cudf' not installed, skipping cudf_merge benchmark" +fi popd diff --git a/conda/recipes/ucx-py/conda_build_config.yaml b/conda/recipes/ucx-py/conda_build_config.yaml index 5dea1a47..85376f88 100644 --- a/conda/recipes/ucx-py/conda_build_config.yaml +++ b/conda/recipes/ucx-py/conda_build_config.yaml @@ -5,4 +5,5 @@ cxx_compiler_version: - 14 ucx: - - "==1.17.*" + - "==1.17.*" # [os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("12")] + - "==1.19.*" # [not os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("12")] diff --git a/dependencies.yaml b/dependencies.yaml index b9d83e7b..706cdb8b 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -6,6 +6,7 @@ files: - checks - cuda - cuda_version + - depends_on_cudf - depends_on_cupy - py_version - rapids_build_setuptools @@ -15,6 +16,7 @@ files: output: none includes: - cuda_version + - depends_on_cudf - depends_on_cupy - py_version - test_ucx_py @@ -55,6 +57,7 @@ files: table: project.optional-dependencies key: test includes: + - depends_on_cudf - depends_on_cupy - test_python channels: @@ -91,14 +94,15 @@ dependencies: cuda: "12.9" packages: - cuda-version=12.9 - cuda: - specific: - - output_types: conda - matrices: - matrix: - cuda: "12.*" + cuda: "13.0" packages: - - cuda-cudart + - cuda-version=13.0 + cuda: + common: + - output_types: [conda] + packages: + - cuda-cudart py_version: specific: - output_types: conda @@ -143,16 +147,21 @@ dependencies: common: - output_types: conda packages: - - cupy>=12.0.0 + - cupy>=13.6.0 # NOTE: This is intentionally not broken into groups by a 'cuda_suffixed' selector like # other packages with -cu{nn}x suffixes in this file. # All RAPIDS wheel builds (including in devcontainers) expect cupy to be suffixed. specific: - output_types: [requirements, pyproject] matrices: - - matrix: # All CUDA 12 versions + - matrix: + cuda: "12.*" + packages: + - cupy-cuda12x>=13.6.0 + # fallback to CUDA 13 versions if 'cuda' is '13.*' or not provided + - matrix: packages: - - cupy-cuda12x>=12.0.0 + - &cupy_cu13 cupy-cuda13x>=13.6.0 depends_on_ucx_build: common: - output_types: conda @@ -173,21 +182,33 @@ dependencies: cuda_suffixed: "true" packages: - libucx-cu12>=1.17.0,<1.17.1 + - matrix: + cuda: "13.*" + cuda_suffixed: "true" + packages: + - libucx-cu13>=1.19.0,<1.19.1 # this fallback is intentionally empty... it simplifies building from source # without CUDA, e.g. 'pip install .' - matrix: null packages: null depends_on_ucx_run: common: - - output_types: conda - packages: - - ucx>=1.17.0,<1.20 - 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: [conda] + matrices: + - matrix: + cuda: "12.*" + packages: + - ucx>=1.17.0,<1.20 + # require at least 1.19.0 on CUDA 13 (and make that the default when 'cuda' filter is not provided) + - matrix: + packages: + - ucx>=1.19.0,<1.20 - output_types: [requirements, pyproject] matrices: - matrix: @@ -195,6 +216,11 @@ dependencies: cuda_suffixed: "true" packages: - libucx-cu12>=1.17.0,<1.20 + - matrix: + cuda: "13.*" + cuda_suffixed: "true" + packages: + - libucx-cu13>=1.19.0,<1.20 # this fallback is intentionally empty... it simplifies building from source # without CUDA, e.g. 'pip install .' - matrix: null @@ -217,8 +243,39 @@ dependencies: - pytest-rerunfailures - output_types: [conda] packages: - - &cudf_unsuffixed cudf==25.10.*,>=0.0.0a0 + - &numba_cuda numba-cuda>=0.19.0,<0.20.0a0 + specific: + - output_types: [requirements, pyproject] + matrices: + - matrix: + cuda: "12.*" + packages: + - numba-cuda[cu12]>=0.19.0,<0.20.0a0 + # fallback to CUDA 13 versions if 'cuda' is '13.*' or not provided + - matrix: + packages: + - numba-cuda[cu13]>=0.19.0,<0.20.0a0 + # TODO: re-include cudf on CUDA 13 here once cudf CUDA 13 packages exist + # ref: https://github.com/rapidsai/ucx-py/pull/1162#issuecomment-3210841342 + depends_on_cudf: + common: + - output_types: requirements + packages: + # pip recognizes the index as a global option for the requirements.txt file + - --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple specific: + - output_types: [conda] + matrices: + - matrix: + cuda: "12.*" + packages: + - &cudf_unsuffixed cudf==25.10.*,>=0.0.0a0 + - matrix: + cuda: "13.*" + packages: + - matrix: + packages: + - *cudf_unsuffixed - output_types: [requirements, pyproject] matrices: - matrix: @@ -227,5 +284,6 @@ dependencies: packages: - cudf-cu12==25.10.*,>=0.0.0a0 - matrix: + cuda: "13.*" packages: - - *cudf_unsuffixed + - {matrix: null, packages: [*cudf_unsuffixed]} diff --git a/docs/source/install.rst b/docs/source/install.rst index a2f70e2e..f4cb7b7a 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -40,6 +40,10 @@ Change `cuda-version` to pin to a different CUDA minor version if you'd like. :: + # CUDA 13 + conda create -n ucx -c conda-forge -c rapidsai \ + cuda-version=13.0 ucx-py + # CUDA 12 conda create -n ucx -c conda-forge -c rapidsai \ cuda-version=12.9 ucx-py @@ -52,8 +56,8 @@ be done if desired (e.g., to test for new capabilities or bug fixes). PyPI ---- -PyPI installation is possible and currently supports CUDA version -``12``. Packages are compatible with CPU-only workloads and any one can +PyPI installation is possible and currently supports CUDA versions +``12`` and ``13``. Packages are compatible with CPU-only workloads and any one can be chosen if the application doesn't use CUDA, but currently there are no pre-built CPU-only packages available, so the CUDA package must be installed instead. CUDA versions are differentiated by the suffix @@ -61,6 +65,9 @@ installed instead. CUDA versions are differentiated by the suffix :: + # CUDA 13 + pip install ucx-py-cu13 + # CUDA 12 pip install ucx-py-cu12 @@ -210,7 +217,7 @@ Installing UCX-Py from source in a pip-only environment has additional limitatio UCX-Py with UCX from PyPI ^^^^^^^^^^^^^^^^^^^^^^^^^ -CUDA-enabled builds of the UCX libraries are available from PyPI, under the name ``libucx-cu12``. +CUDA-enabled builds of the UCX libraries are available from PyPI, under the names ``libucx-cu12`` (CUDA 12) and ``libucx-cu13`` (CUDA 13). Notice that those builds do not currently include InfiniBand support, if InfiniBand is required you will need to provide a custom UCX install as described in the "UCX-Py with custom UCX install" section. @@ -225,19 +232,22 @@ To build UCX-Py using those UCX packages (to avoid needing to build UCX from sou # or for develop build pip install -v -e . -This will automatically handle installing appropriate, compatible ``libucx-cu12`` packages for build-time and runtime use. -When you run UCX-Py code installed this way, it will load UCX libraries from the installed ``libucx-cu12`` package. +This will automatically handle installing appropriate, compatible ``libucx-cu{12,13}`` packages for build-time and runtime use. +When you run UCX-Py code installed this way, it will load UCX libraries from the installed ``libucx-cu{12,13}`` package. UCX-Py packages are built against the oldest version of UCX that UCX-Py supports, and can run against a range of ABI-compatible UCX versions. You can use packages from PyPI to customize the UCX version used at runtime. -For example, to switch to using UCX 1.16 at runtime, run the following. +For example, to switch to using UCX 1.19 at runtime, run the following. :: + # CUDA 13 + pip install 'libucx-cu13>=1.19.0,<1.20' + # CUDA 12 - pip install 'libucx-cu12>=1.16.0,<1.17' + pip install 'libucx-cu12>=1.19.0,<1.20' UCX-Py with UCX system install @@ -254,7 +264,7 @@ If a UCX system install is available, building and installing UCX-Py can be done # or for develop build pip install -v -e . -To ensure that system install of UCX is always used at runtime (and not the ``libucx-cu12`` wheels), set the following +To ensure that system install of UCX is always used at runtime (and not the ``libucx-cu{12,13}`` wheels), set the following environment variable in the runtime environment. :: diff --git a/pyproject.toml b/pyproject.toml index 3188b7db..888e3790 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -49,8 +49,9 @@ classifiers = [ test = [ "cloudpickle", "cudf==25.10.*,>=0.0.0a0", - "cupy-cuda12x>=12.0.0", + "cupy-cuda13x>=13.6.0", "distributed", + "numba-cuda[cu13]>=0.19.0,<0.20.0a0", "numba>=0.59.1,<0.62.0a0", "pytest-asyncio", "pytest-rerunfailures", diff --git a/setup.py b/setup.py index 2c238c3c..4e849eba 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018-2021, NVIDIA CORPORATION. All rights reserved. +# Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. # See file LICENSE for terms. # This file is a copy of what is available in a Cython demo + some additions @@ -58,7 +58,7 @@ def _find_libucx_libs_and_headers(): include_dirs = [os.path.dirname(get_python_inc())] library_dirs = [get_config_var("LIBDIR")] libraries = ["ucp", "uct", "ucm", "ucs"] -extra_compile_args = ["-std=c99", "-Werror"] +extra_compile_args = ["-std=c99", "-Werror", "-Wno-error=sign-compare"] # tell the compiler and linker where to find UCX libraries and their headers # provided by the 'libucx' wheel diff --git a/tests/test_custom_send_recv.py b/tests/test_custom_send_recv.py index 2f1e5860..667ebb61 100644 --- a/tests/test_custom_send_recv.py +++ b/tests/test_custom_send_recv.py @@ -1,6 +1,9 @@ +# Copyright (c) 2020-2025, NVIDIA CORPORATION. All rights reserved. +# See file LICENSE for terms. import asyncio import pickle +import numba.cuda import numpy as np import pytest @@ -8,7 +11,6 @@ cudf = pytest.importorskip("cudf") distributed = pytest.importorskip("distributed") -cuda = pytest.importorskip("numba.cuda") @pytest.mark.asyncio @@ -75,14 +77,14 @@ async def read(self): for is_cuda, size in zip(is_cudas.tolist(), sizes.tolist()): if size > 0: if is_cuda: - frame = cuda.device_array((size,), dtype=np.uint8) + frame = numba.cuda.device_array((size,), dtype=np.uint8) else: frame = np.empty(size, dtype=np.uint8) await self.ep.recv(frame) frames.append(frame) else: if is_cuda: - frames.append(cuda.device_array((0,), dtype=np.uint8)) + frames.append(numba.cuda.device_array((0,), dtype=np.uint8)) else: frames.append(b"") return frames diff --git a/tests/test_send_recv.py b/tests/test_send_recv.py index 32da940e..4af28fea 100644 --- a/tests/test_send_recv.py +++ b/tests/test_send_recv.py @@ -1,3 +1,5 @@ +# Copyright (c) 2020-2025, NVIDIA CORPORATION. All rights reserved. +# See file LICENSE for terms. import functools import pytest @@ -102,18 +104,18 @@ async def test_send_recv_cupy(size, dtype, blocking_progress_mode): @pytest.mark.parametrize("blocking_progress_mode", [True, False]) async def test_send_recv_numba(size, dtype, blocking_progress_mode): ucp.init(blocking_progress_mode=blocking_progress_mode) - cuda = pytest.importorskip("numba.cuda") + import numba.cuda ary = np.arange(size, dtype=dtype) - msg = cuda.to_device(ary) + msg = numba.cuda.to_device(ary) msg_size = np.array([msg.nbytes], dtype=np.uint64) listener = ucp.create_listener( - make_echo_server(lambda n: cuda.device_array((n,), dtype=np.uint8)) + make_echo_server(lambda n: numba.cuda.device_array((n,), dtype=np.uint8)) ) client = await ucp.create_endpoint(ucp.get_address(), listener.port) await client.send(msg_size) await client.send(msg) - resp = cuda.device_array_like(msg) + resp = numba.cuda.device_array_like(msg) await client.recv(resp) np.testing.assert_array_equal(np.array(resp), np.array(msg)) From 83fe5f5119ae4a19f65a9f83597bf0a427a52f67 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Tue, 26 Aug 2025 16:26:49 -0400 Subject: [PATCH 06/11] Update rapids-dependency-file-generator (#1163) This PR updates the rapids-dependency-file-generator hook to get https://github.com/rapidsai/dependency-file-generator/pull/163. Authors: - Kyle Edwards (https://github.com/KyleFromNVIDIA) Approvers: - James Lamb (https://github.com/jameslamb) URL: https://github.com/rapidsai/ucx-py/pull/1163 --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 22db32f8..10200da8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -32,9 +32,9 @@ repos: - --fix - --rapids-version-file=RAPIDS_VERSION - repo: https://github.com/rapidsai/dependency-file-generator - rev: v1.19.0 + rev: v1.20.0 hooks: - id: rapids-dependency-file-generator - args: ["--clean"] + args: ["--clean", "--warn-all", "--strict"] default_language_version: python: python3 From 75c49e661947d55efda3f2bcdf6d72bb1bf01e91 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Fri, 29 Aug 2025 13:48:31 -0500 Subject: [PATCH 07/11] restore cudf dependency (#1164) Contributes to https://github.com/rapidsai/build-planning/issues/208 #1162 temporarily removed the `cudf` test-time dependency here, because there weren't yet CUDA 13 `cudf` packages. Those now exist (https://github.com/rapidsai/cudf/pull/19768), so this restores that dependency. Authors: - James Lamb (https://github.com/jameslamb) Approvers: - Peter Andreas Entschev (https://github.com/pentschev) - Vyas Ramasubramani (https://github.com/vyasr) URL: https://github.com/rapidsai/ucx-py/pull/1164 --- ci/run_benchmark_pytests.sh | 9 +-------- dependencies.yaml | 18 ++++-------------- 2 files changed, 5 insertions(+), 22 deletions(-) diff --git a/ci/run_benchmark_pytests.sh b/ci/run_benchmark_pytests.sh index 494b2cd3..10bb7415 100755 --- a/ci/run_benchmark_pytests.sh +++ b/ci/run_benchmark_pytests.sh @@ -8,12 +8,5 @@ set -euo pipefail pushd / timeout 1m python -m ucp.benchmarks.send_recv -o cupy --server-dev 0 --client-dev 0 --reuse-alloc --backend ucp-async timeout 1m python -m ucp.benchmarks.send_recv -o cupy --server-dev 0 --client-dev 0 --reuse-alloc --backend ucp-core - -# TODO: run cudf_merge benchmark unconditionally once there are CUDA 13 cudf packages -# ref: https://github.com/rapidsai/ucx-py/pull/1162#issuecomment-3210841342 -if [[ $(python -c "import cudf") ]]; then - timeout 1m python -m ucp.benchmarks.cudf_merge --chunks-per-dev 4 --chunk-size 10000 --rmm-init-pool-size 2097152 -else - echo "'cudf' not installed, skipping cudf_merge benchmark" -fi +timeout 1m python -m ucp.benchmarks.cudf_merge --chunks-per-dev 4 --chunk-size 10000 --rmm-init-pool-size 2097152 popd diff --git a/dependencies.yaml b/dependencies.yaml index 706cdb8b..e2c6a94f 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -255,27 +255,16 @@ dependencies: - matrix: packages: - numba-cuda[cu13]>=0.19.0,<0.20.0a0 - # TODO: re-include cudf on CUDA 13 here once cudf CUDA 13 packages exist - # ref: https://github.com/rapidsai/ucx-py/pull/1162#issuecomment-3210841342 depends_on_cudf: common: + - output_types: [conda] + packages: + - &cudf_unsuffixed cudf==25.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.anaconda.org/rapidsai-wheels-nightly/simple specific: - - output_types: [conda] - matrices: - - matrix: - cuda: "12.*" - packages: - - &cudf_unsuffixed cudf==25.10.*,>=0.0.0a0 - - matrix: - cuda: "13.*" - packages: - - matrix: - packages: - - *cudf_unsuffixed - output_types: [requirements, pyproject] matrices: - matrix: @@ -286,4 +275,5 @@ dependencies: - matrix: cuda: "13.*" packages: + - cudf-cu13==25.10.*,>=0.0.0a0 - {matrix: null, packages: [*cudf_unsuffixed]} From 77470e19f76fd87bb075f5cd0a6aa9542b538b1b Mon Sep 17 00:00:00 2001 From: James Lamb Date: Wed, 3 Sep 2025 08:41:47 -0500 Subject: [PATCH 08/11] use 'nvidia-ml-py' package for 'pynvml' module (#1165) Contributes to https://github.com/rapidsai/build-infra/issues/293 The `pynvml` *package* (https://github.com/gpuopenanalytics/pynvml) provides 2 things: * the `pynvml` **Python module**, transitively via a dependency on the `nvidia-ml-py` package * the `pynvml_utils` Python module This project's doesn't need the `pynvml_utils` Python module, so this PR proposes dropping the dependency on the `pynvml` package in favor of `nvidia-ml-py`. ## Notes for Reviewers I know this project's about to be archived (#1160), but that is still in progress and not guaranteed to be done in time for the 25.10 release. Proposing making this change to help completely remove the `pynvml` package from RAPIDS environments, so we can test that it's truly safe to do that. Authors: - James Lamb (https://github.com/jameslamb) Approvers: - Vyas Ramasubramani (https://github.com/vyasr) - Peter Andreas Entschev (https://github.com/pentschev) URL: https://github.com/rapidsai/ucx-py/pull/1165 --- conda/recipes/ucx-py/recipe.yaml | 4 +++- dependencies.yaml | 4 +++- pyproject.toml | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/conda/recipes/ucx-py/recipe.yaml b/conda/recipes/ucx-py/recipe.yaml index a0726bc3..1d59a7d6 100644 --- a/conda/recipes/ucx-py/recipe.yaml +++ b/conda/recipes/ucx-py/recipe.yaml @@ -35,7 +35,9 @@ requirements: - ucx run: - numpy>=1.23,<3.0a0 - - pynvml>=12.0.0,<13.0.0a0 + # 'nvidia-ml-py' provides the 'pynvml' module, since v12.560.30 + # ref: https://github.com/conda-forge/nvidia-ml-py-feedstock/pull/24 + - nvidia-ml-py>=12.560.30 - python - ucx >=1.17.0,<1.20.0 ignore_run_exports: diff --git a/dependencies.yaml b/dependencies.yaml index e2c6a94f..1ef0e2f9 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -142,7 +142,9 @@ dependencies: - output_types: [conda, requirements, pyproject] packages: - numpy>=1.23,<3.0a0 - - pynvml>=12.0.0,<13.0.0a0 + # 'nvidia-ml-py' provides the 'pynvml' module, since v12.560.30 + # ref: https://github.com/conda-forge/nvidia-ml-py-feedstock/pull/24 + - nvidia-ml-py>=12.560.30 depends_on_cupy: common: - output_types: conda diff --git a/pyproject.toml b/pyproject.toml index 888e3790..bd10c830 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,7 @@ license = { text = "BSD-3-Clause" } requires-python = ">=3.10" dependencies = [ "numpy>=1.23,<3.0a0", - "pynvml>=12.0.0,<13.0.0a0", + "nvidia-ml-py>=12.560.30", ] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit dependencies.yaml and run `rapids-dependency-file-generator`. classifiers = [ "Intended Audience :: Developers", From b7428920faad7bb73a1fb3c38ff7e77bad170fc0 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Fri, 5 Sep 2025 15:03:44 -0500 Subject: [PATCH 09/11] Merge pull request #1166 from jameslamb/update-cuda13-workflow-refs Use branch-25.10 again --- .github/workflows/build.yaml | 8 ++++---- .github/workflows/pr.yaml | 12 ++++++------ .github/workflows/test.yaml | 4 ++-- .github/workflows/trigger-breaking-change-alert.yaml | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 7b0cabf4..502f5d3f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -34,7 +34,7 @@ concurrency: jobs: conda-python-build: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@cuda13.0 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.10 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -44,7 +44,7 @@ jobs: upload-conda: needs: [conda-python-build] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@cuda13.0 + uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@branch-25.10 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -52,7 +52,7 @@ jobs: sha: ${{ inputs.sha }} wheel-build: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda13.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.10 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -64,7 +64,7 @@ jobs: wheel-publish: needs: wheel-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuda13.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-25.10 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 2d7a2db9..a2a23ec2 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -16,7 +16,7 @@ jobs: - wheel-tests - telemetry-setup secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@cuda13.0 + uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@branch-25.10 with: needs: ${{ toJSON(needs) }} telemetry-setup: @@ -33,20 +33,20 @@ jobs: checks: secrets: inherit needs: telemetry-setup - uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@cuda13.0 + uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@branch-25.10 with: ignored_pr_jobs: telemetry-summarize conda-python-build: needs: checks secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@cuda13.0 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.10 with: build_type: pull-request script: ci/build_python.sh conda-python-tests: needs: conda-python-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@cuda13.0 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-25.10 with: build_type: pull-request container-options: "--cap-add CAP_SYS_PTRACE --shm-size=8g --ulimit=nofile=1000000:1000000" @@ -54,7 +54,7 @@ jobs: wheel-build: needs: checks secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda13.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.10 with: build_type: pull-request script: ci/build_wheel.sh @@ -63,7 +63,7 @@ jobs: wheel-tests: needs: wheel-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda13.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.10 with: build_type: pull-request script: ci/test_wheel.sh diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 7e6eb506..4403315b 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -25,7 +25,7 @@ on: jobs: conda-python-tests: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@cuda13.0 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-25.10 with: build_type: ${{ inputs.build_type }} branch: ${{ inputs.branch }} @@ -35,7 +35,7 @@ jobs: container-options: "--cap-add CAP_SYS_PTRACE --shm-size=8g --ulimit=nofile=1000000:1000000" wheel-tests: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda13.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.10 with: build_type: ${{ inputs.build_type }} branch: ${{ inputs.branch }} diff --git a/.github/workflows/trigger-breaking-change-alert.yaml b/.github/workflows/trigger-breaking-change-alert.yaml index 72751d07..48bf37af 100644 --- a/.github/workflows/trigger-breaking-change-alert.yaml +++ b/.github/workflows/trigger-breaking-change-alert.yaml @@ -12,7 +12,7 @@ jobs: trigger-notifier: if: contains(github.event.pull_request.labels.*.name, 'breaking') secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/breaking-change-alert.yaml@cuda13.0 + uses: rapidsai/shared-workflows/.github/workflows/breaking-change-alert.yaml@branch-25.10 with: sender_login: ${{ github.event.sender.login }} sender_avatar: ${{ github.event.sender.avatar_url }} From 51f87cd97adc9584b8441402ea797e029bfc6496 Mon Sep 17 00:00:00 2001 From: Peter Andreas Entschev Date: Tue, 16 Sep 2025 11:41:07 +0200 Subject: [PATCH 10/11] Add deprecation warning to docs (#1167) Add a deprecation warning to docs to advise users to migrate to UCXX. Authors: - Peter Andreas Entschev (https://github.com/pentschev) Approvers: - Mads R. B. Kristensen (https://github.com/madsbk) URL: https://github.com/rapidsai/ucx-py/pull/1167 --- docs/source/index.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/source/index.rst b/docs/source/index.rst index a531e189..e2d58b7b 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -1,6 +1,10 @@ UCX-Py ====== +.. warning:: + + UCX-Py is deprecated, version 0.45 was its last release and it will receive no further updates. Users are advised to migrate to `UCXX `_ immediately. `UCXX documentation `_. + UCX-Py is the Python interface for `UCX `_, a low-level high-performance networking library. UCX and UCX-Py supports several transport methods including InfiniBand and NVLink while still using traditional networking protocols like TCP. From 93b2e9de975129db192d853e7824a079bc2a77cf Mon Sep 17 00:00:00 2001 From: Peter Andreas Entschev Date: Thu, 18 Sep 2025 17:37:38 +0200 Subject: [PATCH 11/11] Make final discontinuation changes (#1169) This is expected to be the last commit to UCX-Py. It updates the README and docs warnings to inform users that UCX-Py has been permanently discontinued. Along with it, this change removes CUDA 13 mentions from docs, since there will be no CUDA 13 packages released for UCX-Py, however, the functional changes to allow building with CUDA 13 are kept should those be needed for any reason in the near-term. Authors: - Peter Andreas Entschev (https://github.com/pentschev) Approvers: - James Lamb (https://github.com/jameslamb) - Mads R. B. Kristensen (https://github.com/madsbk) URL: https://github.com/rapidsai/ucx-py/pull/1169 --- README.md | 4 ++-- docs/source/conf.py | 8 ++++---- docs/source/index.rst | 2 +- docs/source/install.rst | 41 +++++++++++++++-------------------------- 4 files changed, 22 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 0d8cbe1b..4cb3bc87 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -> [!WARNING] -> UCX-Py is deprecated and will be phased out soon, version 0.45 (RAPIDS 25.08) is expected to be the last release. Projects that rely on UCX-Py are advised to migrate to [UCXX](https://github.com/rapidsai/ucxx) immediately. +> [!CAUTION] +> UCX-Py has been discontinued, version 0.45 (RAPIDS 25.08) was its last release and it will receive no further updates, see the [RAPIDS Support Notice 50](https://docs.rapids.ai/notices/rsn0050/) for details. Projects depending on UCX-Py are advised to migrate to [UCXX](https://github.com/rapidsai/ucxx) immediately. [UCXX documentation](https://docs.rapids.ai/api/ucxx/nightly/). [![https://ucx-py.readthedocs.io/en/latest/](https://readthedocs.org/projects/ucx-py/badge/ "ReadTheDocs")]( https://ucx-py.readthedocs.io/en/latest/ ) diff --git a/docs/source/conf.py b/docs/source/conf.py index b32017cf..4c997ca4 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -1,3 +1,6 @@ +# Copyright (c) 2019-2025, NVIDIA CORPORATION. All rights reserved. +# See file LICENSE for terms. +# # -*- coding: utf-8 -*- # # Configuration file for the Sphinx documentation builder. @@ -19,11 +22,8 @@ # -- Project information ----------------------------------------------------- -# The full version, including alpha/beta/rc tags. -from ucp import __version__ as release - # The short X.Y version. -version = ".".join(release.split(".")[:2]) +version = "0.45.0" project = "ucx-py" copyright = "2019-2021, NVIDIA" diff --git a/docs/source/index.rst b/docs/source/index.rst index e2d58b7b..d6c898ab 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -3,7 +3,7 @@ UCX-Py .. warning:: - UCX-Py is deprecated, version 0.45 was its last release and it will receive no further updates. Users are advised to migrate to `UCXX `_ immediately. `UCXX documentation `_. + UCX-Py has been discontinued, version 0.45 (RAPIDS 25.08) was its last release and it will receive no further updates, see the `RAPIDS Support Notice 50 `_ for details. Projects depending on UCX-Py are advised to migrate to `UCXX `_ immediately. `UCXX documentation `_. UCX-Py is the Python interface for `UCX `_, a low-level high-performance networking library. UCX and UCX-Py supports several transport methods including InfiniBand and NVLink while still using traditional networking protocols like TCP. diff --git a/docs/source/install.rst b/docs/source/install.rst index f4cb7b7a..d826c8a7 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -40,10 +40,6 @@ Change `cuda-version` to pin to a different CUDA minor version if you'd like. :: - # CUDA 13 - conda create -n ucx -c conda-forge -c rapidsai \ - cuda-version=13.0 ucx-py - # CUDA 12 conda create -n ucx -c conda-forge -c rapidsai \ cuda-version=12.9 ucx-py @@ -56,23 +52,19 @@ be done if desired (e.g., to test for new capabilities or bug fixes). PyPI ---- -PyPI installation is possible and currently supports CUDA versions -``12`` and ``13``. Packages are compatible with CPU-only workloads and any one can +PyPI installation is possible and currently supports CUDA version +``12``. Packages are compatible with CPU-only workloads and any one can be chosen if the application doesn't use CUDA, but currently there are no pre-built CPU-only packages available, so the CUDA package must be -installed instead. CUDA versions are differentiated by the suffix -``-cuXY``, where ``XY`` must be replaced with the desired CUDA version. +installed instead. :: - # CUDA 13 - pip install ucx-py-cu13 - # CUDA 12 pip install ucx-py-cu12 UCX-Py has no direct dependency on CUDA, but the package specifies the -``-cuXY`` prefix so that the correct ``libucx-cuXY`` package is selected. +``-cu12`` prefix so that the correct ``libucx-cu12`` package is selected. This is also the reason why there are no CPU-only UCX-Py packages available at the moment, CPU-only builds of the UCX library are not currently available in PyPI. @@ -109,17 +101,17 @@ Test Dependencies dask distributed cloudpickle -UCX >= 1.17.0 +UCX >= 1.15.0 ^^^^^^^^^^^^^ -Instructions for building UCX >= 1.17.0 (minimum version supported by UCX-Py), make sure to change ``git checkout v1.17.0`` to a newer version if desired: +Instructions for building UCX >= 1.15.0 (minimum version supported by UCX-Py), make sure to change ``git checkout v1.15.0`` to a newer version if desired: :: conda activate ucx git clone https://github.com/openucx/ucx cd ucx - git checkout v1.17.0 + git checkout v1.15.0 ./autogen.sh mkdir build cd build @@ -141,13 +133,13 @@ It is possible to enable InfiniBand support via the conda-forge rdma-core packag conda install -c conda-forge c-compiler cxx-compiler gcc_linux-64=11.* rdma-core=28.* -After installing the necessary dependencies, it's now time to build UCX from source, make sure to change ``git checkout v1.17.0`` to a newer version if desired: +After installing the necessary dependencies, it's now time to build UCX from source, make sure to change ``git checkout v1.15.0`` to a newer version if desired: :: git clone https://github.com/openucx/ucx cd ucx - git checkout v1.17.0 + git checkout v1.15.0 ./autogen.sh mkdir build cd build @@ -217,7 +209,7 @@ Installing UCX-Py from source in a pip-only environment has additional limitatio UCX-Py with UCX from PyPI ^^^^^^^^^^^^^^^^^^^^^^^^^ -CUDA-enabled builds of the UCX libraries are available from PyPI, under the names ``libucx-cu12`` (CUDA 12) and ``libucx-cu13`` (CUDA 13). +CUDA-enabled builds of the UCX libraries are available from PyPI, under the name ``libucx-cu12`` (CUDA 12). Notice that those builds do not currently include InfiniBand support, if InfiniBand is required you will need to provide a custom UCX install as described in the "UCX-Py with custom UCX install" section. @@ -232,22 +224,19 @@ To build UCX-Py using those UCX packages (to avoid needing to build UCX from sou # or for develop build pip install -v -e . -This will automatically handle installing appropriate, compatible ``libucx-cu{12,13}`` packages for build-time and runtime use. -When you run UCX-Py code installed this way, it will load UCX libraries from the installed ``libucx-cu{12,13}`` package. +This will automatically handle installing appropriate, compatible ``libucx-cu12`` packages for build-time and runtime use. +When you run UCX-Py code installed this way, it will load UCX libraries from the installed ``libucx-cu12`` package. UCX-Py packages are built against the oldest version of UCX that UCX-Py supports, and can run against a range of ABI-compatible UCX versions. You can use packages from PyPI to customize the UCX version used at runtime. -For example, to switch to using UCX 1.19 at runtime, run the following. +For example, to switch to using UCX 1.18 at runtime, run the following. :: - # CUDA 13 - pip install 'libucx-cu13>=1.19.0,<1.20' - # CUDA 12 - pip install 'libucx-cu12>=1.19.0,<1.20' + pip install 'libucx-cu12>=1.18.0,<1.19' UCX-Py with UCX system install @@ -264,7 +253,7 @@ If a UCX system install is available, building and installing UCX-Py can be done # or for develop build pip install -v -e . -To ensure that system install of UCX is always used at runtime (and not the ``libucx-cu{12,13}`` wheels), set the following +To ensure that system install of UCX is always used at runtime (and not the ``libucx-cu12`` wheels), set the following environment variable in the runtime environment. ::