2019.01.05更新:
使用tensorflow-gpu 1.7.0时总是遇到这个报错:
2019-01-04 09:00:18.042768: F tensorflow/core/kernels/conv_ops.cc:712] Check failed: stream->parent()->GetConvolveAlgorithms( conv_parameters.ShouldIncludeWinogradNonfusedAlgo<T>(), &algorithms)
本来一直以为是tensorflow-gpu版本的问题,折腾许久才知道是cudnn版本的问题,注意报错中的那个数字712,这就是cudnn装错了,装成了7.1.2
我的环境是ubuntu16.04,cuda9.0,cudnn7.0.5,这里需要特别注意,正常情况下,照着我这个版本装是没有问题的,但是我由于先装了cudnn7.1.2,后来没有删除7.1.2,直接回滚到的7.0.5,软链接没设置好!
查看cuda和cudnn版本:
cat /usr/local/cuda/version.txt
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
注意,以上问题只使用这两个命令是查不出来的,因为查到的cudnn就是7.0.5,需要使用ll /usr/local/cuda/lib64/
来查,借用了这个博客里的结果,我的忘记截图了,大概就是这么个意思,有的地方是7.0.5,有的地方是7.1.2,总之就是很乱。
...
lrwxrwxrwx 1 root root 13 1月 27 12:25 libcudnn.so -> libcudnn.so.7*
lrwxrwxrwx 1 root root 17 1月 27 12:25 libcudnn.so.7 -> libcudnn.so.7.0.5*
-rwxr-xr-x 1 root root 287624224 4月 28 08:55 libcudnn.so.7.0.5*
-rwxr-xr-x 1 root root 331455744 4月 28 08:55 libcudnn.so.7.1.2*
...
解决方案
上面那个博客里面也有写,不过我是这样做的:参考
- 删除原来的cudnn的所有东西(因为我把软链接设置错了,所以就一不做二不休全删了)
sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*
- 重新安装cudnn7.0.5,在终端cd到刚解压的cuda文件夹
sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp lib64/lib* /usr/local/cuda/lib64/
- cd到/usr/local/cuda/lib64/文件夹下,建立软链接(注意版本号换成你自己的)
sudo chmod +r libcudnn.so.7.0.5
sudo ln -sf libcudnn.so.7.0.5 libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so
sudo ldconfig
- 做完以上几步后,重新检测,注意关注cudnn那几行,如果全都变成了7.0.5相关的就好了。
cd /usr/local/cuda/lib64/
ll
参考链接:
https://blog.csdn.net/MacwinWin/article/details/80236111
以上尝试过了上面的方法依旧不能解决问题,可以参考这里:https://github.com/tensorflow/tensorflow/issues/6698
原文:
曾经用tensorflow-gpu1.4.0的时候,也遇到过这种问题,当使用cuda8.0+cudnn6.0+tensorflow-gpu1.4.0就可以了,亲测可用。
这里附上cudnn6.0的网盘下载链接:https://pan.baidu.com/s/1ho4VqXeCBQgCQ5cFHtIEZw 密码:mbca
升级cudnn的方法:https://blog.csdn.net/Teeyohuang/article/details/79660547 ,旧的cudnn5.1不用删除,直接用cudnn6覆盖就可以了。