【问题标题】:How to enable/disable a specific graphic card?如何启用/禁用特定显卡?
【发布时间】:2014-03-03 11:28:37
【问题描述】:

我正在研究“富士通”机器。它安装了 2 个 GPU:Quadro 2000 和 Tesla C2075。 Quadro GPU 有 1 GB RAM,Tesla GPU 有 5GB。 (我使用 nvidia-smi -q 的输出进行了检查)。当我运行 nvidia-smi 时,输出显示 2 个 GPU,但 Tesla 的显示显示为关闭。 我正在运行一个内存密集型程序,并希望使用 5 GB 的可用 RAM,但每当我运行程序时,它似乎都在使用 Quadro GPU。 有没有办法在程序中使用 2 个中的特定 GPU? Tesla GPU被“禁用”是否意味着它的驱动程序没有安装?

【问题讨论】:

  • 您是否尝试通过您自己的应用程序以编程方式触发此操作?或者这是关于机器的一般性问题?
  • @DanHarris 这是一个普遍的问题。我只想知道如何使用我机器上安装的 5GB GPU?
  • 我会说这个问题在superuser.com 上会更好,因为 Stack Overflow 是针对编程问题的。 SuperUser 更适合提出此类问题。
  • 这个问题在这里很好。这个问题的答案对 CUDA 程序员很有用。
  • 一般可以使用cudaSetDevice。它需要一个数字,这是您要在其上运行计算的 GPU ID。哪个数字是指哪个卡可以根据这个帖子How to get card specs programatically in CUDA接受的答案来确定。您能否澄清一下但特斯拉的显示屏显示为关闭是什么意思?

标签: cuda gpu nvidia


【解决方案1】:

您可以使用环境或以编程方式控制对 CUDA GPU 的访问。

您可以使用环境变量CUDA_VISIBLE_DEVICES 来指定对任何应用程序可见的 1 个或多个 GPU 的列表,以及它们的可见性顺序。例如,如果 nvidia-smi 将您的 Tesla GPU 报告为 GPU 1(而您的 Quadro 报告为 GPU 0),那么您可以设置 CUDA_VISIBLE_DEVICES=1 以使 CUDA 代码仅使用 Tesla。

见我的blog post on the subject

要以编程方式控制您的应用程序使用的 GPU,您应该使用 device management API of CUDA。使用cudaGetDeviceCount查询设备数量,然后可以cudaSetDevice对每个设备,使用cudaGetDeviceProperties查询其属性,然后选择符合您应用条件的设备。您还可以使用cudaChooseDevice 选择与您指定的设备属性最匹配的设备。

【讨论】:

    猜你喜欢
    • 2014-05-23
    • 2011-02-06
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 2015-09-24
    相关资源
    最近更新 更多