Dask-CUDA

Dask-CUDA 是一个库,扩展了 Dask.distributed 的单机版 LocalClusterWorker,用于分布式 GPU 工作负载。它是 RAPIDS 开源软件库套件的一部分,用于 GPU 加速数据科学。

动机

虽然 Distributed 可以通过诸如 cuDFCuPyNumba 等库来利用 GPU 工作负载,但 Dask-CUDA 提供了一些 Distributed 不具备的独特功能:

  • 每 GPU worker 的自动实例化 – 使用 Dask-CUDA 的 LocalCUDACluster 或 dask cuda worker CLI 将自动为执行节点上可用的每个 GPU 启动一个 worker,避免了显式选择 GPU 的需要。

  • CPU 亲和性的自动设置 – 自动为每个 GPU 设置 CPU 亲和性,防止内存传输走次优路径。

  • InfiniBand 设备的自动选择 – 在通过 InfiniBand 启用 UCX 通信时,Dask-CUDA 会自动为每个 GPU 选择最优的 InfiniBand 设备(参见 UCX 集成 获取配置 UCX 通信的说明)。

  • 从 GPU 溢出内存 – 对于内存密集型工作负载,当 GPU 达到默认或用户指定的内存利用率限制时,Dask-CUDA 支持将数据从 GPU 溢出到主机内存。

  • GPU 内存分配 – 使用 UCX 通信时,可以使用 RAPIDS Memory Manager 分配每 GPU 内存池,以避免 otherwise 会需要的昂贵的内存缓冲区映射。

目录