如何将任务分配给GPU和CPU任务工作者? [英] How to assign tasks to GPU and CPU Dask workers?

查看:10
本文介绍了如何将任务分配给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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆