Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更改TensorFlow中的默认GPU_Python_Tensorflow - Fatal编程技术网

Python 更改TensorFlow中的默认GPU

Python 更改TensorFlow中的默认GPU,python,tensorflow,Python,Tensorflow,根据文档,默认GPU是具有最低id的GPU: 如果您的系统中有多个GPU,则具有最低 默认情况下,将选择ID 是否可以从命令行或一行代码更改此默认值?如上所述,您可以使用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,

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

如果您的系统中有多个GPU,则具有最低 默认情况下,将选择ID

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

如上所述,您可以使用
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)
正确显示如何将操作固定到特定GPU。但是,如果在同一台计算机上运行多个TensorFlow程序,建议在启动进程之前设置环境变量以公开不同的GPU。否则,TensorFlow将尝试在所有可用GPU上分配几乎全部内存,这将阻止其他进程使用这些GPU(即使当前进程没有使用它们)


请注意,如果您使用
CUDA\u VISIBLE\u DEVICES
,则设备名称
“/gpu:0”
“/gpu:1”
,等等。指的是当前进程中的第0个和第1个可见设备。

只是为了明确环境变量
CUDA\u VISIBLE\u 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
供参考:


如果您想在第二个GPU上运行代码,它假设您的机器有两个GPU,您可以执行以下技巧

  • 开放式终端

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

  • 在tmux中运行这行代码:CUDA_VISIBLE_DEVICES=1 python YourScript.py
  • 注意:默认情况下,tensorflow使用第一个GPU,因此使用上述技巧,您可以在第二个GPU上单独运行另一个代码


    希望这会有帮助

    您可以使用
    CUDA\u VISIBLE\u DEVICES
    env var使一些GPU对TensorFlow不可见。我刚刚做了
    export CUDA\u VISIBLE\u DEVICES=“0”
    ,在我只想使用GPU=0的情况下,它似乎可以工作。它是否正确?如果我想替换默认设置?
    取消CUDA\u VISIBLE\u设备
    将恢复后续
    python
    会话的默认行为。数字、0、1等是否根据PCI总线顺序?如果
    使用tf.device(“/gpu:1”)使用
    ,则每次需要使用不同的GPU时,都必须修改代码。