故障排除

这是Dask-CUDA和各种系统中遇到的常见问题列表。

错误的设备索引

在创建工作线程时,通常依赖于nvidia-smi提供的设备索引,这也是Dask-CUDA中的默认设置。在大多数情况下,nvidia-smiCUDA_VISIBLE_DEVICES提供了一对一的映射,但在某些系统中,顺序可能不匹配。虽然CUDA_VISIBLE_DEVICES通过PCI总线ID索引GPU,但nvidia-smi按最快的GPU排序。在DGX Station A100中常见问题,该设备包含4个A100 GPU,外加一个显示GPU,但根据PCI总线ID,显示GPU可能不是最后一个GPU。为了纠正这一点并确保根据PCI总线ID进行映射,在启动Python进程时需要设置CUDA_DEVICE_ORDER=PCI_BUS_ID环境变量:

$ CUDA_DEVICE_ORDER=PCI_BUS_ID python
$ CUDA_DEVICE_ORDER=PCI_BUS_ID ipython
$ CUDA_DEVICE_ORDER=PCI_BUS_ID jupyter lab
$ CUDA_DEVICE_ORDER=PCI_BUS_ID dask-cuda-worker ...

对于DGX Station A100,显示GPU通常是PCI总线ID排序中的第四个,因此需要使用GPU 0、1、2和4来运行Dask-CUDA:

>>> from dask_cuda import LocalCUDACluster
>>> cluster = LocalCUDACluster(CUDA_VISIBLE_DEVICES=[0, 1, 2, 4])