tdi*_*ddy 2 cuda nvidia gpu-programming
我最近在家中的机器上安装了第二个GPU(Tesla K40),我的搜索建议第一个PCI插槽成为为CUDA作业选择的默认GPU。一个很棒的链接正在解释它,可以在这里找到:
我最初的GPU是TITAN X,也支持CUDA,但它实际上最适合单精度计算,而Tesla则更适合双精度。对于该小组,我的问题是是否有办法将我的默认CUDA编程设备始终设置为第二个?显然,我每次都可以在代码中指定要使用的设备,但是我希望可以对设备进行配置,使其始终默认使用特斯拉卡。
还是打开包装盒并实际交换设备位置的唯一方法?不知怎么对我来说...
任何建议或相关链接可以跟进。
正如您已经指出的那样,cuda运行时具有自己的启发式功能,可用于订购GPU并为其分配设备索引。
该CUDA_VISIBLE_DEVICES 环境变量将允许你修改这个排序。
例如,假设在普通使用中,我的显示设备被枚举为设备0,而我首选的CUDA GPU被枚举为设备1。cudaSetDevice例如,不使用任何编写的应用程序将默认使用枚举为0的设备。我想更改此设置,在Linux下,我可以使用类似以下内容的命令:
CUDA_VISIBLE_DEVICES="1" ./my_app
Run Code Online (Sandbox Code Playgroud)
导致cuda运行时将通常是设备1的设备枚举为该应用程序运行的设备0(在这种情况下,普通设备0从CUDA中“隐藏”)。您只需导出该变量(例如bash),即可将该会话设置为“永久”:
export CUDA_VISIBLE_DEVICES="1"
./my_app
Run Code Online (Sandbox Code Playgroud)
如果我只是想颠倒默认的CUDA运行时顺序,但仍然使两个GPU均可用于应用程序,则可以执行以下操作:
CUDA_VISIBLE_DEVICES="1,0" ./deviceQuery
Run Code Online (Sandbox Code Playgroud)
还有其他规范选项,例如使用提供的GPU UUID标识符(而不是设备索引)nvidia-smi。
| 归档时间: |
|
| 查看次数: |
7126 次 |
| 最近记录: |