[一]硬件以及系统介绍:
1.1.显卡(getforce 10 系列--GTX10xx,如GTX1060)
本解决方案使用的显卡类型为GTX1060,当然所有的getforce 10 系列---GTX10xx都可以。cuda7.5不支持getforce 10 系列以上的显卡,所以,那些安装有getforce 10 系列---GTX10以上的显卡的同学必须安装Cuda8.0,那些含有cuda7.5以及以下的教程将不再适用。
系统(主要是Linux)
我们先来看一看,Cuda8.0支持的系统和软件,如下图,Ubuntu16.04需要的gcc版本为5.3.1,而当Ubuntu16.04安装好之后,系统自带的gcc版本为5.4,所以gcc要重新安装,下面会有安装教程。
也就是说不论你是那个版本的Linux系统只要在上面表里即可使用Cuda8.0,从上表中可以看出Ubuntu14.04和Ubuntu16.04都可以使用Cuda8.0。
1.2.OpenCV版本选择
之前装了好几OpenCV3.1.0都失败了,找了半天原因,原来是OpenCV3.1.0对Cuda8.0兼容性不好。
由上图可知Cuda8.0出来的时间是2016年9月,而OpenCV3.1.0却是去年,OpenCV2.4.13是今年5月,兼容性比OpenCV3.1.0要好,所以我选择的是OpenCV2.4.13。
[二]NVIDIA显卡驱动安装
2.1有两种安装方式,第一种如下:
选择附加驱动,点击后会有如下窗口弹出
上面一项选择使用英伟达驱动,下面一项未知驱动为cpu带的集成显卡选择下面的选项:不用这个设备,选完以后一定要点击"Apply Changes"也就是“应用改变”的按钮(右边的按钮)。
安装完成以后要重启一下系统,然后在bash里面输入:
nvidia-settings
2.2方案二:如果方案一行不通,可以自行安装驱动,从NVIDIA官网上下载驱动:
http://www.nvidia.cn/Download/index.aspx?lang=cn 如下图
选择自己需要的版本和驱动,然后点击旁边绿色按钮“搜索”:
点击绿色按钮“下载”
2.2.2下载完成,打开终端,先删除旧的驱动:
sudo apt-get purge nvidia*
2.2.3
禁用自带的 nouveau nvidia驱动 (很重要!)
通过如下命令创建一个文件
sudo vim /etc/modprobe.d/blacklist-nouveau.conf
在文件内添加如下内容:
blacklist nouveau
options nouveau modeset=0
更新一下
sudo update-initramfs -u
2.2.4重启系统至init 3(文本模式),也可先进入图形桌面再运行init 3进入文本模式,再安装下载的驱动就无问题,首先我们需要结束x-window的服务,否则驱动将无法正常安装
关闭X-Window
sudo service lightdm stop
切换到tty1控制台
Ctrl+Alt+F1
2.2.5.执行如下命令开始安装
sudo ./NVIDIA.run
安装完成后重新启动X-Window
sudo service lightdm start
然后Ctrl+Alt+F7
进入图形界面
如果安装后驱动程序工作不正常,使用下面的命令进行卸载:
sudo sh ~/NVIDIA-Linux-x86_64-367.44.run --uninstall
2.2.6检查是否安装成功,过程跟第一种方案一样,输入
nvidia-smi
nvidia-settings
[三]系统软件源设置并安装依赖包
流程,分别操作:系统设置(system settings)---->软件与更新(software & update)----->选择Ubuntu软件(Ubuntu software)选项卡。 来改变系统软件源为阿里的源。
更新列表,打开终端输入如下命令
sudo apt-get update
软件源更新完毕后,安装一些必要的依赖包,命令如下
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libboost-all-dev libopenblas-dev liblapack-dev libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-dev
如果执行过程报出有一些包没有找到,如下图
则更新列表,打开终端输入如下命令
sudo apt-get update
软件源更新完毕后,重新安装这些必要的依赖包,命令如下
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libboost-all-dev libopenblas-dev liblapack-dev libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-dev
此时就会安装成功![四]安装Anaconda
anaconda里面集成了很多关于python科学计算的第三方库,主要是安装方便,而python是一个编译器,如果不使用anaconda,那么安装起来会比较痛苦,各个库之间的依赖性就很难连接的很好
4.1.下载:anaconda的下载地址为: https://www.continuum.io/downloads#linux
根据自己的需要选择不同的版本,但是推荐选择Python2.7的64位的。
4.2.安装
在终端中进入存放这你刚刚下载好的文件的目录(我的是/下载),然后执行如下命令进行安装:
sudo ./Anaconda2-4.2.0-Linux-x86_64.sh
输入回车键之后会有一段长长的须知,一直按Ctr+F直到须知展示完毕,然后输入yes继续执行
这个时候,我们在家目录下新建一个/Software文件夹用存放以后自己安装的软件,当然包含anaconda,执行如下命令
cd ~
mkdir Software
此时终端会提示你输入安装位置,你输入:/home/leijie/Software/anaconda2,然后继续安装
直到最后安装成功,到这里anaconda就安装完成了,测试一下
anaconda -V
[五]cuda安装
前言:一定要搞清楚你自己的显卡要装什么版本的驱动,以及支持的cuda版本。我的显卡支持cuda8.0
5.1.下载: 下载地址为:https://developer.nvidia.com/cuda-downloads,然后根据自己的需要选择下载文件
我下载的是.run文件,也推荐大家下载这种格式的。
5.2.GCC降级------->由文章的最开始,我们可以知道cuda8.0目前仅支持gcc5.3而ubuntu16.04自带的gcc版本为gcc5.4,所以要降级。
5.2.1.先查看你是否需要降级GCC
gcc -v
如果你的版本是5.3.1以下的就不用降级了,否则要降级gcc。
5.2.2.下载gcc5.3.0,下载地址为:https://pan.baidu.com/s/1cL2v62,下载好后,进入到该文件目录,执行如下操作:
sudo tar -zxvf gcc-5.3.0.tar.gz
5.2.3.进入到gcc目录:
cd gcc-5.3.0/
5.2.4.下载依赖项(网络不好的话可能慢点,慢慢等吧):
sudo ./contrib/download_prerequisites
5.2.5. 新建一个编译的文件夹,并进入该文件夹:
sudo mkdir build
cd build/
5.2.6.生成makefile文件:
sudo ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
5.2.7.编译,编译过程有点长,请耐心等待:
sudo make -j4
5.2.8.安装:
编译结束以后,我们就可以执行安装了:
sudo make install
5.2.9.查看是否成功
gcc --version
g++ --version
5.3安装cuda
gcc降到5.3之后,可以直接来安装了cuda了,进到你下载好的cuda-8.0的run文件目录,运行如下命令:
sudo ./cuda_8.0.44_linux.run
这时便进入的声明的界面,你可以连续按Ctr+f向下阅读直到结尾,也可以按Ctr+C跳过阅读,直接到选择接受与否的位置
输入接受:accept; 然后回车。具体应该怎么输入请按照如下图片的指示来操作,原因:第一次不安装的是英伟达驱动,因为我们之前已经安装过了,第二次不安装是更新,也不用安,安装了麻烦。
由于我第一遍输错了,所以我又重新安装了一遍,这一次的操作如下图:
如果出现下图的结果,表明你已经安装成功了,虽然有一个警告和一个特别注意但是不影响结果
从上图可是,下载的例子里面是缺少一些支持库的,现在我们安装这些库:
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
从上图可以看出来,有一个特别注意,所以我们做如下配置:打开.bashrc来进行配置,命令如下
sudo vim ~/.bashrc
并将如下的几行内容复制的到.bashrc文件的最下面
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda
然后设置环境变量和动态链接库,在命令行输入:
sudo vim /etc/profile
在打开的文件末尾加入:
export PATH=/usr/local/cuda/bin:$PATH
保存之后,创建链接文件:
sudo gedit /etc/ld.so.conf.d/cuda.conf
在打开的文件中添加如下语句:
/usr/local/cuda/lib64
然后执行如下命令使得链接立即生效:
sudo ldconfig
现在重启电脑!
现在就开始测试一下看看cuda是否安装成功吧!输入如下命令打开测试的代码位置:
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
编译这些代码:
sudo make -j4
执行代码
./deviceQuery
如果出现如下结果---显卡的配置信息,恭喜你,这就证明你成功的安装了cuda
[六]cuDNN安装
cuDNN深度学习加速的一些库。下载地址为:https://developer.nvidia.com/cudnn
6.1.下载
打开网站,如下图,需要注册一个账户,因为下载的时候需要,然后下载,流程如下图:
6.2下载后解压
tar -xvf cudnn-8.0-linux-x64-v5.1.tgz
执行如下操作:
cd cuda/include/
sudo cp cudnn.h /usr/local/cuda/include/
cd ../lib64/
sudo cp lib* /usr/local/cuda/lib64/
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5
sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so
下载地址:http://opencv.org/ 也可以从网盘下载:https://pan.baidu.com/s/1qXT7is0
7.2安装相关依赖项:
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libdc1394-22-dev libatlas-base-dev gfortran
7.3配置编译opencv的环境
sudo apt-get install cmake-qt-gui
7.4解压这个下载的文件,在解压后的文件夹下新建一个opencv-debug文件夹: unzip opencv-2.4.13.zip
cd opencv-2.4.13/
mkdir opencv-debug
cd opencv-debug/
cmake-gui
点击configure出现下面的界面,cmake中configure的作用就是能够读出系统已经安装的相关文件,然后进行generate:
make -j8
sudo make install
sudo gedit /etc/profile
在最后一行输入如下内容: export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
source /etc/profile
设置lib库路径,打开文件 sudo gedit /etc/ld.so.conf.d/opencv.conf
opencv的库一般安装在’/usr/local/lib’文件夹下,在文件内添加 /usr/local/lib
执行下列命令使之立刻生效 sudo ldconfig
经过上面的流程,这样就可以在eclipse里或者qtcreator里用opencv了。 不过要配置号相应的路径和lib文件。
cd opencv-2.4.13/samples/c
./build_all.sh
./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 lena.jpg
如果出现lena的图片就证明成功了!
sudo cp Makefile.config.example Makefile.config
你会发现下面多了一个Makefile.config的文件
sudo subl Makefile.config
然后根据个人情况修改文件:
1.若使用cudnn,则将#USE_CUDNN := 1
修改成: USE_CUDNN := 1
(就是去掉注释的‘#’号)
2.若使用的opencv版本是2的,则将#OPENCV_VERSION := 3
修改为:OPENCV_VERSION := 2
3.若要使用python来编写layer,则将#WITH_PYTHON_LAYER := 1
修改为WITH_PYTHON_LAYER := 1
PYTHON_INCLUDE
加上注释,把ANACONDA_HOME
以及下面的PYTHON_INCLUDE
都去掉,并且改为如下图最终的样子。注意:ANACONDA_HOME
后面是anaconda的安装位置,根据自己的情况不同而不同。其中$(HOME)就是你的家目录
# Whatever else you find you need goes here.
下面的 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
sudo subl Makefile
将(大概409行的样子): NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为: NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
在Makefile文件的第大概181行,把
hdf5_hl
和
hdf5
修改为
hdf5_serial_hl
和
hdf5_serial
,即
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
sudo subl /usr/local/cuda/include/host_config.h
将其中的第115行注释掉: #error-- unsupported GNU version! gcc versions later than 5 are not supported!
改为: //#error-- unsupported GNU version! gcc versions later than 5 are not supported!
sudo apt-get install libatlas-base-dev
sudo apt-get install libprotobuf-dev
sudo apt-get install libleveldb-dev
sudo apt-get install libsnappy-dev
sudo apt-get install libopencv-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libhdf5-serial-dev
sudo apt-get install libgflags-dev
sudo apt-get install libgoogle-glog-dev
sudo apt-get install liblmdb-dev
sudo apt-get install protobuf-compiler
sudo apt-get install cmake
接下来进行编译(在解压的文件夹下):
sudo make all -j8
然后就编译好了
sudo make test
可能有个缓慢的编译过程,然后出现如下如所示的界面
参考网站:
http://blog.csdn.net/xierhacker/article/details/53035989
http://blog.csdn.net/autocyz/article/details/52299889
http://www.cnblogs.com/jinggege/p/5877326.html
http://blog.csdn.net/sunxianliang1/article/details/50723086
另外补充几个网址,方便各位查看
cuda的官方文档:http://docs.nvidia.com/cuda/
nvcc介绍的官方文档:http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#axzz4SsuDPfdq
cuda开发包介绍的官方文档:http://docs.nvidia.com/cuda/#axzz4SsuDPfdq
还有cuda8.0安装的官方文档:http://blog.csdn.net/u012581999/article/details/52433609http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#axzz4SsuDPfdq