CUDA_VISIBLE_DEVICES作用

CUDA_VISIBLE_DEVICES 使用指定的GPU组

在一机器多卡的机器中,我们可以指定使用某几台GPU,而剩下的GPU在程序中不会被使用。

例:选择特定的GPU组运行程序可在程序运行命令前,如【train.py】开头部分使用如下命令:

CUDA_VISIBLE_DEVICES=0

0为服务器中的GPU编号,可以为0, 1, 2, 3等,表明对该程序LInux服务器可见的GPU编号。

命令讲解

CUDA_VISIBLE_DEVICES=1     

【代码注释】我们设置服务器中只有编号为1的GPU组对程序是可见的。
在程序中,系统会对我们刚才设置的GPU组进行重新编号,从【0】开始。当我们在程序中【device】位置设置成【GPU 0】 ,那么,我们就会使用原服务器中的编号为1的GPU。

CUDA_VISIBLE_DEVICES=2,1,4 

【代码注释】我们设置服务器中只有编号为2、1、4三块GPU组成的GPU组对程序是可见的。
在程序中,系统会对我们刚才设置的GPU组进行重新编号,从【0】开始,一直到【2】结束。此时【0】对应的是原服务器中的编号为2的GPU,【1】对应的是原服务器中的编号为1的GPU,【2】对应的是原服务器中的编号为4的GPU。
当我们在程序中【device】位置设置成【GPU 1】,那么,我们就会使用原服务器中的编号为1的GPU。
【注意】系统给我们GPU组排列的顺序是从【0】开始,是对我们预先设置好的GPU组进行重排布。

参考

### 设置和查看 `CUDA_VISIBLE_DEVICES` 环境变量 #### 在命令行环境中设置 `CUDA_VISIBLE_DEVICES` 对于Linux操作系统,可以通过`export`命令来设定环境变量。例如: ```bash export CUDA_VISIBLE_DEVICES=1 ``` 如果希望让CUDA仅看到多个特定的GPU,则可以如下操作: ```bash export CUDA_VISIBLE_DEVICES=1,2 ``` 在Windows环境下,相应的设置方式为使用`set`命令: ```cmd set CUDA_VISIBLE_DEVICES=1 ``` 同样地,为了使CUDA能够访问多张显卡,在Windows下可这样配置: ```cmd set CUDA_VISIBLE_DEVICES=1,2 ``` 这些更改只会在当前会话中生效;一旦关闭终端窗口或重启计算机,就需要重新执行上述指令[^3]。 #### Python脚本内动态调整可见的GPU列表 当编写Python程序时,可以在代码里直接修改此环境变量,从而控制哪些GPU会被CUDA应用程序所利用: ```python import os os.environ["CUDA_VISIBLE_DEVICES"] = "1" # 或者针对多个GPU的情况: os.environ["CUDA_VISIBLE_DEVICES"] = "1,2" ``` 值得注意的是,这种做法应当尽可能早地完成——最好是在导入任何依赖于CUDA库(比如TensorFlow、PyTorch等)之前进行这样的设置。 #### 查看已设好的 `CUDA_VISIBLE_DEVICES` 值 要确认目前有效的`CUDA_VISIBLE_DEVICES`值,可以根据不同的平台采取相应的方法。在Unix-like系统上,可以用echo加上$符号加变量名的方式打印出来: ```bash echo $CUDA_VISIBLE_DEVICES ``` 而在Windows PowerShell或是CMD里面则是输入下面这条语句并回车: ```powershell echo %CUDA_VISIBLE_DEVICES% ``` 另外一种通用的办法就是借助Python本身来做这件事儿: ```python print(os.getenv('CUDA_VISIBLE_DEVICES')) ``` 这将会输出该环境变量的内容给用户查看。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值