Tensorflow默认使用哪个GPU

Tensorflow默认使用哪个GPU,tensorflow,Tensorflow,我的计算机上安装了两个GPU。当我运行代码时,我总是看到Tensorflow的调试信息,它将显示我的两个GPU卡的信息。然而,如果我没有指定TF,将使用哪一个?如果我有多个GPU卡,是否需要为TF指定一个GPU以提高效率。谢谢~ Tensorflow使用系统上所有可用的GPU 如果您有2个GPU,Tensorflow同时看到这两个GPU,它将在两个设备上分配相同的内存,并在需要时使用一些调度算法将元素从一个GPU内存交换到另一个GPU内存 您可以使用带有tf.device(“/GPU:”)上下文

我的计算机上安装了两个GPU。当我运行代码时,我总是看到Tensorflow的调试信息,它将显示我的两个GPU卡的信息。然而,如果我没有指定TF,将使用哪一个?如果我有多个GPU卡,是否需要为TF指定一个GPU以提高效率。谢谢~

Tensorflow使用系统上所有可用的GPU

如果您有2个GPU,Tensorflow同时看到这两个GPU,它将在两个设备上分配相同的内存,并在需要时使用一些调度算法将元素从一个GPU内存交换到另一个GPU内存

您可以使用带有tf.device(“/GPU:”)上下文管理器的
来决定哪个GPU执行指定的操作。但是,内存是在每个GPU中分配的

相反,如果您想只使用一些GPU并避免在任何其他设备上分配任何东西,则必须使用CUDA环境变量
CUDA\u VISIBLE\u DEVICES

在执行python脚本之前,可以指定Tensorflow将看到的CPU。这样,您就可以确定只会使用某些设备

例如,如果您希望Tensorflow只看到您的第二个GPU,您可以用这种方式运行脚本:

CUDA_VISIBLE_DEVICES=1 python execute_script.py

如果您不想每次运行代码之前都
导出CUDA\u VISIBLE\u DEVICES=0
或添加
CUDA\u VISIBLE\u DEVICES=0 Python xx.py
,那么最好在Python代码中设置GPU选项:

# Set GPU
os.environ['CUDA_VISIBLE_DEVICES'] = flags.gpu_choice
flags.gpu\u选项可以是类似于
'0,1,2'

然后,您只需按照Tensorflow的教程进行操作即可:


默认情况下,tensorflow只使用一个gpu,如果您想使用多个gpu,您需要手动指定哪些操作在哪个设备上运行,代码类似于
with tf.devide(“/gpu:1”):
。如果我有两个gpu卡,可以找到一个多gpu训练示例,TF会使用哪一个?我不知道,tensorflow会根据一些规则拾取其中的一个卡。我测试了它们,发现两个内存都会被使用,而一个卡用于计算。
with tf.device('/device:GPU:2'):
  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)