本文参考文章链接:1. https://blog.csdn.net/balixiaxuetian/article/details/79154013
2.https://blog.csdn.net/jonms/article/details/79318566
第一步:安装依赖包
安装后续步骤或环境必需的依赖包,按ctrl+ALT+T进入终端,依次输入以下命令(可复制):
[plain] view plain copy
- sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
- sudo apt-get install --no-install-recommends libboost-all-dev
- sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
- sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
- sudo apt-get install git cmake build-essential
有一定几率安装失败而导致后续步骤出现问题,所以要确保以上依赖包都已安装成功,验证方法就是重新运行安装命令,如验证 git cmake build-essential是否安装成功共则再次运行以下命令:
[plain] view plain copy
- sudo apt-get install git cmake build-essential
界面提示如下则说明已成功安装依赖包,否则继续安装直到安装成功。
[plain] view plain copy
- Reading package lists... Done
- Building dependency tree
- Reading state information... Done
- build-essential is already the newest version (12.1ubuntu2).
- cmake is already the newest version (3.5.1-1ubuntu3).
- git is already the newest version (1:2.7.4-0ubuntu1.3).
- 0 upgraded, 0 newly installed, 0 to remove and 126 not upgraded.
假如有安装包一直下载失败,可以使用:
[plain] view plain copy
- sudo apt-get update
更新下载源,然后重新输入安装命令。
第二步:安装显卡驱动
1、检查自己的计算机是否具备CUDA安装条件
1)检查GPU是否支持CUDA
Windows下,可以通过NVIDIA GeForce Experience查看自己的GPU型号,或者通过百度、谷歌等搜索引擎来获取与自己PC相关的GPU信息。
Linux下,可以在终端下键入
$ lspci | grep -i nvidia
- 1
显示出你的NVIDIA GPU版本信息
然后去CUDA的官网查看自己的GPU版本是否在CUDA的支持列表中
2)验证自己的Linux版本是否支持 CUDA(Ubuntu 16.04和Ubuntu17.04都支持)
$ uname -m && cat /etc/*release
- 1
3)验证是否安装了gcc
$ gcc --version
- 1
如果没有,可以在终端键入
$ sudo apt-get install gcc
- 1
4)验证系统是否安装了kernel header和 package development
$ uname -r
$ sudo apt-get install linux-headers-$(uname -r)
- 1
- 2
满足要求后,便可进行下面的正式安装过程。
2、CUDA提供两种安装方式:package manager安装和runfile安装。
这里我选择runfile安装,采用runfile安装,CUDA自带的驱动可能无法定位内核信息,所以我们先安装NVIIDA驱动。
3、安装NVIDIA驱动程序(如果事先有装但失败的,先卸载)
$ sudo apt remove --purge nvidia*
- 1
1)禁用nouveau驱动
终端中运行:
$ lsmod | grep nouveau
- 1
如果有输出,则代表nouveau正在运行, 需要我们手动禁掉nouveau。
在Ubuntu16.04中,我们可以通过以下操作禁用nouveau:
a.在/etc/modprobe.d中创建文件blacklist-nouveau.conf
$ sudo vim /etc/modprobe.d/blacklist-nouveau.conf
- 1
在文件中输入以下内容:
blacklist nouveau
options nouveau modeset=0
b.执行
$ sudo update-initramfs -u
- 1
c.查看nouveau是否已经成功禁用
$ lsmod | grep nouveau
- 1
若无内容输出,则禁用成功,若仍有内容输出,请检查上述操作,并重复。
操作无误但仍有输出,则可重启,进入用户登录界面时(不要登录进桌面),按Ctrl+Alt+F1进入字符终端界面,输入用户名和密码进行登录,登录成功后,再次查看
$ lsmod | grep nouveau
- 1
这时,我们已经成功禁用了nouveau,无输出
2)关闭图形化界面
$ sudo service lightdm stop
- 1
3)安装驱动
NVIDIA驱动安装也有多种方式,runfile文件形式的安装和apt安装
apt安装:
a.添加Graphic Drivers PPA
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt-get update
- 1
- 2
b.寻找合适的驱动版本
$ ubuntu-drivers devices
- 1
如上图,显示GTX 960M显卡建议的驱动版本是390
c.安装nvidia driver
$ sudo apt-get install nvidia-390
- 1
d.安装完成后,重启
$ sudo reboot
- 1
e.这时,执行下面的命令,查看驱动的安装状态
$ sudo nvidia-smi
$ sudo nvidia-settings
- 1
- 2
runfile文件安装:
runfile文件的安装先要安装gcc-multilib
$ sudo apt install gcc-multilib
- 1
接着,以NVIDIA-Linux-x86_64-390.25.run为例
$ sudo sh NVIDIA-Linux-x86_64-390.25.run
- 1
刚开始运行时,会有报错(预处理脚本错误,会问继续还是退出),不管错误继续,然后就是一路安装,重启即可。测试是否安装成功如上图所示
特别注意!!!!!!!!!!!!!!
虽然CUDA 9.1 安装包里说需要安装384.00版本之后的驱动,但是亲测384.98和384.111都是不支持CUDA 9.1的,这也在NVIDIA官方论坛里得到了NVIDIA工程师的肯定,巨坑!所以假如亲们无法安装CUDA 9.1安装包里自带的387版本的驱动,那么就放弃CUDA 9.1,转而下载安装CUDA 9.0。CUDA 9.0是支持384.xx版本的驱动的,配置方法完全相同,此博客同样适用,只是路径中若出现cuda-9.1的地方改成cuda-9.0即可。CUDA 9.0的下载见“10、补充”。
执行此命令约1分钟后会出现安装协议要你看,刚开始是0%,此时长按回车键让此百分比增长,直到100%,然后按照提示操作即可,先输入 accept ,然后是否安装显卡驱动选择no,因为前面已经装过了,我实际安装先装的cuda,后装的nvidia驱动,其实先后顺序应该无关
[html] view plain copy
- Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 387.26?
- (y)es/(n)o/(q)uit:n
之后会问你是否安装 nvidia-xconfig,选择no。
[html] view plain copy
- do you want to run nvidia-xconfig?
- (y)es/(n)o/(q)uit: n
是否安装 CUDN 9.1 都选择no。也就是我们这次只安装一个显卡驱动,目的是先保证显卡驱动安装成功,否则安装CUDA 9.1很容易失败。
[html] view plain copy
- Install the CUDA 9.1 Samples?
- (y)es/(n)o/(q)uit: n
[html] view plain copy
- Install the CUDA 9.1 Toolkit?
- (y)es/(n)o/(q)uit: n
安装完成后重启系统:
[html] view plain copy
- reboot
重启系统后看看桌面显示的分辨率正不正常。如果应用图标很大,像素很渣,说明显卡驱动没有安装成功,有可能是因为禁用nouveau没有生效,也有可能是驱动不匹配,这时候可以使用我提供的方法二。安装完成后通过以下命令查看显卡信息:
[html] view plain copy
- nvidia-settings
我的电脑显示如下信息:
方法二:直接在线安装(此方法需要联网),适用于CUDA 9.0
注意:再次提醒此方法暂时不适用于CUDA 9.1
首先仍旧是关闭桌面服务并卸载之前的显卡驱动(这两步见方法一),随后加入官方ppa源:
[html] view plain copy
- sudo add-apt-repository ppa:graphics-drivers/ppa
之后刷新软件库并安装显卡驱动:
[html] view plain copy
- sudo apt-get update
- sudo apt-get install nvidia-384 nvidia-settings nvidia-prime
我用此命令会自动安装 384.111版本的驱动(我使用 nvidia-367 安装的也是384.111版本的驱动)。安装完成后输入reboot重启系统,假如桌面分辨率没什么问题应该安装成功了。之后通过下面命令查看显卡信息:
[html] view plain copy
- nvidia-settings
第三步:配置环境变量
使用 gedit 命令打开配置文件:
[html] view plain copy
- sudo gedit ~/.bashrc
打开后在文件最后加入以下两行内容:
[python] view plain copy
- export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
- export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
保存并退出。
第四步:安装 CUDA 9.1
安装完显卡驱动后,CUDA toolkit和samples可单独安装,直接在终端运行安装,无需进入文本模式:
[html] view plain copy
- sudo sh cuda_9.1.85_387.26_linux.run --no-opengl-libs
执行此命令约1分钟后会出现安装协议要你看,刚开始是0%,此时长按回车键让此百分比增长,直到100%,然后按照提示操作即可,先输入 accept ,是否安装显卡驱动选择no:
[html] view plain copy
- Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 387.26?
- (y)es/(n)o/(q)uit: n
其他的都选择yes或者默认,等待安装完成:
[plain] view plain copy
- Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 387.26?
- (y)es/(n)o/(q)uit: n
- Install the CUDA 9.1 Toolkit?
- (y)es/(n)o/(q)uit: y
- Enter Toolkit Location
- [ default is /usr/local/cuda-9.1 ]:
- Do you want to install a symbolic link at /usr/local/cuda?
- (y)es/(n)o/(q)uit: y
- Install the CUDA 9.1 Samples?
- (y)es/(n)o/(q)uit: y
- Enter CUDA Samples Location
- [ default is /home/ccem ]:
- Installing the CUDA Toolkit in /usr/local/cuda-9.1 ...
- Installing the CUDA Samples in /home/ccem ...
- Copying samples to /home/ccem/NVIDIA_CUDA-9.1_Samples now...
- Finished copying samples.
- ===========
- = Summary =
- ===========
- Driver: Not Selected
- Toolkit: Installed in /usr/local/cuda-9.1
- Samples: Installed in /home/ccem
- Please make sure that
- - PATH includes /usr/local/cuda-9.1/bin
- - LD_LIBRARY_PATH includes /usr/local/cuda-9.1/lib64, or, add /usr/local/cuda-9.1/lib64 to /etc/ld.so.conf and run ldconfig as root
- To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-9.1/bin
- Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-9.1/doc/pdf for detailed information on setting up CUDA.
- ***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 9.1 functionality to work.
- To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
- sudo <CudaInstaller>.run -silent -driver
- Logfile is /tmp/cuda_install_36731.log
假如出现:
[plain] view plain copy
- Installing the CUDA Toolkit in /usr/local/cuda-9.1 …
- Missing recommended library: libGLU.so
- Missing recommended library: libX11.so
- Missing recommended library: libXi.so
- Missing recommended library: libXmu.so
原因是缺少相关的依赖库,安装相应库就解决了,安装库完成后重装一下CUDA Toolkit即可:
[plain] view plain copy
- sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
安装完成后配置CUDA环境变量,使用 gedit 命令打开配置文件:
[html] view plain copy
- sudo gedit ~/.bashrc
在该文件最后加入以下两行并保存:
[html] view plain copy
- export PATH=/usr/local/cuda/bin:$PATH #/usr/local/cuda和/usr/local/cuda-9.1是同一个文件夹,前者是后者的镜像
- export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
使该配置生效:
[html] view plain copy
- source ~/.bashrc
检验CUDA 是否安装成功,输入:
[plain] view plain copy
- cd /usr/local/cuda-9.1/samples/1_Utilities/deviceQuery
- sudo make
- ./deviceQuery
会出现你的显卡的详细信息。假如出现:
[plain] view plain copy
- ./deviceQuery Starting...
- CUDA Device Query (Runtime API) version (CUDART static linking)
- cudaGetDeviceCount returned 35
- -> CUDA driver version is insufficient for CUDA runtime version
- Result = FAIL
那说明显卡驱动版本和CUDA 9.1不适配,目前 384.xx版本的驱动是不支持CUDA 9.1 的,这时候就尝试安装更加新的驱动。若还是不行就放弃 CUDA 9.1,安装CUDA 9.0吧,趁还来得及。此博客同样适用于安装CUDA 9.0,只需将配置文件中出现cuda-9.1的地方改成cuda-9.0即可。
卸载CUDA 9.1 的方法:
[plain] view plain copy
- cd /usr/local/cuda/bin
- sudo ./uninstall_cuda_9.1.pl
卸载完成后如果显示:Not removing directory, it is not empty: /usr/local/cuda-9.1 ,假如需要重装CUDA 9.0的话就把这个文件夹删除。在/usr/local/路劲下输入:
[plain] view plain copy
- sudo rm -r cuda-9.1
或者查看
同时按住Alt + ctrl +F7,返回到图形化登录界面,输入密码登录。
如果能够成功登录,则表示不会遇到循环登录的问题,基本说明CUDA的安装成功了
重启电脑,检查Device Node Verification
注意:如果遇到循环登陆进不了系统,不要慌,在文本系统开启ctrl+alt+f1,具体可百度,比较容易https://blog.csdn.net/ssmixi/article/details/73483795
$ sudo reboot
$ ls /dev/nvidia*
- 1
- 2
a、若结果显示
/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
- 1
- 2
或显示出类似的信息,应该有三个(包含一个类似/dev/nvidia-nvm的),则安装成功。
b、大多数结果可能会是这样
ls: cannot access/dev/nvidia*: No such file or directory
- 1
- 2
或是这样的,只出现
/dev/nvidia0 /dev/nvidiactl
- 1
- 2
a中的一个或两个,但没有/dev/nvidia-num,即文件显示不全。
第五步:安装cuDNN v7
我提供的百度云文件解压后的cudnn文件以“.solitairetheme8”结尾,将其重命名为“.tgz”结尾的文件,然后解压到当前文件夹,得到一个cudn 文件夹,该文件夹下有include 和 lib64 两个文件夹,命令行进入其中的include 文件夹路径下,然后进行以下操作:
[html] view plain copy
- sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件
然后命令行进入 cudn/lib64 文件夹路径下,运行以下命令(CUDA 9.0也是一样的命令):
[html] view plain copy
- 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 #生成软链接
注意:第四个要看清自己cudn/lib64文件里那三个文件几点几,这里第三步7.0.5,我的是7.1.2后来才发现,这步没有修改所带来的问题非常严重,我随后会写解决办法。
然后需要将路径/usr/local/cuda/lib64 添加到动态库,分两步:
1)安装vim。输入:
[html] view plain copy
- sudo apt-get install vim-gtk
2)输入:
[html] view plain copy
- sudo vim /etc/ld.so.conf.d/cuda.conf
键盘按i进入编辑状态,添加文字:
[html] view plain copy
- /usr/local/cuda/lib64
然后按esc,输入:(注意有冒号)
[html] view plain copy
- :wq #保存退出
终端下接着输入 sudo ldconfig 命令使链接生效。
软链接后可以用sudo ldconfig -v 命令查看是否链接成功:是否有/usr/local/cuda/lib64文件夹,看清到底有没有,没有就错了。ldconfig命令的用途主要是在默认搜寻目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。
安装完成后可用 nvcc -V 命令验证是否安装成功,若出现以下信息则表示安装成功:
[html] view plain copy
- nvcc: NVIDIA (R) Cuda compiler driver
- Copyright (c) 2005-2017 NVIDIA Corporation
- Built on Fri_Nov__3_21:07:56_CDT_2017
- Cuda compilation tools, release 9.1, V9.1.85
第六步:安装 OpenCV 3.3.0
进入官网 : http://opencv.org/releases.html , 选择 3.3.0 版本的 sources , 下载 opencv-3.3.0.zip 。随后解压到你要安装的位置,命令行进入已解压的文件夹 opencv-3.3.0 目录下,执行:
[plain] view plain copy
- mkdir build # 创建编译的文件目录
- cd build
- cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
- make -j8 #编译
注意:在处理cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. 会卡住,网上有很多解决方案,最后我发现2.几版本和3.几版本,ippicv包不一样,3.几可能会在隐藏.cache中,ctrl+H可以看到,解决方案很杂,最后我也使用了发现不好用,最后发现是网速问题,连接手机热点完美解决,还有一定不要在虚拟机安装opencv,问题很多,在纯净linux里安装
在98%的时候会等很久很久,属于正常现象。编译过程很顺利,编译成功后安装:
[html] view plain copy
- sudo make install #安装
安装完成后通过查看 opencv 版本验证是否安装成功:
[html] view plain copy
- pkg-config --modversion opencv
卸载OpenCV的方法:进入OpenCV解压文件夹中的buid 文件夹:
[plain] view plain copy
- cd /home/ccem/opencv-3.4.0/build
运行:
[plain] view plain copy
- sudo make uninstall
然后把整个opencv-3.3.0文件夹都删掉。随后再运行:
[plain] view plain copy
- sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv
把一些残余的动态链接文件和空文件夹删掉。有些文件夹已经被删掉了所以会找不到路径。
第七步:安装 Caffe
首先cd 到你要安装的路径下运行:
[html] view plain copy
- git clone https://github.com/BVLC/caffe.git
这时候会出现一个caffe文件夹。命令行进入此文件夹,运行:
[html] view plain copy
- sudo cp Makefile.config.example Makefile.config
此命令是将 Makefile.config.example 文件复制一份并更名为 Makefile.config ,复制一份的原因是编译 caffe 时需要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 给出的配置文件例子,不能用来编译 caffe。
然后修改 Makefile.config 文件,在 caffe 目录下打开该文件:
[html] view plain copy
- sudo gedit Makefile.config
修改 Makefile.config 文件内容:
1.应用 cudnn
[plain] view plain copy
- 将:
- #USE_CUDNN := 1
- 修改为:
- USE_CUDNN := 1
2.应用 opencv 3 版本
[plain] view plain copy
- 将:
- #OPENCV_VERSION := 3
- 修改为:
- OPENCV_VERSION := 3
3.使用 python 接口
[plain] view plain copy
- 将:
- #WITH_PYTHON_LAYER := 1
- 修改为
- WITH_PYTHON_LAYER := 1
4.修改 python 路径
[plain] view plain copy
- 将:
- INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
- LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
- 修改为:
- INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
- LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
此python路径为系统自带python的路径,假如想使用Anaconda的python的话需要在其他地方修改。
5.去掉compute_20
[plain] view plain copy
- 找到
- # CUDA architecture setting: going with all of them.
- # For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility.
- # For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility.
- # For CUDA >= 9.0, comment the *_20 and *_21 lines for compatibility.
- CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
- -gencode arch=compute_20,code=sm_21 \
- -gencode arch=compute_30,code=sm_30 \
- -gencode arch=compute_35,code=sm_35 \
- -gencode arch=compute_50,code=sm_50 \
- -gencode arch=compute_52,code=sm_52 \
- -gencode arch=compute_60,code=sm_60 \
- -gencode arch=compute_61,code=sm_61 \
- -gencode arch=compute_61,code=compute_61
- 直接把标红去掉,注意-gencode arch=compute_30,code=sm_30 \ 前面是用两个tab敲进去的,原文用的空格,我最后才发现,走了好多弯路。所以我采取直接删除方式
由于CUDA 9.x +并不支持compute_20,此处不修改的话编译caffe时会报错:
[html] view plain copy
- nvcc fatal : Unsupported gpu architecture 'compute_20'
然后修改 caffe 目录下的 Makefile 文件(修改的地方找起来比较困难的话可以复制到word里查找):
[plain] view plain copy
- 将:
- NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
- 替换为:
- NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
[plain] view plain copy
- 将:
- LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
- 改为:
- LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
至此caffe配置文件修改完毕,可以开始编译了。假如显卡不是feimi架构的可以输入如下命令防止出现Unsupported gpu architecture 'compute_20'的问题:
[plain] view plain copy
- cmake -D CMAKE_BUILD_TYPE=RELEASE -D CUDA_GENERATION=Kepler ..
在 caffe 目录下执行 :
[plain] view plain copy
- make all -j8
这时如果之前的配置或安装出错,那么编译就会出现各种各样的问题,所以前面的步骤一定要细心。假如编译失败可对照出现的问题Google解决方案,再次编译之前使用 sudo make clean 命令清除之前的编译,报错:nothing to be done for all 就说明没有清除之前的编译。编译成功后可运行测试:
错误解决https://blog.csdn.net/qq_27748767/article/details/79206881
安装到
make all -j16
make test -j16
make runtest -j16
时出现问题
Q1 make all -j16 时 报错
AR -o .build_release/lib/libcaffe.a
LD -o .build_release/lib/libcaffe.so.1.0.0
/usr/bin/ld: 找不到 -lcudnn
collect2: error: ld returned 1 exit status
Makefile:573: recipe for target '.build_release/lib/libcaffe.so.1.0.0' failed
make: *** [.build_release/lib/libcaffe.so.1.0.0] Error 1
感觉主要是 /usr/bin/ld: 找不到 -lcudnn 这句话的问题
于是百度
https://stackoverflow.com/questions/43996484/ubuntu-caffe-installation-error-usr-bin-ld-cannot-find-lcudnn
找到解决方案
使用sudo cp的指令将cudnn里提取的文件复制到usr/local/cuda/lib64/ 文件和/usr/local/cuda/include中
但是cp时会出现一个 无法通过符号链接'/usr/local/cuda-8.0/lib64/libcudnn.so.6' 进行操作 的问题尚未解决
但是make all 可以通过了
补充解决方案
安装CUDNN
1、删除原来的cudnn系统路径下的一些文件
sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn* #这里*是通配符,
libcudnn*指的是名字中带有libcudnn的所有文件
2、安装刚才解压的cudnn版本,在终端cd到刚解压的cuda文件夹,然后继续输入下面两个指令,这两个指令相当于把解压后的cuda文件夹下的一些文件拷到系统路径下面
sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp lib64/lib* /usr/local/cuda/lib64/ #这里*是通配符,lib*指的是名字中带有lib的所有文件
3、在系统路径下建立软链接(解压出来的lib64下面有3个so文件。分别是
libcudnn.so 和 libcudnn.so.5以及 libcudnn.so.5.1.3文件。 并且这3个点so文件大小都一样。其实都是软连接!libcudnn.so链接到libcudnn.so.5,而
libcudnn.so.5.又链接到libcudnn.so.5.1.3。 真正的文件只有
libcudnn.so.5.1.3)
cd /usr/local/cuda/lib64
sudo chmod +r libcudnn.so.5.1.10
sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5
sudo ln -sf libcudnn.so.5 libcudnn.so
这里面指令要根据自己版本修改数字
Q2 make runtest 的时候一直报错
.build_release/tools/caffe:
error while loading shared libraries: libcudnn.so.6: cannot open shared object file: No such file or directory
Makefile:533: recipe for target 'runtest' failed
make: *** [runtest] Error 127
看错误日志是说没有找到文件,这个文件也是Q1中无法通过符号链接的文件ibcudnn.so.6
于是考虑建立新的链接 参考
http://blog.csdn.net/u013059662/article/details/51854072 的博客
后发现再次make runtest依旧报错
于是再次搜索到
https://stackoverflow.com/questions/43515617/caffe-error-while-loading-shared-libraries-libcudnn-so-5-cannot-open-shared-o
stackoverflow上的提问,虽然没有回答,但是照着作者已经做过的两次尝试反而成功了.(心疼作者)
解决方案,作者失败原因是没有开启root权限
[plain] view plain copy
- sudo make runtest -j8
运行结果如下:
可以看到2123个tests中只有一个失败了:
[html] view plain copy
- BatchReindexLayerTest/3.TestGradient, where TypeParam = caffe::GPUDevice<double>
Google了一下,貌似使用CUDA 9.1加双显卡的都有这个错误,暂且不管它,目前不影响使用。使用mnist测试程序是可以运行的。CUDA 9.0则测试全部通过。
第八步:用 mnist 手写数据集验证
mnist测试方法如下(以下命令都在caffe目录下运行):
1)进入caffe文件夹,看看此文件夹里是否有一个build文件夹,没有的话运行:
[html] view plain copy
- make all -j8
如果报错,先make clean,再执行上面
2)下载mnist数据库,在caffe目录下运行:
[html] view plain copy
- sudo ./data/mnist/get_mnist.sh
3) 将二进制数据库文件转换成lmdb数据库格式:
[html] view plain copy
- sudo ./examples/mnist/create_mnist.sh
4)训练lenet网络:
[html] view plain copy
- sudo ./examples/mnist/train_lenet.sh
结果如下:
可以看到测试的识别准确率为 99.08%。至此整个caffe已经配置完毕。