此博客为原始博客,可以转载,但是转载请注明出处。
先介绍一下本人电脑配置:笔记本双显卡,N卡是gtx1060(因为双显卡的问题黑屏无数次,文章后续有解决方案)
本文步骤如下:
- ①安装显卡驱动
- ②安装CUDA7.5
- ③安装opencv3.0
- ④安装cudnn5.0
- ⑤安装caffe
注意:不同电脑可能遇到的bug也不一样,我的配置流程不一定100%成功,但是适用大部分电脑,因为我的笔记本已经踩了很多坑。文章中基本没有废话,需要修改的地方都需要修改
对于笔记本具有双显卡的情况(intel集显+NVIDIA独显)安装显卡驱动是一件很坑的事情,或者你在安装CUDA后重启黑屏,罪魁祸首之一也是双显卡的问题。为此,已经付出了黑屏无数次的代价,最终还是找到了解决方案。
首先安装显卡驱动:
在系统设置里找到附加驱动,里面加载完毕后会有推荐的nvidia显卡驱动版本。例如我这里推荐的是367版本,那么我们就安装这个版本的驱动。
$ sudo apt-get install nvidia-367
在安装完驱动之后,我重启了电脑,发现电脑黑屏,无法进入图形界面,之后试了好多方法,无论如何就是一安装完显卡驱动重启就黑屏,最后的解决方法是:
先启动命令界面,按ctrl+alt+f1,进入之后先关闭lightdm,然后选择intel显卡进行显示,最后重启lightdm(lightdm是管理图形界面的),具体命令是
$ sudo service lightdm stop
$ sudo prime-select intel
$ sudo service lightdm restart
执行完上述命令之后,就可以进入图形界面了,成功的解决了黑屏问题(花了好几天时间才解决的)。进入图形界面后,再次打开命令行,将显卡切换到nvidia显卡,因为我们毕竟要使用nvidia显卡来安装cuda,具体命令为
$ sudo prime-select nvidia
但是,不幸的是,如果你出现上述安装完驱动就黑屏的问题,那么在你关机第二次开机时还是会黑屏,因为你关机之前已经切换到了nvidia显卡,所以这时候你用的还是nvidia显卡启动的(切记不要用intel显卡启动电脑,要么之后系统检测不到nvidia显卡,对于我的电脑是这样的)。这个时候,意味着你每次开机都要执行上述4条命令的过程,虽然有些麻烦,但是确能解决问题,多输几条命令吧。
当然如果你用的台式或者你的笔记本没有这种BUG,就不用做这些操作了。但如果你在安装CUDA重启后黑屏,也可以参考这些操作,我认为是有效的。
一、首先,安装一些依赖项:
$ 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 libatlas-base-dev
$ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
二、之后下载cuda的.run文件,不要用deb文件,因为在上一步我们已经安装了显卡驱动。如果使用deb文件安装,则在安装cuda的时候会自动再安一次显卡驱动,可能会把当前的版本替换成其他版本了。所以去下载.run文件安装。
下载链接:https://developer.nvidia.com/cuda-75-downloads-archive
按照下图选择:
下载好后我们开始安装:
进入下载好文件的目录,执行:
$ sudo sh cuda_7.5.18_linux.run
然后按空格阅读有关信息,最后会让你选择你要安装的项目,注意!!这里除了driver驱动之外都选择yes,路径回车默认就可以,driver一定要选no,否则跟安装deb文件没什么区别了。
三、等待安装完毕后,添加环境变量:
$ gedit .bashrc
然后在打开的文档末尾添加3行(注意路径是否匹配):
export PATH=/usr/local/cuda-7.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64
export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH
然后生效:
source .bashrc
最后重启电脑,输入命令:
$ env
检查环境变量是否含有cuda
五、检查
在整个安装过程,包括后面的所以安装过程,都要确保在使用nvidia显卡,检查方法是命令行输入:
$ nvidia-smi
如果出现很多信息则证明nvidia正在运转,如果出现smi找不到之类的错误信息,证明还是没有选择到nvidia显卡,具体操作上面已经说过了(启动电脑用n卡启动,虽然会黑屏,但若用Intel显卡启动就会出现smi找不到)
检查 CUDA Toolkit是否安装成功,命令行输入:
$ nvcc -V #会输出CUDA的版本信息
六、编译cuda例程
首先安装gcc,命令行输入:
$ sudo apt-get install gcc
然后切换到例子存放的路径,默认路径是
~/NVIDIA_CUDA-7.5_Samples(即 /home/xxx/NVIDIA_CUDA-7.5_Samples, xxx是你自己的用户名)
命令行输入:
$ make
然后慢慢等待吧,这个过程很长,几十分钟。编译完成后进入~/NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release,命令行输入
$ ./deviceQuery
一、安装依赖库,以及搭建环境:
$ sudo apt-get install build-essential
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
二、下载 opencv3.0
$ wget https://github.com/Itseez/opencv/archive/3.0.0-alpha.zip -O opencv-3.0.0-alpha.zip
$ unzip opencv-3.0.0-alpha.zip
三、安装opencv
进入opencv-3.0.0-alpha目录,创建release目录
$ mkdir release
进入release目录,命令行输入:
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..
$ sudo make
$ sudo make install
$ sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
$ sudo ldconfig
其中在sudo make编译的时候会出现error: a storage class is not allowed in an explicit specialization问题,这个错误应该是在NCVPixelOperations.hpp 这个文件里出的错,所以找到NCVPixelOperations.hpp 这个文件,它在opencv-3.0.0-alpha\modules\cudalegacy\src\cuda\里,然后打开这个文件进行编辑,将所有的inline之前的static去掉,即把static inline变成inline。问题解决,继续make编译。之后可能还会出现error: a storage class is not allowed in an explicit specialization,解决方法是但凡看见这个错误,就找到出错的这个文件,然后打开文件进行编辑,把文件里的static去掉,这个是我自己摸索出来的,虽然不知道为啥,但是能够解决问题。
整个make过程也很漫长,慢慢等待
安装完成后,进行测试opencv,测试这里就不具体说明,可以参考博客http://www.tuicool.com/articles/nYJrYra,博客的下半部分有说明测试的流程和代码。
这个不安装也可以,只要在之后的caffe配置文件中把cudnn注释掉就可以了。
下载cudnn:https://developer.nvidia.com/cudnn,需要注册一下账号
然后命令输入:
$ sudo tar xvf cudnn-7.5-linux-x64-v5.0-ga.tgz
$ cd cuda/include
$ sudo cp *.h /usr/local/include/
$ ../lib64
$ sudo cp lib* /usr/local/lib/
$ cd /usr/local/lib
$ sudo chmod +r libcudnn.so.5.0.5
$ sudo ln -sf libcudnn.so.5.0.5 libcudnn.so.5
$ sudo ln -sf libcudnn.so.5 libcudnn.so
$ sudo ldconfig
(libcudnn.so.5.0.5这些文件的版本与你下载的文件版本对应好,按目录找到对应文件看一下版本对不对就行了)
一、下载caffe
$ cd ~
$ git clone git://github.com/BVLC/caffe.git
然后进入caffe目录,打开Makefile,在181行和191行后面添加opencv_imgcodecs(必须要改)
最后打开caffe/examples/cpp_classification/classification.cpp文件,加入:
#include
#include
二、编译caffe
$ cd ~/caffe
$ cp Makefile.config.example Makefile.config
打开Makefile.config,去掉USE_CUDNN := 1注释
接着命令行输入:
$ make all
$ make test
$ make runtest
在make all时如果出现错误:nvcc fatal : Unsupported gpu architecture ‘compute_60’,解决方法是打开Makefile.config,把-gencode arch=compute_60,code=sm_60 \ 这一行注释掉,即把第42行注释掉。
在执行runtest可能出错:CURAND出错,status == CURAND_STATUS_SUCCESS (201 vs. 0) CURAND_STATUS_LAUNCH_FAILURE,一个生成随机数的程序出错。原因是CUDA版本不支持6.x框架的显卡,但不影响后续工作,忽略即可。所以runtest没有成功也不影响
三、配置pycaffe
安装依赖库:
$ sudo apt-get install python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython
$ sudo apt-get install protobuf-c-compiler protobuf-compiler
然后编译:
$ cd ~/caffe
$ make pycaffe
添加~/caffe/Python到$PYTHONPATH:
$ sudo gedit /etc/profile
# 打开文件后,在末尾添加: export PYTHONPATH=/home/xxx/caffe/python:$PYTHONPATH$ source 注意把xxx替换成你的名称
$ /etc/profile
测试:
$ python
$ >>>import caffe
如果结果如下图:
即没有任何错误信息,证明caffe安装成功