假设一个dask集群有一些CPU设备以及一些GPU设备。每个设备都运行一个单独的dask-worker。现在,问题是我如何发现dask-worker的底层设备是CPU或GPU。
例如: - 如果dask-worker在CPU设备上运行,我应该知道它在CPU上运行,或者如果dask-worker在GPU设备上运行,我应该以编程方式知道设备类型。有什么方法可以通过编程方式知道这个。?
答案 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
机制还是使用数组/数据帧。