在matmul上使用GPU的Tensorflow问题。 GPU无法识别

时间:2016-02-16 09:15:55

标签: gpu matrix-multiplication tensorflow invalid-argument

我用gpu,cuda 7.0和cudnn 6.5安装了tensorflow。当我导入张量流时效果很好。

我试图在Tensorflow上运行一个简单的矩阵乘法,它不想使用我的gpu,虽然它似乎认出来了。我的计算机上有一个nvidia geforce 970m和一个带有两个titan Z的集群。

我的第一个代码是:

import tensorflow as tf
import numpy as np

size=100
#I create 2 matrix
mat1 = np.random.random_sample([size, size])*100
mat2 = np.random.random_sample([size, size])*100

a = tf.constant(mat1)
b = tf.constant(mat2)
c = tf.matmul(a, b)
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
sess.run(c)

此代码有效,结果如下:

Const_1: /job:localhost/replica:0/task:0/gpu:0
I tensorflow/core/common_runtime/simple_placer.cc:289] Const_1: /job:localhost/replica:0/task:0/gpu:0
Const: /job:localhost/replica:0/task:0/gpu:0
I tensorflow/core/common_runtime/simple_placer.cc:289] Const: /job:localhost/replica:0/task:0/gpu:0
MatMul: /job:localhost/replica:0/task:0/cpu:0
I tensorflow/core/common_runtime/simple_placer.cc:289] MatMul: /job:localhost/replica:0/task:0/cpu:0

所以在我的方式中,tensorflow使用我的gpu创建常量但不是matmul(这很奇怪)。然后,我强制这样的gpu:

with tf.device("/gpu:0"):
    a = tf.constant(mat1)
    b = tf.constant(mat2)
    c = tf.matmul(a, b)
    sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
    sess.run(c)

Tensorflow返回:

InvalidArgumentError: Cannot assign a device to node 'MatMul': Could not satisfy explicit device specification '/gpu:0'

如果有人有同样的问题或想法,我会很高兴看到你的回答!

1 个答案:

答案 0 :(得分:2)

我没有足够的声誉来评论,我遇到过类似的问题,我的问题就在这里

TensorFlow: critical graph operations assigned to cpu rather than gpu