根据文档,默认GPU是id最低的GPU:
如果系统中有多个GPU,则GPU最低 默认情况下会选择ID。
是否可以从命令行或一行代码更改此默认值?
答案 0 :(得分:26)
Suever's answer正确显示了如何将您的操作固定到特定的GPU。但是,如果在同一台计算机上运行多个TensorFlow程序,建议您在启动进程之前设置CUDA_VISIBLE_DEVICES
环境变量以公开不同的GPU。否则,TensorFlow将尝试在所有可用GPU上分配几乎整个内存,这会阻止其他进程使用这些GPU(即使当前进程不使用它们)。
请注意,如果您使用CUDA_VISIBLE_DEVICES
,则设备名称"/gpu:0"
,"/gpu:1"
等会引用当前流程中的第0个和第1个可见设备
答案 1 :(得分:23)
要明确环境变量CUDA_VISIBLE_DEVICES
的使用:
仅在GPU 1上运行脚本my_script.py
,在Linux终端中,您可以使用以下命令:
username@server:/scratch/coding/src$ CUDA_VISIBLE_DEVICES=1 python my_script.py
说明语法的More示例:
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
供参考:
答案 2 :(得分:2)
如上所述in the documentation,您可以使用tf.device('/gpu:id')
指定默认设备以外的设备。
# This will use the second GPU on your system
with tf.device('/gpu:1'):
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
print sess.run(c)
答案 3 :(得分:0)
如果要在第二个GPU上运行代码,则假定您的计算机有两个GPU,则可以执行以下操作。
打开终端
通过键入 tmux 打开 tmux (您可以通过 sudo apt-get install tmux 安装它)
< / li>注意:默认情况下,tensorflow使用第一个GPU,因此,借助上述技巧,您可以在第二个GPU上分别运行另一个代码。
希望这会有所帮助!!