更改TensorFlow中的默认GPU

时间:2016-04-16 19:06:24

标签: python tensorflow

根据文档,默认GPU是id最低的GPU:

  

如果系统中有多个GPU,则GPU最低   默认情况下会选择ID。

是否可以从命令行或一行代码更改此默认值?

4 个答案:

答案 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,则可以执行以下操作。

  1. 打开终端

  2. 通过键入 tmux 打开 tmux (您可以通过 sudo apt-get install tmux 安装它)

    < / li>
  3. tmux 中运行以下代码行:CUDA_VISIBLE_DEVICES = 1 python YourScript.py

注意:默认情况下,tensorflow使用第一个GPU,因此,借助上述技巧,您可以在第二个GPU上分别运行另一个代码。

希望这会有所帮助!!