如何将任务分配给GPU和CPU任务工作者? [英] How to assign tasks to GPU and CPU Dask workers?
本文介绍了如何将任务分配给GPU和CPU任务工作者?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在设置一个要在PSC Bridge P100 GPU节点上执行的Dask脚本。这些节点提供2个GPU和32个CPU核心。我想启动基于CPU和GPU的任务工作者。
将启动CPU工作进程:
dask-worker --nprocs 1 --nthreads 1
当GPU工作进程为:
CUDA_VISIBLE_DEVICE=0 dask-worker --nprocs 1 --nthreads 1
我的工作流由一组仅限CPU的任务和一组取决于CPU任务结果的GPU任务组成。是否有方法将GPU任务仅绑定到GPU工作进程?
此外,我希望确保GPU任务与它们所依赖的CPU任务位于相同的计算节点上。我能以某种方式这样做吗?
推荐答案
对于您的这类问题,使用dask.distributed
后端(更复杂的任务调度程序)运行dask
是有意义的,它提供了称为"工作人员资源"的功能。
它允许您为每个工作进程指定具有相关计数的虚拟工作进程资源,例如"GPU=2"。然后,您可以在客户端指定每个任务需要哪些资源以及需要多少资源。请参阅文档here。
为确保GPU任务与其所依赖的任务位于同一计算节点上,您可以:
- 相应设置资源,即明确拆分任务 使用"GPU1"和"GPU2"等资源
- 或者,将CPU和后续的GPU任务捆绑到一个任务中,方法是手动定义包含函数或使用文档中所述的任务图优化here(我正在考虑"融合"任务)。
这篇关于如何将任务分配给GPU和CPU任务工作者?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文