无法识别GPU以运行模块

时间:2018-08-13 07:33:54

标签: tensorflow gpu

我有2台GPU机器可与ID 2和3一起使用,并希望全部使用它们来适应模型。这是我的代码,

os.environ['CUDA_VISIBLE_DEVICES'] = '2, 3'

使用tf,device('/ gpu:2'):

critic_model.fit(x,y,epochs =10)

使用tf.device('/ gpu:3'):

history = model.fit(x,y,epochs=19)

但是,当我检查nvidia-smi时,发现仅使用了机器2,我想知道为什么吗?

任何想法都可能有帮助!

1 个答案:

答案 0 :(得分:1)

这里有多个问题:

例如,Tensorflow具有“自己的” GPU编号,独立于您计算机上的ID。因此,当您传递CUDA_VISIBLE_DEVICES=2,3时,Tensorflow将看到这两个GPU,但在程序中它们分别是'/gpu:0''/gpu:1'。由于'/gpu:2''/gpu:3'都不存在,我怀疑所有操作都只是放在'/gpu:0'或CPU上。

但是,主要问题在于,这根本不是您使用with tf.device的方式。您需要将模型创建包装到上下文管理器中。即所有的op调用(例如tf.nn.conv2dtf.matmul等)都需要包装。在您致电model.fit时,操作已经创建(默认情况下放到'/gpu:0'上),并且您的with tf.device语句不执行任何操作。