CUDA9.0+Cudnn7.0+caffe重新编译

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/uniqueyyc/article/details/83338889

本来装好了cuda8.0+cudnn6.0,由于各种原因,不得不改。。。
看到大佬切换自如 https://blog.csdn.net/u010821666/article/details/79957071 ,我还是抛弃8.0吧。。。

(一)下载

https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=runfilelocal
在这里插入图片描述

https://developer.nvidia.com/rdp/cudnn-archive
在这里插入图片描述
下载了cudnn v7.0.5 library for linux

(二)安装cuda9.0

(1)cuda9.0安装
在安装目录下运行:

sudo sh cuda_9.0.176_384.81_linux.run

在这里插入图片描述
因为已经装过384的英伟达显卡驱动了,就不再装了。
在这里插入图片描述
文件中也出现了cuda-9.0

(2)安装cudnn

tar -zxvf cudnn-8.0-linux-x64-v6.0.tgz 
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ -d

解压缩,移动到cuda存储位置
因为我之前安装cuda8.0时设置过环境变量,所以这里不必重复,有需要可以查看我之前的博文:https://blog.csdn.net/uniqueyyc/article/details/81099878


后期添补,可能是我没有添加链接造成错误的,后期我做了这步操作

sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库
cd /usr/local/cuda/lib64/sudo rm -rf libcudnn.so libcudnn.so.7 #删除原有动态文件
sudo ln -s libcudnn.so.7.0.5 libcudnn.so.7 #生成软衔接
sudo ln -s libcudnn.so.7 libcudnn.so #生成软链接
//当然版本号有所不同的话改一下就行了,主要分一下主版本号完整版本号,文件夹中都可以查到。

(3)测试
cuda-9.0的sample目录下,对任意的sample进行make

sudo make

编译完后运行例子

./deviceQuery 

(4)结果显示
在这里插入图片描述

(三)重新编译caffe

make all -j16

存在相当多的问题

(1)问题一在这里插入图片描述

解决方案:
删除Makefile.config中的两行
在这里插入图片描述

(2)问题二

在这里插入图片描述
最怕的问题,版本的冲突真的来了。。。
因为我没有找到我的cuda8.0中的卸载脚本,所以直接删除cuda-8.0的整个文件夹。虽然知道以后将有无尽的烦恼,之前环境都会崩。。但是无可奈何,大不了从头再来。原因应该是cuda8.0没有删除干净、/usr/local/lib里面的软连接还是链接到了8.0的。
删除后重新编译,不行的话可能需要重新编译opencv.
删除之后提示
在这里插入图片描述
继续尝试 (失败):https://www.cnblogs.com/fanwendi2312/p/8438575.html

sudo cp opencv-3.2.0/build/lib/libopencv_core.so.3.2 /usr/local/lib/libopencv_core.so.3.2 && sudo ldconfig

还是不行,所以肯定是需要重新编译opencv了(其实是链接有问题,但是我不怎么懂,本脑筋重装)
重新编译opencv,本想加入opencv_contrib加入一起编译,发现一直报错,原因是下载的版本没有与opencv配套需要重新下载opencv_contrib_3.4.0 下载地址:https://github.com/opencv/opencv_contrib/releases
一天时间一直在重新编译opencv3.4都出错,各种错,晕,然而第二天我怀疑了一下cuda有没有因为删除cuda8.0而出问题,重复操作了一下cuda9.0的安装,然后删除之前所有的opencv,重新解压缩,重新编译,然后居然只有一点点问题,和昨天完全不同,然后居然过了。
参考:
https://blog.csdn.net/u011383131/article/details/79942339
https://www.cnblogs.com/aimhabo/p/8721340.html
https://ricky.moe/2017/08/27/ubuntu-opencv-3-2-0-install/

(3)问题三

后来实在受不了重新装了系统,一切从头来过
安装好opencv3.4以后,Python无法调用

Python 2.7.15 |Anaconda, Inc.| (default, May  1 2018, 23:32:55) 
[GCC 7.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named cv2
>>> 

解决方案

sudo vim /etc/bash.bashrc
//在最后添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH                          

问题解决
参见博文(8、配置):https://blog.csdn.net/guduruyu/article/details/72965535
解决了之后过了会又不行了

//使用了这个命令
export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages

Anaconda安装参考:https://my.oschina.net/u/2306127/blog/636519

2018.10.25/11:17

此刻真正开始编译caffe

大多数都是参考如下博文:
https://blog.csdn.net/yhaolpz/article/details/71375762
https://blog.csdn.net/qq_31261509/article/details/78755968附带有如何修改Makefile.config和Makefile
https://hk.saowen.com/a/2cf482f3327651c21e6df4ca4ddf49e8748ce5932a8da396752b76c2befcc16c
超级多错误汇总的博文:https://blog.csdn.net/zziahgf/article/details/72900948

主要是Makefile.config文件的修改,上述参考的是cuda8.0版本的caffe,这里是cuda9,稍有不同,
我的Makefile.config文件https://download.csdn.net/download/uniqueyyc/10743319。

sudo make clean
sudo make all -j16//后面的数字看自己的配置选择,不知道的时候也可以不加,上下几个命令都同理
sudo make test -j16
sudo make runtest -j16

(3)问题三

在执行sudo make runtest时出错

.build_release/tools/caffe
.build_release/tools/caffe: error while loading shared libraries: libcudart.so.9.0: cannot open shared object file: No such file or directory
Makefile:542: recipe for target 'runtest' failed
make: *** [runtest] Error 127

解决方案:修改了.bashrc中的配置,之前没有加上具体的版本号,加上之后就ok了

export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-9.0/bin:$PATH
sudo cp /usr/local/cuda-9.0/lib64/libcudart.so.9.0 /usr/local/lib/libcudart.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcublas.so.9.0 /usr/local/lib/libcublas.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcurand.so.9.0 /usr/local/lib/libcurand.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcudnn.so.7 /usr/local/lib/libcudnn.so.7 && sudo ldconfig

成功!
在这里插入图片描述

安装Python接口

// 安装依赖
sudo apt-get install python-numpy
sudo apt install python-pip
sudo pip install -U scikit-image

//编译python接口
sudo make pycaffe -j8

问题一

>>> import caffe
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/seugraph/sorftware/caffe/python/caffe/__init__.py", line 1, in <module>
    from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer
  File "/home/seugraph/sorftware/caffe/python/caffe/pycaffe.py", line 15, in <module>
    import caffe.io
  File "/home/seugraph/sorftware/caffe/python/caffe/io.py", line 2, in <module>
    import skimage.io
ImportError: No module named skimage.io

解决方案

conda install matplotlib
pip install scikit-image

问题二

>>> import caffe
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/seugraph/sorftware/caffe/python/caffe/__init__.py", line 1, in <module>
    from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer
  File "/home/seugraph/sorftware/caffe/python/caffe/pycaffe.py", line 15, in <module>
    import caffe.io
  File "/home/seugraph/sorftware/caffe/python/caffe/io.py", line 8, in <module>
    from caffe.proto import caffe_pb2
  File "/home/seugraph/sorftware/caffe/python/caffe/proto/caffe_pb2.py", line 6, in <module>
    from google.protobuf.internal import enum_type_wrapper
ImportError: No module named google.protobuf.internal

解决方案:

conda install protobuf
conda install jupyter

问题三

>>> import caffe
RuntimeError: module compiled against API version 0xc but this version of numpy is 0xa
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/seugraph/sorftware/caffe/python/caffe/__init__.py", line 1, in <module>
    from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer
  File "/home/seugraph/sorftware/caffe/python/caffe/pycaffe.py", line 13, in <module>
    from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, \
ImportError: numpy.core.multiarray failed to import
>>> 

解决方案:

pip uninstall numpy
pip install -U numpy

问题四(warning)

>>> import caffe
/home/seugraph/anaconda2/envs/py2/lib/python2.7/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.
  warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')
>>> 

解决方案:

 conda install matplotlib

成功!
在这里插入图片描述

CUDNN问题

测试一直错误:

 ./mnistCUDNN 
cudnnGetVersion() : 7005 , CUDNN_VERSION from cudnn.h : 7005 (7.0.5)
Host compiler version : GCC 5.4.0
There are 1 CUDA capable devices on your machine :
device 0 : sms 28  Capabilities 6.1, SmClock 1683.0 Mhz, MemSize (Mb) 11169, MemClock 5505.0 Mhz, Ecc=0, boardGroupID=0
Using device 0

Testing single precision
CUDNN failure
Error: CUDNN_STATUS_INTERNAL_ERROR
mnistCUDNN.cpp:394
Aborting...

解决
参考:https://www.alatortsev.com/2018/01/17/fixing-cudnn_status_internal_error/

原因是:corrupted cache
解决方案:

sudo rm -rf ~/.nv/

重新测试:


Result of classification: 1 3 5

Test passed!

成功!

猜你喜欢

转载自blog.csdn.net/uniqueyyc/article/details/83338889
今日推荐