Не удалось запустить Blas GEMV: m = 3, n = 2 [Op: MatMul] - PullRequest
0 голосов
/ 13 декабря 2018

Когда я запускаю следующий код, я получаю сообщение об ошибке:

E tensorflow/stream_executor/cuda/cuda_blas.cc:654] failed to run cuBLAS routine cublasSgemv_v2: CUBLAS_STATUS_EXECUTION_FAILED
Traceback (most recent call last):
File "modelAndLayer.py", line 16, in <module>
y_pred=model(X)
File "/home/cxsbg/anaconda3/envs/dl36/lib/python3.6/site-packages/tensorflow/python/keras/_impl/keras/engine/base_layer.py", line 314, in __call__
output = super(Layer, self).__call__(inputs, *args, **kwargs)
File "/home/cxsbg/anaconda3/envs/dl36/lib/python3.6/site-packages/tensorflow/python/layers/base.py", line 717, in __call__
outputs = self.call(inputs, *args, **kwargs)
File "modelAndLayer.py", line 10, in call
output=self.dense(input)
File "/home/cxsbg/anaconda3/envs/dl36/lib/python3.6/site-packages/tensorflow/python/keras/_impl/keras/engine/base_layer.py", line 314, in __call__
output = super(Layer, self).__call__(inputs, *args, **kwargs)
File "/home/cxsbg/anaconda3/envs/dl36/lib/python3.6/site-packages/tensorflow/python/layers/base.py", line 717, in __call__
outputs = self.call(inputs, *args, **kwargs)
File "/home/cxsbg/anaconda3/envs/dl36/lib/python3.6/site-packages/tensorflow/python/layers/core.py", line 163, in call
outputs = gen_math_ops.mat_mul(inputs, self.kernel)
File "/home/cxsbg/anaconda3/envs/dl36/lib/python3.6/site-packages/tensorflow/python/ops/gen_math_ops.py", line 4305, in mat_mul
_six.raise_from(_core._status_to_exception(e.code, message), None)
File "<string>", line 3, in raise_from
tensorflow.python.framework.errors_impl.InternalError: Blas GEMV launch failed:  m=3, n=2 [Op:MatMul]

Мой GPU RTX2080 , а драйвер v410 .Cuda v9.0 , cudnn v7 .Тензор-GPU v1.8 (я устал на v1.8 и v1.12).Питон v3.6 (я пробовал как v3.6, так и v2.7).Система Ubuntu 16.04 (я тоже устал на win10).

Проблема всегда возникает на тензор-gpu, но работает на процессоре тензор-поток.

Код здесь(простая линейная модель):

import tensorflow as tf
tf.enable_eager_execution()
X=tf.constant([[1.,2.,3,],[4.,5.,6.]])
Y=tf.constant([[10.],[20.]])
class Linear(tf.keras.Model):
    def __init__(self):
        super().__init__()
        self.dense=tf.keras.layers.Dense(units=1,kernel_initializer=tf.zeros_initializer(),bias_initializer=tf.zeros_initializer())
    def call(self,input):
        output=self.dense(input)
        return output
model=Linear()
optimizer=tf.train.GradientDescentOptimizer(learning_rate=1e-3)
for i in range(1000):
    with tf.GradientTape() as tape:
        y_pred=model(X)
        loss=tf.reduce_mean(tf.square(y_pred-Y))
    grads=tape.gradient(loss,model.variables)
    optimizer.apply_gradients(zip(grads,model.variables))
print(model.variables)

1 Ответ

0 голосов
/ 14 декабря 2018

Я думаю, что ошибка вызвана tf.enable_eager_execution (), так как я проверял это много раз.Спасибо автору , который-версия-cuda-can-can-work-with-rtx-2080 .Когда я использую cuda9.2, ошибка исправлена.

...