似乎它会自动使用gpu,但我不知道为什么。
首先,我声明如下
tf_config = tf.ConfigProto( allow_soft_placement=True )
tf_config.gpu_options.allow_growth = True
sess = tf.Session(config=tf_config)
keras.backend.set_session(sess)
然后我定义如下模型
with K.tf.device('/gpu:0'):
some keras model
很明显,它将使用gpu,并且我检查了它是否按预期使用了第一个gpu(索引为0)。
但是,我删除了该行
with K.tf.device('/gpu:0'):
并重新缩进所有keras模型。我运行了代码,看起来仍然像是使用第一个gpu(索引为0)。
在我的Ubuntu上,我使用nvidia-smi命令检查gpu的内存使用情况,然后在Windows上查看了进程管理器。
它们两者都占用gpu内存及其用法。
据我所知,如果我不将tensorflow用于其模型,则不会使用gpu。但是使用Keras时,它似乎自动使用了gpu ...是因为我运行了代码
tf_config = tf.ConfigProto( allow_soft_placement=True )
tf_config.gpu_options.allow_growth = True
sess = tf.Session(config=tf_config)
keras.backend.set_session(sess)
还是我想念其他原因吗?
答案 0 :(得分:4)
根据documentation,TensorFlow将在默认情况下使用GPU:
如果TensorFlow操作同时具有CPU和GPU实施,则将操作分配给设备后, GPU设备将被赋予优先级。例如,matmul同时具有CPU和GPU内核。 在具有设备cpu:0和gpu:0的系统上,将选择gpu:0来运行