目的:使用CUDA环境变量CUDA_VISIBLE_DEVICES来限定CUDA程序所能使用的GPU设备

目的:使用CUDA环境变量CUDA_VISIBLE_DEVICES来限定CUDA程序所能使用的GPU设备

环境:

系统:Win10
环境:Opencv3.4.0/4.1.0
显卡:1080ti

问题

实际项目中使用了一个GPU程序,在双卡1080ti机器上运行,程序会自动搜寻并使用0号和1号GPU卡。性能测试要求程序只运行在一张GPU卡上,但程序没有参数设置GPU的地方。

解决方式

采取CUDA环境变量CUDA_VISIBLE_DEVICES来限定程序运行的GPU设备解决问题

// CUDA_VISIBLE_DEVICES设置说明,设置device对程序可见
CUDA_VISIBLE_DEVICES=1       // 仅使用device1 (即卡一)
CUDA_VISIBLE_DEVICES=0,1     // 仅使用device 0和 device1
CUDA_VISIBLE_DEVICES="0,1"	 // 同上, 仅使用device 0和 device1
CUDA_VISIBLE_DEVICES=0,2,3   // 仅使用device 0, device2和device3
CUDA_VISIBLE_DEVICES=2,0,3   // 仅使用device0, device2和device3

#那么最后两条的区别是什么呢?
CUDA_VISIBLE_DEVICES后面的参数依次是设置gpu[0],gpu[1], gpu[2]...等的device编号。
所以区别在于: 0,2,3意思是gpu[0]指向device0, gpu[1], 指向devcie2, gpu[2]指向device3;
而2,0,3意思是gpu[0]指向device2, gpu[1], 指向devcie0, gpu[2]指向device3;

再举例说明,如果当前主机有5张显卡,默认情况下5个device对程序都可以见,默认排序device0 - 4。
如果现在我们只希望使用第一张和第三张显卡,并且程序代码里看到的分别对应0,1。
那么设置应该如下:
CUDA_VISIBLE_DEVICES=0,2

上述设置参数含义应该已经明晰了,那么下面说明两种设置生效方法:

  1. 永久设置, 在环境变量中设置

linux环境:
vim ~/.bash.rc,在最后添加上CUDA_VISIBLE_DEVICES=0,2
然后source ~/.bash.rc使之生效即可。

windows环境:
直接添加CUDA_VISIBLE_DEVICES=0,2进环境变量

  1. 临时设置,在程序启动脚本中添加:

linuxa环境:
export CUDA_VISIBLE_DEVICES=0,2

windows环境:
set CUDA_VISIBLE_DEVICES=0,2


  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值