我对dask distributed有疑问。
假设我想运行一组任务,每个任务在不同数量的GPU上运行,例如,一个任务在2个GPU上运行(类型A),而其他几个任务在1个GPU上运行(类型B)。我的理解是,可以使用"资源"设置多个工作人员。属性。例如,我可能总共有3个GPU,并设置一个具有资源变量" gpus = 2"另一个用" gpus = 1"。很明显," gpus"这是一个抽象术语(见here)。
但是,这意味着在类型A的任务在具有2个GPU的worker上运行之后,该worker只会同时执行一个B类任务,从而不会利用与此相关的其他可用GPU。工人。它是否正确?
理想情况下,我想定义一个具有GPU总数(此处为3)的工作程序,当执行作业时,它会更新(类似于ncores)。因此,工作者应该能够并行运行类型A的单个任务和类型B的一个任务,然后并行运行三个类型为B的任务。这可能吗?
干杯
答案 0 :(得分:3)
是的,你可以说工人有三个GPU。工作人员将跟踪当前正在运行的任务的资源,并确保它不会运行资源总需求超过工作人员资源的任务。