选择要用的GPU: CUDA_VISIBLE_DEVICES

本文详细介绍了如何在服务器中使用CUDA_VISIBLE_DEVICES环境变量选择特定的GPU运行程序,包括Linux和Windows系统的临时和永久设置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务器中有多个GPU,选择特定的GPU运行程序可在程序运行命令前使用:CUDA_VISIBLE_DEVICES=0命令。0为服务器中的GPU编号,可以为0, 1, 2, 3等,表明对程序可见的GPU编号。

1. 命令:

CUDA_VISIBLE_DEVICES=1     # 只有编号为1的GPU对程序是可见的,在代码中gpu[0]指的就是这块儿GPU
CUDA_VISIBLE_DEVICES=0,2,3 # 只有编号为0,2,3的GPU对程序是可见的,在代码中gpu[0]指的是第0块儿,
						   # gpu[1]指的是第2块儿,gpu[2]指的是第3块儿
CUDA_VISIBLE_DEVICES=2,0,3 # 只有编号为0,2,3的GPU对程序是可见的,但是在代码中gpu[0]指的是第2块儿,
						   # gpu[1]指的是第0块儿,gpu[2]指的是第3块儿
--------------------- 
# 作者:__Lingyue__ 
# 来源:优快云 
# 原文:https://blog.youkuaiyun.com/cfarmerreally/article/details/80321276 
# 版权声明:本文为博主原创文章,转载请附上博文链接!

2. 使用

临时设置:

Linux: export CUDA_VISIBLE_DEVICES=1
windows:  set CUDA_VISIBLE_DEVICES=1

永久设置:

linux:~/.bashrc 的最后加上export CUDA_VISIBLE_DEVICES=1,然后source ~/.bashrc
windows:
打开我的电脑环境变量设置的地方,直接添加就行了。
### 关于 `CUDA_VISIBLE_DEVICES` 命令未找到的问题 当尝试设置 `CUDA_VISIBLE_DEVICES` 环境变量时遇到 “command not found” 的错误,通常是因为该命令并非实际可执行文件或脚本的一部分,而是一个用于控制可见 GPU 设备列表的环境变量名称。以下是可能的原因以及解决方案: #### 可能原因分析 1. **误解为命令** 用户可能误以为 `CUDA_VISIBLE_DEVICES` 是一个可以直接运行的命令,但实际上它只是一个环境变量名[^1]。 2. **环境配置不完整** 如果系统的 Bash 配置文件(如 `.bashrc` 或 `/etc/profile`)中缺少必要的路径定义,则可能导致其他 CUDA 工具无法正常工作,间接影响到环境变量的正常使用[^2]。 3. **Shell 类型差异** 不同类型的 Shell 对环境变量的支持方式有所不同。如果当前使用的不是支持 POSIX 标准的传统 Shell(例如 Zsh 而非 Bash),可能会引发兼容性问题[^3]。 #### 解决方案 为了正确设置并验证 `CUDA_VISIBLE_DEVICES` 环境变量,请按照以下方法操作: ##### 方法一:临时设置环境变量 可以在终端会话期间通过如下指令手动设定此变量: ```bash export CUDA_VISIBLE_DEVICES=0,1 ``` 上述例子表示仅使第 0 和第 1 张显卡对程序可用。注意这里的索引是从零开始计数的GPU编号[^4]。 ##### 方法二:永久化修改 为了让每次新开启的新 shell 自动加载这些设置,可以编辑用户的个人初始化脚本`.bashrc`或者全局生效的`/etc/environment` 文件加入相应条目。比如向 ~/.bashrc 添加下面这行代码实现默认只显示第一个GPU给应用程序使用: ```bash echo 'export CUDA_VISIBLE_DEVICES="0"' >> ~/.bashrc && source ~/.bashrc ``` ##### 方法三:检查 NVIDIA Driver & CUDA Installation Status 确认已经正确安装了 Nvidia 显卡驱动程序和对应的 CUDA toolkit 版本之后再继续下一步骤。可以通过下列命令来核实状态: ```bash cat /proc/driver/nvidia/version # 查看NVIDIA驱动版本信息 nvcc --version # 检查CUDA编译器版本号 ``` 完成以上步骤后重新启动计算机确保所有更改生效即可解决问题。 --- ### 示例代码片段 以下是如何利用 Python 来检测系统中的设备情况的一个简单示例: ```python from tensorflow.python.client.device_lib import list_local_devices devices = list_local_devices() for d in devices: print(d.physical_device_desc) ``` --- ### 相关问题
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值