是否可以在单个系统上将 CUDA 计算能力与两个不同的 gpu 混合?

是否可以在单个系统上将 CUDA 计算能力与两个不同的 gpu 混合?

操作系统是 Debian 10。我目前有一台 Geforce 1060 GTX,我正尝试使用它来执行各种 CUDA 任务。但是,没有办法“重新调整”在显卡上运行的进程,所以当我的任务运行时,我在 x.org 中会遇到严重的延迟。

明显的解决方法是“获得第二个 gpu”,所以我正在尝试这样做。目前正在看 K10,它几乎满足我所有的 CUDA 需求。(而且 K10 的功率足够低,并且有额外的内存,使其成为理想的选择)

但是,K10 的计算能力只有 3.0。我还想运行一些其他任务,这些任务需要 3.5 甚至更高的计算能力。

在花钱购买 K10 之前,我想知道这是否可行?是否可以同时在 K10 上运行 CUDA 任务(最高可达 CC 3.0)和 1060 GTX(最高可达 CC 6.1)?nvidia 驱动程序是否涵盖这种极端情况?这似乎是一种罕见的情况,但我真的希望这是可能的。

答案1

可以通过以下方式将任务绑定到给定的 GPU: CUDA_VISIBLE_设备 环境变量。您可以使用此变量来限制应用程序在单个设备或一组设备上运行。

您可以创建一个脚本,将 CUDA_VISIBLE_DEVICES 设置为以逗号分隔的设备 ID 列表,以使只有这些设备对应用程序可见。

来自帖子 如何选择在哪个 GPU 上运行作业?

1例如,要指定 CUDA 设备,您可以使用以下方式设置 CUDA_VISIBLE_DEVICES

export CUDA_VISIBLE_DEVICES=1

或者

CUDA_VISIBLE_DEVICES=1 ./cuda_executable

前者设置当前 shell 的生命周期变量,后者仅设置该特定可执行文件调用的生命周期变量。

如果要指定多个设备,请使用

export CUDA_VISIBLE_DEVICES=0,1

或者

CUDA_VISIBLE_DEVICES=0,1 ./cuda_executable

因此回答你的问题:

我想知道,这有用吗?

答案:是的,它可以工作,使用 CUDA_VISIBLE_DEVICES 手动将任务分配给正确的 GPU。

相关内容