What is Dask-CUDA and when to use it
mainDask-CUDA is an extension of Dask's LocalCluster and Worker designed specifically for distributed GPU workloads. While standard Dask can run GPU-accelerated libraries like cuDF, CuPy, and Numba, Dask-CUDA provides specialized orchestration for multi-GPU nodes that standard Dask Distributed does not handle automatically.
Key features include:
- Automatic per-GPU worker instantiation: Automatically launches one worker per available GPU on a node using
LocalCUDAClusteror thedask cuda workerCLI. - Automatic CPU affinity: Sets CPU affinity for each GPU to optimize memory transfer paths.
- Automatic InfiniBand selection: When using UCX, it selects the optimal InfiniBand device for each GPU.
- GPU-to-Host memory spilling: Supports spilling GPU memory to host memory when utilization limits are reached.
- Optimized GPU memory allocation: Integrates with
RAPIDS Memory Manager (RMM)to allocate per-GPU memory pools when using UCX, avoiding expensive memory buffer mappings.