gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:26:39 49 4
gpt4 key购买 nike

我最近在家里的机器上安装了第二个 GPU (Tesla K40),我的搜索表明第一个 PCI 插槽成为为 CUDA 作业选择的默认 GPU。一个很好的链接正在解释它可以在这里找到:

Default GPU Assignment

我原来的 GPU 是 TITAN X,也启用了 CUDA,但它确实最适合单精度计算,而 Tesla 更适合 double 。我对小组的问题是是否有办法将我的默认 CUDA 编程设备设置为始终是第二个?显然我每次都可以在代码中指定要使用的设备,但我希望我可以配置我的设备,使其始终默认使用 Tesla 卡。

或者是打开盒子并物理交换设备位置的唯一方法吗?不知何故,这对我来说似乎是错误的......

如有任何建议或相关链接可供跟进,我们将不胜感激。

最佳答案

正如您已经指出的,cuda 运行时有 its own heuristic用于订购 GPU 并为其分配设备索引。

CUDA_VISIBLE_DEVICES environment variable将允许您修改此顺序。

例如,假设在日常使用中,我的显示设备被枚举为设备 0,我的首选 CUDA GPU 被枚举为设备 1。没有使用 cudaSetDevice 编写的应用程序,例如,将默认使用枚举为 0 的设备。如果我想更改它,在 linux 下我可以使用类似的东西:

CUDA_VISIBLE_DEVICES="1" ./my_app

使 cuda 运行时将通常为设备 1 的设备枚举为此应用程序运行的设备 0(在这种情况下,普通设备 0 将对 CUDA“隐藏”)。您只需导出该变量(例如 bash)即可使该 session “永久”存在:

export CUDA_VISIBLE_DEVICES="1"
./my_app

如果我只是想反转默认的 CUDA 运行时顺序,但仍然让两个 GPU 都可供应用程序使用,我可以这样做:

CUDA_VISIBLE_DEVICES="1,0" ./deviceQuery

还有其他规范选项,例如使用 nvidia-smi 提供的 GPU UUID 标识符(而不是设备索引)。

引用the documentationthis writeup

关于按位置选择的 CUDA GPU,但如何将默认值设置为设备 0 以外的其他值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31628407/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com