UCX Communication Module for Distributed
This is the UCX communication backend for Dask Distributed, providing high-performance communication capabilities using the UCX (Unified Communication X) framework. It enables efficient GPU-to-GPU communication via NVLink (CUDA IPC), InfiniBand support, and various other high-speed interconnects.
Installation
This package is typically installed as part of the UCXX project build process. It can also be installed separately via conda-forge:
mamba install -c conda-forge distributed-ucxx
Or via PyPI (requires selection of CUDA version):
pip install distributed-ucxx-cu13 # For CUDA 13.x
pip install distributed-ucxx-cu12 # For CUDA 12.x
Configuration
This package provides its own configuration system that replaces the UCX configuration previously found in the main Distributed package. Configuration can be provided via:
- YAML configuration files:
distributed-ucxx.yaml - Environment variables: Using the
DASK_DISTRIBUTED_UCXX_prefix - Programmatic configuration: Using Dask's configuration system
Configuration Schema
The configuration schema is defined in distributed-ucxx-schema.yaml and supports various options:
- UCX transport configuration:
tcp,nvlink,infiniband,cuda-copy, etc. - RMM configuration:
rmm.pool-size - Advanced options:
multi-buffer,environment
Example Configuration
New schema:
distributed-ucxx:
tcp: true
nvlink: true
infiniband: false
cuda-copy: true
create-cuda-context: true
multi-buffer: false
environment:
log-level: "info"
rmm:
pool-size: "1GB"
Legacy schema (may be removed in the future):
distributed:
comm:
ucx:
tcp: true
nvlink: true
infiniband: false
cuda-copy: true
create-cuda-context: true
multi-buffer: false
environment:
log-level: "info"
rmm:
pool-size: "1GB"
Environment Variables
New schema:
export DASK_DISTRIBUTED_UCXX__TCP=true
export DASK_DISTRIBUTED_UCXX__NVLINK=true
export DASK_DISTRIBUTED_UCXX__RMM__POOL_SIZE=1GB
Legacy schema (may be removed in the future):
export DASK_DISTRIBUTED__COMM__UCX__TCP=true
export DASK_DISTRIBUTED__COMM__UCX__NVLINK=true
export DASK_DISTRIBUTED__RMM__POOL_SIZE=1GB
Python Configuration
New schema:
import dask
dask.config.set({
"distributed-ucxx.tcp": True,
"distributed-ucxx.nvlink": True,
"distributed-ucxx.rmm.pool-size": "1GB"
})
Legacy schema (may be removed in the future):
import dask
dask.config.set({
"distributed.comm.ucx.tcp": True,
"distributed.comm.ucx.nvlink": True,
"distributed.rmm.pool-size": "1GB"
})
Usage
The package automatically registers itself as a communication backend for Distributed using the entry point ucxx. Once installed, you can use it by specifying the protocol:
from distributed import Client
# Connect using UCXX protocol
client = Client("ucxx://scheduler-address:8786")
Or when starting a scheduler/worker:
dask scheduler --protocol ucxx
dask worker ucxx://scheduler-address:8786
Migration from Distributed
If you're migrating from the legacy UCX configuration in the main Distributed package, update your configuration keys:
distributed.comm.ucx.*is nowdistributed-ucxx.*distributed.rmm.pool-sizeis nowdistributed-ucxx.rmm.pool-size
The old configuration schema is still valid for convenience, but may be removed in a future version.
See Also
Metadata
Release files for distributed-ucxx-cu12 0.52.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| distributed_ucxx_cu12-0.52.0-py3-none-manylinux_2_28_aarch64.manylinux_2_28_x86_64.whl | Python 3 | none | Linux glibc 2.28+ ARM64, Linux glibc 2.28+ x86-64 | Details for distributed_ucxx_cu12-0.52.0-py3-none-manylinux_2_28_aarch64.manylinux_2_28_x86_64.whl |
Release files / distributed_ucxx_cu12-0.52.0-py3-none-manylinux_2_28_aarch64.manylinux_2_28_x86_64.whl
| Download URL | distributed_ucxx_cu12-0.52.0-py3-none-manylinux_2_28_aarch64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 31.8 kB |
| Tags | Linux glibc 2.28+ ARM64 Linux glibc 2.28+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
c3dd01a5dc830420c2c531bf26bf9dc332d6c188deef590778872c5a5654a0b1
|
|
BLAKE2b-256 checksum How to use checksums |
c1a00edcf4e1124dbf1a6230448ae70642a9f05518fface7bae730e81e314c0f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Security for distributed-ucxx-cu12 0.52.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.