有没有办法知道dask-worker是在CPU设备还是GPU设备上运行。

时间:2018-04-19 10:41:28

标签: dask dask-distributed

假设一个dask集群有一些CPU设备以及一些GPU设备。每个设备都运行一个单独的dask-worker。现在,问题是我如何发现dask-worker的底层设备是CPU或GPU。

例如: - 如果dask-worker在CPU设备上运行,我应该知道它在CPU上运行,或者如果dask-worker在GPU设备上运行,我应该以编程方式知道设备类型。有什么方法可以通过编程方式知道这个。?

1 个答案:

答案 0 :(得分:0)

上述评论中的链接答案是关于事先用资源标记不同的工作人员,然后根据他们可能需要的资源来分配任务。

也许你想要以异构的方式运行你的计算,也就是说,你没有介意哪个任务可以在GPU机器上运行而哪些不是,但在这种情况下GPU可用,您想要使用它。从dask的角度来看,这种情况实际上非常简单。

考虑一下您可能拥有一个检测GPU是否存在的功能的位置,以及可以运行以处理数据的两个功能,具体取决于具体情况。

def process_data(d):
    if this_machine_has_gpu():
        return gpu_process(d)
    else:
        return cpu_process(d)

完全允许将此结构用作dask任务,无论是使用delayed机制还是使用数组/数据帧。