ubuntu14.04 gpu安装显卡驱动+CUDA+CUDNN+opencv+python+caffe以及详细报错信息

Ubuntu 14.04 Installations & Setup

注意:斜体的操作是可选的,不设置也是可以的。

在具体设置之前,我们建议你确定IP,不要使用动态IP。

  • sudo gedit /etc/network/interfaces

////////////////////////////////////////////////////////////////////////////////////

在尾部追加:

auto eth0

iface eth0 inet static

address 192.168.0.200    【修改为你的IP地址】

netmask 255.255.255.0  

gateway 192.168.0.1      【与IP保持相同网段】

dns-nameservers 192.168.0.1

////////////////////////////////////////////////////////////////////////////////////

  • /etc/init.d/networking restart

自此,你的IP应该已经修改为固定IP。

  1. 安装SSH
  • sudo apt-get update
  • sudo apt-get install openssh-server
  • sudo gedit /etc/ssh/sshd_config

    Modify:#PermitRootLogin without-password  【禁止root用户直接登陆】

         Add below: PermitRootLogin yes

       自此,你的SSH-Server已经安装成功了。

  1. 安装FTP
  • sudo apt-get update
  • sudo apt-get install vsftpd
  • sudo service vsftpd restart
  • sudo gedit /etc/vsftpd.conf

////////////////////////////////////////////////////////////////////////////////////

Write_enable=YES

Local_umask=022

在文件尾部追加:

userlist_deny=NO

userlist_enable=YES

userlist_file=/etc/allowed_users

seccomp_sandbox=NO

////////////////////////////////////////////////////////////////////////////////////

  • sudo gedit /etc/allowed_users

////////////////////////////////////////////////////////////////////////////////////

直接输入允许的用户列表,默认输出你的用户名即可。

username

////////////////////////////////////////////////////////////////////////////////////

  • sudo service vsftpd restart

自此,你的FTP-Server安装成功了。

  1. 安装显卡驱动及相关库

1)安装显卡驱动

这里有两种方式,分别从ubuntu库和nvidia网站获取驱动安装包。

【Ubuntu方式】

ubuntu14.04 gpu安装显卡驱动+CUDA+CUDNN+opencv+python+caffe以及详细报错信息           ubuntu14.04 gpu安装显卡驱动+CUDA+CUDNN+opencv+python+caffe以及详细报错信息

如上左图所示(不同桌面环境显示不同),直接搜索driver,出现Additional Drivers,点击进入,在英伟达的选项中选择NVIDIA binary driver,如上右图所示。

点击Apply Changes,耐心等待,直到出现提示并点击Restart。

【NVidia方式】

我们建议你首先安装g++编译器以及vim编辑器。

  • sudo apt-get install g++
  • sudo apt-get install vim

下面开始正式安装NVIDIA驱动程序。

在正式安装之前,先进行例行检查。

  • lspci | grep -i nvidia    #查找NVIDIA设备
  • uname -m && cat /etc/*release  #查询内核版本
  • gcc --version #查询gcc编译器版本

安装流程:

  • sudo gedit /etc/modprobe.d/blacklist-nouveau.conf

////////////////////////////////////////////////////////////////////////////////////

              写入:

              blacklist nouveau

              options nouveau modeset=0

////////////////////////////////////////////////////////////////////////////////////

  • sudo update-initramfs -u
  • sudo reboot  【重启】
  • 按下Clt+Alt+F2 -> 进入终端模式
  • sudo service lightdm stop   #关闭图形界面
  • sudo sh NVIDIA...     #安装驱动程序

////////////////////////////////////////////////////////////////////////////////////

[ingore error and continue installing ...]  #如果存在错误,跳过继续安装

[continue without kernel signing ...] #跳过kernel signing

[config nvidia-x-config and backup the intel-x-config ...] #一定要使用NVIDIA作为图形控制器

////////////////////////////////////////////////////////////////////////////////////

2)安装CUDA和CUDNN

我们建议你首先安装g++编译器以及vim编辑器。

  • sudo apt-get install g++
  • sudo apt-get install vim

接下来安装cuda

  • sudo sh cuda8.0...   #安装CUDA

////////////////////////////////////////////////////////////////////////////////////

             [install the graphic ....]  [n]              #前面已经安装了,此处不要再安装

[install the cuda toolkit...] [y]            #安装CUDA

[install the cuda samples ...] [y]          #安装CUDA Samples

////////////////////////////////////////////////////////////////////////////////////

  • sudo service lightdm start          #打开图形界面
  • sudo gedit /etc/profile

////////////////////////////////////////////////////////////////////////////////////

在尾部追加:

export PATH=/usr/local/cuda/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

////////////////////////////////////////////////////////////////////////////////////

  • source /etc/profile
  • sudo reboot                #重启
  • cat /proc/driver/nvidia/version   #查询驱动版本
  • nvcc -V                       #查询NVCC编译器版本
  • nvidia-smi                     #查询显卡信息
  • cd ~/NVIDIA_CUDA-8.0_Samples...   #编译CUDA Samples
  • make                            #编译
  • ./bin/.../deviceQuery               #查询显卡的详细参数信息
  • tar xvf cudnn...                   #解压CUDNN包
  • sudo cp cuda/include/cudnn.h /usr/local/cuda/include   #复制头文件
  • sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64        #复制库文件

自此,显卡驱动,以及CUDA/CUDNN安装完成。

  1. 安装Python

我们使用Anaconda2进行Python环境安装。

  • sudo bash Anaconda2-4.1.1-Linux-x86_64.sh
  • All options choose ‘y’

自此,Python安装完成。

我们还建议另外一种方式,直接将别的机器上已经安装好了的anaconda2文件夹直接拷贝到你的~目录下即可。这样可以省去超过80%以上的后续安装步骤。(主要是Caffe)

注意:直接拷贝文件只是少了编译安装的步骤,但路径设置还是要做的:

在~/.bashrc文件中追加:

export PATH = $HOME/anaconda2/bin:$PATH

如果直接使用安装文件安装的话,安装程序已经配置好了,不需要再定义路径。

  1. 安装OpenCV
  • sudo apt-get update
  • sudo apt-get -y install libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff4-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip
  • unzip opencv-master.zip   #用你的opencv安装包替换
  • cd opencv-master             #进入到你的解压文件夹
  • mkdir release         #创建一个release文件夹用于编译
  • cd release
  • cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D BUILD_TIFF=ON -D CUDA_GENERATION=Auto ..

////////////////////////////////////////////////////////////////////////////////////

  • 注意:有可能会遇到下载ipp....tar file失败的情况,如果遇到,需要用我们已经下载好的这个包替换掉就可以了。

cd ..

sudo rm 3rdparty/ippicv/downloads/linux.../ipp...

sudo cp ../ipp... 3rdparty/ippicv/downloads/linux.../

  • 注意:如果遇到“NppiGraphcutState has not been declared”这种类型的错误,可以这样处理:

gedit ../modules/cudalegacy/src/graphcuts.cpp

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

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

////////////////////////////////////////////////////////////////////////////////////

  • make -j8

////////////////////////////////////////////////////////////////////////////////////

  • 注意:你可能遇到:“No rule to make target ;usr/lib/x86_64-linux-gnu/libGL.so”这样的错误,你可以这样处理:

sudo rm  /usr/lib/x86_64-linux-gnu/libGL.so

sudo ln -s  /usr/lib/libGL.so.1  /usr/lib/x86_64-linux-gnu/libGL.so   

          (NOTE: here, /usr/lib/libGL.so.1 may be in /usr/lib/nvidia-384/libGL.so.1 if you use the first way ton install nvidia-driver)

////////////////////////////////////////////////////////////////////////////////////

  • sudo make install
  • sudo gedit /etc/ld.so.conf.d/opencv.conf

////////////////////////////////////////////////////////////////////////////////////

写入:

/usr/local/lib 

////////////////////////////////////////////////////////////////////////////////////

  • sudo ldconfig
  • sudo gedit /etc/profile

////////////////////////////////////////////////////////////////////////////////////

在尾部追加:

              export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

////////////////////////////////////////////////////////////////////////////////////

  • source /etc/profile

自此,OPENCV安装成功了。

注意,OpenCV是安装在如下目录下:

头文件:/usr/local/include

库文件:/usr/local/lib

我们可以将别人已经安装成功的这些目录下的对应文件(include/lib)直接拷贝过来即可。注意,添加路径是仍然要做的,只是少了编译安装的步骤。

  1. 安装Caffe

安装Caffe需要的工作很多。

  • sudo apt-get install -y build-essential git libatlas-dev libopenblas-dev libblas-dev liblapack-dev libopencv-dev libprotobuf-dev protobuf-compiler libboost-all-dev libgoogle-glog-dev libleveldb-dev liblmdb-dev libsnappy-dev libhdf5-serial-dev libgflags-dev
  • 下载caffe源代码
  • 修改Makefile.config

////////////////////////////////////////////////////////////////////////////////////

USE_CUDNN := 1

OPENCV_VERSION := 3

CUDA_DIR := /usr/local/cuda

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_50,code=compute_50 \

       -gencode arch=compute_52,code=sm_52 \

       -gencode arch=compute_52,code=compute_52 \

       -gencode arch=compute_60,code=sm_60 \

       -gencode arch=compute_60,code=compute_60

BLAS := open

ANACONDA_HOME := $(HOME)/anaconda2

PYTHON_INCLUDE := $(ANACONDA_HOME)/include \

         $(ANACONDA_HOME)/include/python2.7 \

         $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \

PYTHON_LIB := $(ANACONDA_HOME)/lib

WITH_PYTHON_LAYER := 1

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

BUILD_DIR := build

DISTRIBUTE_DIR := distribute

TEST_GPUID := 0

Q ?= @

////////////////////////////////////////////////////////////////////////////////////

  1. 下面安装pycaffe的依赖。
  • sudo chown -R yourname $HOME/anaconda2   #yourname为你的用户名
  • sudo chgrp -R yourname $HOME/anaconda2    #yourname为你的用户名
  • sudo apt-get update
  • sudo apt-get install python-pip python-dev python-numpy graphviz gfortran
  • cd $(CAFFE_ROOT)/python                # CAFFE_ROOT是你的caffe目录
  • for req in $(cat requirements.txt); do conda install $req; done
  • conda install pydot

安装完后,理论上你可以在python中import google.protobuf了,如果不能成功,说明安装由错误。

Python依赖的安装非常耗时,因此推荐直接拷贝别人已经安装好的anaconda2文件夹代替。这样,这些python依赖的安装可以跳过了。

下面就可以开始编译caffe了。

  • make -j8
  • make test -j8
  • make runtest

我们推荐直接在环境变量中添加caffe的目录作为工作路径:

gedit ~/.bashrc

////////////////////////////////////////////////////////////////////////////////////

在尾部追加:

export CAFFE_ROOT=/home/yourname/caffe

export PYTHONPATH=$CAFFE_ROOT/python  #将pycaffe添加到python目录中     

////////////////////////////////////////////////////////////////////////////////////

source ~/.bashrc

除此之外,我们还将以将/usr/lib以及/usr/local/lib也添加到LD_LIBRARY_PATH中:

sudo gedit /etc/profile

////////////////////////////////////////////////////////////////////////////////////

在尾部追加:

export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH

////////////////////////////////////////////////////////////////////////////////////

source /etc/profile

       自此,Caffe的安装结束。

       注意,Caffe的安装中会经常遇到的一些问题:

  1. 'libprotobuf.so.## is not found'

该动态库由python的libprotobuf库提供,在anaconda2的lib目录下,为了简便,我们直接在/usr/local/lib中生成其软链接即可:

cd /usr/local/lib

sudo ln -sf ~/anaconda2/lib/libprotobuf.so.## libprotobuf.so.##

##是错误提示的版本号。

  1. 'libhdf5_hl.so.## is not found'

类似于上面的错误:

cd /usr/local/lib

sudo ln -sf ~/anaconda2/lib/libhdf5_hl.so.## libhdf5_hl.so.##

  1. 'libhdf5.so.## is not found'

类似于上面的错误:

cd /usr/local/lib

sudo ln -sf ~/anaconda2/lib/libhdf5.so.## libhdf5.so.##

  1. Protobuf版本太低,需要更新为高版本。

Protobuf的版本可以由protoc查看到。

protoc –version

理论上,应该是3.0.0及以上才对。

Protoc可以完全由anaconda2安装的protobuf提供。

首先,我们可以更新protoc的可执行文件版本:

  • sudo rm /usr/bin/protoc
  • sudo cp ~/anaconda2/bin/protoc /usr/bin/

然后,更新头文件:

  • sudo rm -rf /usr/include/google
  • sudo cp -r ~/anaconda2/pkgs/libprotobuf-3.#.#-#/include/google/ /usr/include/google/

最后,更新库文件:

  • sudo rm /usr/lib/x86_64-linux-gnu/libproto*
  • sudo cp ~/anaconda2/lib/libproto* /usr/lib/x86_64-linux-gnu/

上面的方法是将系统的bin/include/lib文件全部替换为anaconda2中的对应版本。当然,也可以直接安装高版本的protobuf,可以自行下载并安装。但要注意,安装的路径为:/usr/lib/ /use/include/ /use/bin/

  1. 'caffe/proto/caffe.pb.h: No such file or directory’

该错误是因为caffe.proto没有主动编译的原因。在某些时候caffe.proto并不会主动编译生成对应的头文件,因此会报一些在proto定义的message类型未定义的错误,此时可以考虑主动编译该文件:

protoc src/caffe/proto/caffe.proto --cpp_out=.

mv src/caffe/proto/caffe.pb.h include/caffe/proto

  1. ‘python.h not found’ ‘pyconfig.h not found’

boost::python需要使用python的C/C++头文件,如果发现此类错误,可以使用如下方法解决:

sudo gedit /etc/profile

////////////////////////////////////////////////////////////////////////////////////

在尾部追加:

export

CPLUS_INCLUDE_PATH=$HOME/anaconda2/include/python2.7

////////////////////////////////////////////////////////////////////////////////////

 

Congratulations!