显式通信 (Explicit-comms)
在 Dask/Distributed 中,通信和调度开销可能成为主要的瓶颈。Dask-CUDA 通过引入一个在 Dask 任务中进行显式通信的 API 来解决这个问题。其思想是 Dask/Distributed 像往常一样生成工作进程并分发数据,而用户可以在工作进程上提交进行显式通信的任务。
这使得绕过 Distributed 的调度器并编写手工优化的计算和通信模式成为可能。目前,Dask-CUDA 包含一个针对用于合并和排序的 Dataframe shuffle (混洗) 操作的显式通信实现。
用法
为了在 Dask/Distributed 中自动使用显式通信 (explicit-comms),只需定义环境变量 DASK_EXPLICIT_COMMS=True
或在Dask 配置中设置 "explicit-comms"
键。
也可以在任务中手动使用显式通信 (explicit-comms),请参阅 API 和我们对 shuffle (混洗) 的实现以获得指导。