根据文档,默认 GPU 是 ID 最低的那个:
如果您的系统中有多个 GPU,默认情况下将选择 ID 最小的 GPU。
是否可以从命令行或一行代码更改此默认值?
原文由 MBZ 发布,翻译遵循 CC BY-SA 4.0 许可协议
根据文档,默认 GPU 是 ID 最低的那个:
如果您的系统中有多个 GPU,默认情况下将选择 ID 最小的 GPU。
是否可以从命令行或一行代码更改此默认值?
原文由 MBZ 发布,翻译遵循 CC BY-SA 4.0 许可协议
只是要清楚环境变量的使用 CUDA_VISIBLE_DEVICES
:
要仅在 GPU 1 上运行脚本 my_script.py
,您可以在 Linux 终端中使用以下命令:
username@server:/scratch/coding/src$ CUDA_VISIBLE_DEVICES=1 python my_script.py
说明语法的 更多 示例:
Environment Variable Syntax Results
CUDA_VISIBLE_DEVICES=1 Only device 1 will be seen
CUDA_VISIBLE_DEVICES=0,1 Devices 0 and 1 will be visible
CUDA_VISIBLE_DEVICES="0,1" Same as above, quotation marks are optional
CUDA_VISIBLE_DEVICES=0,2,3 Devices 0, 2, 3 will be visible; device 1 is masked
CUDA_VISIBLE_DEVICES="" No GPU will be visible
供参考:
原文由 Franck Dernoncourt 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
Suever 的回答 正确地展示了如何将您的操作固定到特定的 GPU。但是,如果您在同一台机器上运行多个 TensorFlow 程序,建议您在启动进程之前设置
CUDA_VISIBLE_DEVICES
环境变量以公开不同的 GPU。否则,TensorFlow 将尝试在所有可用的 GPU 上分配几乎整个内存,这会阻止其他进程使用这些 GPU(即使当前进程没有使用它们)。请注意,如果您使用
CUDA_VISIBLE_DEVICES
,设备名称"/gpu:0"
,"/gpu:1"
中的设备名称 0 等是指 1 当前进程中的 可见 设备等