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。
- 安装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已经安装成功了。
- 安装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)安装显卡驱动
这里有两种方式,分别从ubuntu库和nvidia网站获取驱动安装包。
【Ubuntu方式】
如上左图所示(不同桌面环境显示不同),直接搜索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安装完成。
- 安装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
如果直接使用安装文件安装的话,安装程序已经配置好了,不需要再定义路径。
- 安装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)直接拷贝过来即可。注意,添加路径是仍然要做的,只是少了编译安装的步骤。
- 安装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 ?= @
////////////////////////////////////////////////////////////////////////////////////
- 下面安装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的安装中会经常遇到的一些问题:
- '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.##
##是错误提示的版本号。
- 'libhdf5_hl.so.## is not found'
类似于上面的错误:
cd /usr/local/lib
sudo ln -sf ~/anaconda2/lib/libhdf5_hl.so.## libhdf5_hl.so.##
- 'libhdf5.so.## is not found'
类似于上面的错误:
cd /usr/local/lib
sudo ln -sf ~/anaconda2/lib/libhdf5.so.## libhdf5.so.##
- 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/
- '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
- ‘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!