有没有办法知道dask工作程序是在CPU设备上运行还是在GPU设备上运行。?

有没有办法知道dask工作程序是在CPU设备上运行还是在GPU设备上运行。?,dask,dask-distributed,Dask,Dask Distributed,假设一个dask集群有一些CPU设备和一些GPU设备。每个设备运行一个dask工作进程。现在,问题是我如何发现dask工作程序的底层设备是CPU或GPU 例如:-如果dask工作程序在CPU设备上运行,我应该知道它在CPU上运行,或者如果dask工作程序在GPU设备上运行,我应该以编程方式知道设备类型。有什么方法可以通过编程来了解这一点吗?上面评论中的链接答案是关于提前按资源标记不同的工人,然后根据他们可能需要的资源分配任务 相反,也许您希望以异构的方式运行计算,也就是说,您不介意哪个任务可以在

假设一个dask集群有一些CPU设备和一些GPU设备。每个设备运行一个dask工作进程。现在,问题是我如何发现dask工作程序的底层设备是CPU或GPU


例如:-如果dask工作程序在CPU设备上运行,我应该知道它在CPU上运行,或者如果dask工作程序在GPU设备上运行,我应该以编程方式知道设备类型。有什么方法可以通过编程来了解这一点吗?

上面评论中的链接答案是关于提前按资源标记不同的工人,然后根据他们可能需要的资源分配任务

相反,也许您希望以异构的方式运行计算,也就是说,您不介意哪个任务可以在GPU机器上运行,哪个任务不可以,但如果GPU可用,您希望利用它。从达斯克的观点来看,这个案子其实很简单

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

def process_data(d):
    if this_machine_has_gpu():
        return gpu_process(d)
    else:
        return cpu_process(d)
此结构完全可以用作dask任务,无论是使用
延迟
机制还是使用数组/数据帧。

这可能会有所帮助