Ubuntu 14.04,CUDA版本7.5.18,每晚构建的Tensorflow
tf.nn.max_pool()在tensorflow中运行操作时,出现以下错误:
[tensorflow / stream_executor / cuda / cuda_dnn.cc:286]已加载的cudnn库:5005,但是源代码是针对4007编译的。如果使用二进制安装,请升级您的cudnn库以使其匹配。如果从源构建,请确保加载的库与您在编译配置期间指定的版本匹配。
W tensorflow / stream_executor / stream.cc:577]尝试使用不具有DNN支持的StreamExecutor执行DNN操作
追溯(最近一次通话):
...
如何在tensorflow的编译配置中指定我的cudnn版本?
我正在尝试配置theano以gpu在我的 Windows 机器上使用。我已经设置.theanorc为使用,device= gpu但是当我运行一些应该使用 gpu 的代码时,我收到以下错误:
Can not use cuDNN on context None: cannot compile with cuDNN. We got this error:
c:\users\...\appdata\local\temp\try_flags_pt24sj.c:4:19: fatal error: cudnn.h: No such file or directory
compilation terminated.
Mapped name None to device cuda0: GeForce 840M (0000:03:00.0)
Run Code Online (Sandbox Code Playgroud)
我检查了我的CUDA_PATH=C:\Program Files\NVIDIA\v8.0GPU Computing Toolkit\CUDA 以查看 cudnn.h 是否存在,并且我在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include
通常 dnn 中的一层由 MatMul、BiasAdd、Relu 组成,cuBlas 为 MatMul 提供 Gemm,我们可以在另一个内核中为 GPU 做 BiasAdd 和 Relu。它们是两个 GPU lanuch 调用,有没有办法将它们融合在一起并使它们只是一个?我查看了cuBlas, cudnn,但没有找到任何东西。我认为这并不难,因为 BiasAdd 和 Relu 只是元素操作,而融合使它更有效率。
这是背景:
我正在开发一个多 dnn 模型集成的在线预测服务。通过分析我的程序,我发现我的 CPU 和 GPU 都没有得到充分利用,而是在与 GPU 相关的函数调用(如 lanuchKernel)上请求块。似乎libcuda 有一个大锁。我正在使用 tensorflow,启用 XLA,所以我使用 nvprof 和 tensorflow HLO 来可视化 GPU 调用,并且只有点和融合(即biasadd 和 relu)操作。虽然做了kernel fusion,但是lanuchKernel调用还是太多,GPU利用率只有60%。我在一个过程中尝试了多个 cuda 上下文,改进是微不足道的。
顺便说一下,我使用的是一个 GPU,Tesla P100。
我的测试:
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()`
Run Code Online (Sandbox Code Playgroud)
错误:
C:\升\工作\ tensorflow-1.1.0\tensorflow\stream_executor\CUDA\cuda_driver.cc:405]
调用cuInit失败:CUDA_ERROR_NO_DEVICE
- >但"/ cpu:0"工作正常
配置:
为什么Tensorflow无法检测到我的GPU?
我已经在Ubuntu 16.04上使用Cuda 9.0和CuDNN 7.0.5以及vanilla Python 2.7安装了TensorFlow 1.7,虽然他们的CUDA和CuDNN样本运行良好,而TensorFlow看到了GPU(因此运行了一些TensorFlow示例),那些使用CuDNN (像大多数CNN的例子一样)没有.他们失败了这些信息性消息:
2018-04-10 16:14:17.013026: I tensorflow/stream_executor/plugin_registry.cc:243] Selecting default DNN plugin, cuDNN
25428 2018-04-10 16:14:17.013100: E tensorflow/stream_executor/cuda/cuda_dnn.cc:403] could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED
25429 2018-04-10 16:14:17.013119: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:369] driver version file contents: """NVRM version: NVIDIA UNIX x86_64 Kernel Module 384.130 Wed Mar 21 03:37:26 PDT 2018
25430 GCC version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9)
25431 """
25432 2018-04-10 16:14:17.013131: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:112] version string "384.130" made value 384.130.0
25433 2018-04-10 16:14:17.013135: E tensorflow/stream_executor/cuda/cuda_dnn.cc:411] possibly insufficient …Run Code Online (Sandbox Code Playgroud) 我正在尝试为一个非常大的输入 (5*100,000,000) 训练一个神经网络,它需要比预期更多的内存。这是一些最小的例子:
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import time
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv1d(in_channels=5, out_channels=1, kernel_size=100000000, stride=10)
def forward(self, x):
x = self.conv1(x)
x = torch.sigmoid(x)
return x
model = Net().cuda()
optimizer = optim.Adam(model.parameters(), lr=0.001)
criterion = torch.nn.BCELoss()
data = torch.normal(torch.zeros(1,5,100000000),torch.ones(1,5,100000000))
data = data.cuda()
label = torch.ones(1,1,1)
label = label.cuda()
for epoch in range(10):
output = model(data)
loss = criterion(output, label)
optimizer.zero_grad()
loss.backward()
optimizer.step()
print("Epoch :", …Run Code Online (Sandbox Code Playgroud) 我在使用新的tf.data tensorflow类实现输入管道时遇到问题。
具体来说,当我在预处理中包含卷积运算时(使用该map方法将其添加到管道中时),出现以下错误
tensorflow.python.framework.errors_impl.UnimplementedError: Generic conv implementation only supports NHWC tensor format for now.
[[{{node conv_debug}} = Conv2D[T=DT_FLOAT, data_format="NCHW", dilations=[1, 1, 1, 1], padding="SAME", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true](conv_debug-0-TransposeNHWCToNCHW-LayoutOptimizer, ArithmeticOptimizer/FoldMultiplyIntoConv_scaled_conv_debug_Const)]]
Run Code Online (Sandbox Code Playgroud)
当我从管道中排除卷积时,一切都会按预期进行。
我在下面附上了重现该问题所需的最少代码。
经过3种配置测试:
我做错了还是是CUDA / CUDnn相关问题?
谢谢!
import numpy as np
import tensorflow as tf
image_height, image_width = 100, 200
def _bytes_feature(value):
return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))
def serialize_to_record(record_name, label, image):
"""Create a data record and store …Run Code Online (Sandbox Code Playgroud) 我的张量流只打印出这一行:
I tensorflow/stream_executor/dso_loader.cc:152] successfully opened CUDA library libcublas.so.10.0 locally 运行时。
网上的Tensorflow日志有很多其他库正在加载,例如libcudnn。
因为我认为我的安装性能不是最佳,所以我试图找出是否是因为这个原因。任何帮助将不胜感激!
我的tf是1.13.1 NVIDIA驱动程序版本:418.67 CUDA版本:10.1(我还安装了10.0。这可能是问题吗?)
我安装了tensorflow-gpu来在我的GPU上运行我的tensorflow代码.但我不能让它运行.它继续给出上述错误.以下是我的示例代码,后跟错误堆栈跟踪:
import tensorflow as tf
import numpy as np
def check(W,X):
return tf.matmul(W,X)
def main():
W = tf.Variable(tf.truncated_normal([2,3], stddev=0.01))
X = tf.placeholder(tf.float32, [3,2])
check_handle = check(W,X)
with tf.Session() as sess:
tf.initialize_all_variables().run()
num = sess.run(check_handle, feed_dict =
{X:np.reshape(np.arange(6), (3,2))})
print(num)
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
我的GPU是相当不错的GeForce GTX 1080 Ti,拥有11 GB的vram,并且没有其他任何重要的运行(只是chrome),你可以在nvidia-smi中看到:
Fri Aug 4 16:34:49 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 381.22 Driver Version: 381.22 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Pytorch 实现字符 LSTM。但是我收到了 cudnn_status_bad_params 错误。这是训练循环。我在 line output = model(input_seq) 上遇到错误。
for epoch in tqdm(range(epochs)):
for i in range(len(seq)//batch_size):
sidx = i*batch_size
eidx = sidx + batch_size
x = seq[sidx:eidx]
x = torch.tensor(x).cuda()
input_seq =torch.nn.utils.rnn.pack_padded_sequence(x,seq_lengths,batch_first = True)
y = out_seq[sidx:eidx]
output = model(input_seq)
loss = criterion(output,y)
loss.backward()
optimizer.step()
/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py in __call__(self, *input, **kwargs)
487 result = self._slow_forward(*input, **kwargs)
488 else:
--> 489 result = self.forward(*input, **kwargs)
490 for hook in self._forward_hooks.values():
491 hook_result = hook(self, input, result)
/usr/local/lib/python3.6/dist-packages/torch/nn/modules/rnn.py in forward(self, …Run Code Online (Sandbox Code Playgroud) cudnn ×10
tensorflow ×7
gpu ×3
python ×3
windows ×2
nvidia ×1
pytorch ×1
theano ×1
theano-cuda ×1