Skip to main content

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:

  1. YAML configuration files: distributed-ucxx.yaml
  2. Environment variables: Using the DASK_DISTRIBUTED_UCXX_ prefix
  3. 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 now distributed-ucxx.*
  • distributed.rmm.pool-size is now distributed-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-cu13 0.52.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for distributed-ucxx-cu13 0.52.0
File Interpreter ABI Platform
distributed_ucxx_cu13-0.52.0-py3-none-manylinux_2_28_aarch64.manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64, Linux glibc 2.28+ ARM64 Details

Release files / distributed_ucxx_cu13-0.52.0-py3-none-manylinux_2_28_aarch64.manylinux_2_28_x86_64.whl

Download URL distributed_ucxx_cu13-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
e53ff3b448fcb2ea779a990d36251eabe43e3e8df36fcbafa1763252cead59fe
BLAKE2b-256 checksum
How to use checksums
4fa662b8a3c571816da19ba64646635b55bf65ad9108f2a11c2325d67005d372
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Release history Release notifications | RSS feed

This release

0.52.0 This release

1 release file

0.51.1

1 release file

0.51.0

1 release file

0.50.1

1 release file

0.49.0

1 release file

0.48.0

1 release file

0.47.0

1 release file

0.46.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page