如何选择指定的GPU来运行CUDA程序?

Posted

技术标签:

【中文标题】如何选择指定的GPU来运行CUDA程序?【英文标题】:how to choose designated GPU to run CUDA program? 【发布时间】:2014-10-23 05:55:35 【问题描述】:

我的 PC(带有 CUDA 6.0 的 ubuntu 12.04 x86)有 2 个 GPU,我有一些 CUDA 程序,还有一个用 python 编写的程序来管理它们。

例如,我想选择一个 GPU 来运行一些 CUDA 程序,并选择另一个 GPU 来运行其他 CUDA 程序。但是管理过程在 CUDA 代码之外,所以我不能在 CUDA 程序中使用“cudaSetDevice”API。也就是说,CUDA程序是不可更改的,我只能选择它们之外的GPU。

有可能吗?

【问题讨论】:

“但是管理过程在CUDA代码之外”——那么它在哪里呢?实际上,“CUDA 代码”是什么意思?一个内核或整个应用程序,包括主机和设备代码? 【参考方案1】:

一种选择是在程序环境中使用CUDA_VISIBLE_DEVICE 来限制它看到的设备:

$ deviceQuery |& grep ^Device
Device 0: "Tesla M2090"
Device 1: "Tesla M2090"
$ CUDA_VISIBLE_DEVICES=0 deviceQuery |& grep ^Device
Device 0: "Tesla M2090"
$

查看CUDA developer zone website的更多信息。

【讨论】:

以上是关于如何选择指定的GPU来运行CUDA程序?的主要内容,如果未能解决你的问题,请参考以下文章

按位置选择的CUDA GPU,但如何将默认设置为设备0以外的东西?

cuda中如何选择block尺寸

如何从 C# 调用 CUDA

如何使用软件实现在没有 GPU 的情况下运行 CUDA?

Keras/Tensorflow选择GPU/CPU运行

[转] pytorch指定GPU