Ubuntu14.04+CUDA8.0+GTX1080+caffe配置教程

转载链接:http://blog.csdn.net/frank_zrh/article/details/52298909

一、需要预先下载的东西

1.        GTX1080的Linux驱动(run文件)

2.        Install-OpenCV-master(最好先下载好对应的OpenCV版本,修改相应的脚本省时间)

3.        Cuda8.0文件(run文件)

4.        Cudnn5.0文件(压缩包)

二、安装caffe之前的准备工作

Step1:禁用nouveau驱动

按Ctrl+Alt+F1进入命令提示符,新建一个黑名单文件

  1. sudo vim /etc/modprobe.d/blacklist-nouveau.conf  

输入

  1. blacklist nouveau  
  2. options nouveau modset=0  

保存退出(:wq)

然后执行

  1. sudo update-initramfs -u  
执行 lspci | grep nouveau查看是否有内容
  1. lspci | grep nouveau  

如果没有内容 ,说明禁用成功,如果有内容,就重启一下再查看

step2:安装显卡驱动(不从CUDA中一起装,因为CUDA8.0中的显卡驱动太旧)

Ctrl+alt+F1进入字符界面,关闭图形界面 

  1. sudo service lightdm stop  
安装driver

  1. sudo chmod 755 NVIDIA-Linux-x86_64-367.27.run  //获取权限  
  2. sudo ./NVIDIA-Linux-x86_64-367.27.run  //安装驱动  

安装完成之后

  1. sudo service lightdm start  
其实,在我的安装过程中输入上面这条命令之后,显示器会没有内容,我想应该是视频信号已经切换到独显中,而视频线仍然接在集显上

我的方案是,安装完成之后,reboot或者shutdown之后把视频线连接到独显上,避免强制关机

安装完成之后可用一面的命令查看

  1. nvidia-smi  


step3:安装CUDA8.0

进入到CUDA文件所在的目录

  1. sudo sh cuda_8.0.27_linux.run  
除了第二项“”是否安装显卡驱动“选择no之外,其他全部按照默认设定

安装过程显示如下信息

Do you accept the previously read EULA? 
accept/decline/quit: accept

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62? 
(y)es/(n)o/(q)uit: n

Install the CUDA 8.0 Toolkit? 
(y)es/(n)o/(q)uit: y

Enter Toolkit Location 
[ default is /usr/local/cuda-8.0 ]:

Do you want to install a symbolic link at /usr/local/cuda? 
(y)es/(n)o/(q)uit: y

Install the CUDA 8.0 Samples? 
(y)es/(n)o/(q)uit: y

Enter CUDA Samples Location 
[ default is /home/zhou ]:

Installing the CUDA Toolkit in /usr/local/cuda-8.0 … 
Missing recommended library: libGLU.so 
Missing recommended library: libX11.so 
Missing recommended library: libXi.so 
Missing recommended library: libXmu.so

Installing the CUDA Samples in /home/zhou … 
Copying samples to /home/zhou/NVIDIA_CUDA-8.0_Samples now… 
Finished copying samples.

=========== 
= Summary = 
=========== 
Driver: Not Selected 
Toolkit: Installed in /usr/local/cuda-8.0 
Samples: Installed in /home/zhou, but missing recommended libraries

Please make sure that 
- PATH includes /usr/local/cuda-8.0/bin 
- LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.0/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-8.0/bin

Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-8.0/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 361.00 is required for CUDA 8.0 functionality to work. 
To install the driver using this installer, run the following command, replacing with the name of this run file: 
sudo .run -silent -driver

Logfile is /tmp/cuda_install_2961.log 

设置环境变量

  1. sudo vi /etc/profile  
在文件的最后面加上下面两句
  1. export PATH=/usr/local/cuda-8.0/bin:$PATH  
  2. export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH  
使环境变量立即生效
  1. sudo ldconfig  


这里强势插入一个步骤:安装库,因为接下来安装Samples需要make,所以得先装好一些库和依赖

  1. sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev  libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx  

在安装库的过程中也出现一些问题,例如有些安装不了(选择的软件源没有这个库),这种情况可以在ubuntu的网站搜索相应的

库的名字,可以到它给出的链接去下载deb包直接双击安装就可以了。校园网的用户建议连接中科大的源,速度很快。

安装CUDA自带的Samples

  1. cd /usr/local/cuda/samples  
  1. sudo make all -j4  
这里j后面的数,网上说是cpu的核心数目

编译完之后

  1. cd ./bin/x86_64/linux/release  
运行例程
  1. ./deviceQuery    

若出现显卡信息,则说明安装完成了


step3:安装CUDNN5.0

将cudnn解压后就是一个名为CUDA的文件夹,放在哪都可以,我们还要复制里面的文件到相应的地方,并创建软链接

  1. cd cuda    
  2. sudo cp lib64/lib* /usr/local/cuda/lib64/    
  3. sudo cp include/cudnn.h /usr/local/cuda/include/   
  4. cd /usr/local/cuda/lib64/  
  5. sudo chmod +r libcudnn.so.5.0.5  
  6. sudo ln -sf libcudnn.so.5.0.5 libcudnn.so.5  
  7. sudo ln -sf libcudnn.so.5 libcudnn.so  
  8. sudo ldconfig  


-----------------------------------我把这里作为分界线,是因为多次实验以上的步骤都不会出错,容易出错的地方在分界线下面的部分--------------------------------

step4:安装opencv

这里推荐网友写的一个脚本(百度云下载http://pan.baidu.com/s/1qX1uFHa ,密码:wysa
在Isstall-OpenCV-master的根目录下

  1. cd ./Ubuntu  
  2. sudo sh dependencies.sh  
  3. cd ./3.0  
  4. sudo sh opencv3_0_0.sh  
第一次运行会发现编译到72%时出错,因为现在opencv3.0有个地方还未修改,遇到CUDA8.0会出错

github大神给出了解决方案(https://github.com/opencv/opencv/pull/6510/commits/10896129b39655e19e4e7c529153cb5c2191a1db

意思就是在下载好的OpenCV3.0的文件夹中

  1. cd ./modules/cudalegacy/src  
  2. sudo vim graphcuts.cpp  
在代码line45中找到

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

将他改为

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)

这样再编译一下就好了,在这里有一点需要注意,如果又用

  1. sudo sh opencv3_0_0.sh  
则需要,先对opencv3_0_0.sh文件进行修改,将脚本中下载opencv文件和解压的两句注释掉就可以了

等待几分钟,就安装好了。

三、编译caffe

安装依赖项和各种库

  1. sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev libgflags-dev libgoogle-glog-dev  
  2.  liblmdb-dev  
  1. sudo apt-get install --no-install-recommends libboost-all-dev  
安装pycaffe所需要的依赖项
  1. <span style="font-family:SimSun;font-size:12px;">sudo apt-get install -y python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py   
  2. python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags cython ipython  

进入caffe的根目录
  1. <span style="font-family:SimSun;font-size:12px;">cp Makefile.config.example Makefile.config</span>  

根据自己的需要修改Makefile.config

我自己改了CUDNN项和OPENCV项(用了3.0就要修改这一项)

  1. make all -j4  
  2. make test -j4  
  3. make runtest -j4  

第一次make的时候出现了错误

.build_release/lib/libcaffe.so: undefined reference tocv::imread(cv::String const&, int)'.build_release/lib/libcaffe.so: undefined reference tocv::imencode(cv::String const&, cv::_InputArray const&, std::vector >&, std::vector > const&)

参考https://github.com/BVLC/caffe/issues/2348的回答

我尝试了在caffe根目录下

  1. rm build(如果有这个文件夹的话)  
  2. mkdir build  
  3. cd build  
  4. cmake ..  
  5. make all -j4  
  6. cd ..  
  7. make all -j4  
这样下来就可以make成功了,如果还出现问题可以看看上面提供的链接

接下来我就

  1. make test  

但是再次出错了

libcudart.so.8.0: cannot open shared object file: No such file or directory

应该是库文件没有链接好

用ln将需要的so文件链接到/usr/lib或者/lib这两个默认的目录下边

  1. ln -s /where/you/install/lib/*.so /usr/lib   
  2. udo ldconfig  
修改LD_LIBRARY_PATH(这个在之前已经做好了)
  1. export LD_LIBRARY_PATH=/where/you/install/lib:$LD_LIBRARY_PATH   
修改/etc/ld.so.conf在文件中添加cuda8.0的lib路径
  1. /usr/local/cuda-8.0/lib64  

一共三步就解决了缺少动态链接库的问题

再接下来make test 和make runtest都没有出错了


虽然之前也配置过cuda7.5和gtx970但是,由于gtx1080比较新,安装驱动要单独从官网上先下载,配置过程中opencv与cuda8.0也有兼容问题。

有参考网上的教程,但是还是花了两天时间来配置。特意整理了这样一篇博客,流程是完全按照我成功配置下来的过程而写的 ,希望对大家有帮助。

也感谢在这过程中给我帮助的同学。第一次写博客,还请多多指教!


参考的博客:http://www.2cto.com/os/201607/528798.html


猜你喜欢

转载自blog.csdn.net/zouroot/article/details/59518929