某些资源(如GPU或某些数据存储)最好独占使用,即一次只使用一个客户端。
Dask支持按名称1(别名)选择工作人员子集,因此我可以将GPU工作限制为GPU工作人员。
在这种情况下,我将如何锁定资源?即即使两个独立的客户提交工作,一个给定的工人也应该一次只能运行一个任务。
答案 0 :(得分:0)
今天处理此问题的最佳方法是为每个GPU创建一个单独线程的单独工作者
user@host1$ dask-worker scheduler:8786
user@host1$ dask-worker scheduler:8786 --nthreads 1 --name gpu-1
user@host2$ dask-worker scheduler:8786
user@host2$ dask-worker scheduler:8786 --nthreads 1 --name gpu-2
user@host3$ dask-worker scheduler:8786
user@host3$ dask-worker scheduler:8786 --nthreads 1 --name gpu-3
将一些任务提交给整个群集,并将其他任务提交给那些GPU工作者
>>> gpu_workers = ['gpu-1', 'gpu-2', 'gpu-3']
>>> client = Client('scheduler:8786')
>>> data = client.map(load, filenames)
>>> futures = client.map(process, data, workers=gpu_workers)
(有关向某些计算机提交任务的更多方法,请参阅data locality docs
这在某些方面不太理想: