dask如何在集群中分配工作?

时间:2016-12-09 14:07:31

标签: dask

可以dask分布式处理不均匀的工作节点吗?

例如,如果4核计算机上有一个dask worker,而2核计算机上有第二个dask worker,那么是否会使用所有6个核心?

还是严格要求dask在所有计算机之间分配工作吗?也就是说,dask可以选择将所有工作发送到一台计算机,因为它确定如果分发会有太多的通信开销吗?

1 个答案:

答案 0 :(得分:4)

  

可以dask分布式处理不均匀的工作节点吗?

是的,节点的核心数量,内存量可能不均匀,甚至还有像GPU这样的特殊硬件,Dask中有一些机制可以解决这个问题。

  

例如,如果4核计算机上有一个dask worker,而2核计算机上有第二个dask worker,那么是否会使用所有6个核心?

是的,Dask调度程序将自动相对于每台机器的核心数进行负载平衡。如果由于某种原因这是行为不端(例如核心数量不正确)那么工作窃取机制无论如何都会平衡它。

  

还是严格要求dask在所有计算机之间分配工作吗?也就是说,dask可以选择将所有工作发送到一台计算机,因为它确定如果分发会有太多的通信开销吗?

Dask调度程序维护每个中间结果的大小,并决定将数据移动到具有这些大小和预期运行时的某些计算机。当然,Dask会决定工人应该保持闲置,因为中间结果太昂贵而无法沟通。

如果您愿意,您也可以手动控制(虽然自动启发式应该没问题)。见http://distributed.readthedocs.io/en/latest/locality.html

有关此主题的更多信息,请访问http://distributed.readthedocs.io/en/latest/scheduling-policies.html