Ubuntu16.04+cuda8.0+opencv3.1+caffe+anaconda安装,双显卡

最近为了研究深度学习所以需要安装一个深度学习的环境,弄了一个星期,重装了10次电脑总算是弄好了,虽然还有很多不明白的地方,不过整个流程基本上是熟悉了。安装过程中看了很多网上的教程,没有一个是可以正常安装好的。其实我第一次安装就成功了,测试程序也跑起来了,GPU运算速度很快,但是一重启就懵逼了。。。。。。因为我使用的电脑是双显卡intel核显以及Nvidia GEFORCE GTX960M显卡(双显卡的电脑应该还是很多的),所以很容易出现各种驱动问题,一般问题会导致三种情况:

1.启动后电脑黑屏,不能进行任何操作(可能还有救)。

在grub界面选择要登录的系统按“e”,进入编辑界面,在倒数第二行末尾加入acpi_osi=linux nomodeset,具体操作可以上网查。

2.启动后电脑黑屏但是可以通过CTRL+ALT+F1(我的电脑是CTRL+ALT+F4)进入命令行模式(可能还有救)。

删除所有nvidia,sudo apt-get remove  nvidia*,然后重启。

3.进入登录界面,然后不断地让你登录,一直登录不进去,进入命令行也一直闪烁(可能没救了)。


我用的是DELL电脑,GPU是GEFORCE GTX960M,大家的GPU比我的新或者差不多应该就没问题。

下面为了能让新手“比较顺利”的安装,尽量把一些可能出现的问题也尽量写出来,好了,现在开始。


1.首先安装CUDA

(a)首先安装好Ubuntu16.04,然后先安装一些依赖

sudo apt-get update

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 libopenblas-dev liblapack-dev libatlas-base-dev

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

sudo apt-get install git cmake build-essential


(b)安装好之后需要禁用nouveau,创建/etc/modprobe.d/blacklist-nouveau.conf,写入:

blacklist nouveau 

option nouveau modeset=0 

然后sudo update-initramfs -u


(c)配置一些基本的环境变量

vim ~/.bashrc

加入:

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH 


到这里之后有些教程会让我们上NVIDIA官网上看我们的GPU型号应该用什么版本的驱动,其实不需要

另外有些教程会让我们把gcc和g++版本降低,比如降低为gcc-4.9和g++-4.9,我建议最好不要,后面会出错

(d)然后我们需要下载CUDA(https://developer.nvidia.com/cuda-downloads),这个网址

Ubuntu16.04+cuda8.0+opencv3.1+caffe+anaconda安装,双显卡_第1张图片


(e)安装cuda有点讲究

下载完成后重启电脑,在出现登录界面时,登录tty1,按Ctrl + Alt + F1,在文本模式中登录

关闭桌面服务sudo service lightdm stop。这步对于安装Nvidia驱动至关重要

进入下载cuda文件的目录执行:

sudo sh cuda-8.0.44_linux.run --no-opengl-libs

如果不加--no-opengl-libs应该是会出现循环登录问题

安装过程中完全按照它的指引就可以了,大概是

Accept EULA conditions

Say YES to installing the NVIDIA driver

Say YES to installing CUDA Toolkit + Driver

Say YES to installing CUDA Samples

然后重启,这个时候应该没有循环登录问题,可以正常进入桌面了


(f)修改环境配置

vim ~/.bashrc

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

export LD_LIBRARY_PATH=/usr/local/cuda8.0b64:$LD_LIBRARY_PATH

source .bashrc


(g)测试CUDA的sammples:

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery

sudo make

./deviceQuery

如果看到一些GPU的信息说明安装成功


2.配置cuDNN

cuDNN是GPU加速计算深层神经网络的库。
(a)首先去官网(https://developer.nvidia.com/rdp/cudnn-download)下载cuDNN,需要注册一个账号才能下载
我已经下载好了,直接分享吧http://pan.baidu.com/s/1bp3hTmv,自己下载的话按照下图选择
Ubuntu16.04+cuda8.0+opencv3.1+caffe+anaconda安装,双显卡_第2张图片


(b)下载cuDNN5.1之后进行解压,cd进入cuDNN5.1解压之后的include目录,在命令行进行如下操作:
sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件

(c)再将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 #生成软链接


3.安装opencv3.1

从官网(http://opencv.org/downloads.html)下载Opencv,并将其解压到你要安装的位置

在你的opencv目录下

mkdir build

cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D BUILD_TIFF=ON -D WITH_OPENGL=ON ..

make -j4

make的时间比较久,耐心等待。。。

sudo make install

sudo vim /etc/ld.so.conf

加上/usr/local/lib

然后sudo ldconfig


4.安装Anaconda

(a)网址:https://www.continuum.io/downloads,选择PYTHON2.7版本,根据自己系统位数,然后下载

Ubuntu16.04+cuda8.0+opencv3.1+caffe+anaconda安装,双显卡_第3张图片

下载完之后执行下载的文件,比如:
bash Anaconda2-4.2.0-Linux-x86_64.sh
后面就根据提示执行就可以了,很简单

(b)你在命令行输入python,会调用系统自带的python,所以 执行完之后需要替换python
vim ~/.bashrc
加入anaconda的安装目录是/home/xxx/anaconda2,那么在文件的最后加上
alias python=’/home/xxx/anaconda2/bin/python‘
然后source .bashrc
你再执行python就变成了anaconda的python

5.安装caffe

(a)从github上获取caffe:
git clone https://github.com/BVLC/caffe.git
进入caffe目录
sudo cp Makefile.config.example Makefile.config

(b)我们需要修改Makefile.config文件
vim Makefile.config

以下是需要修改的地方

#USE_CUDNN := 1
修改成:
USE_CUDNN := 1

#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3

注释掉原来的PYTHON_INCLUDE,使用ANACONDA的配置,
注意文件的ANACONDA_HOME := $(HOME)/anaconda
可能需要改为ANACONDA_HOME := $(HOME)/anaconda2,根据自己的情况

#PYTHON_INCLUDE := /usr/include/python2.7 \
# /usr/lib/python2.7/dist-packages/numpy/core/include
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.
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 := /usr/lib
PYTHON_LIB := $(ANACONDA_HOME)/lib

#WITH_PYTHON_LAYER := 1
修改为
WITH_PYTHON_LAYER := 1

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

(c)然后修改makefile文件
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

然后再大概181行的地方做修改
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
替换为
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5 opencv_core opencv_imgproc opencv_imgcodecs opencv_highgui

(d)编辑/usr/local/cuda/include/host_config.h
#error-- unsupported GNU version! gcc versions later than 5 are not supported!
改为
//#error-- unsupported GNU version! gcc versions later than 5 are not supported!

(e)
make all -j4
运气好的话就可以编译成功了,如果还有一些小问题可以百度谷歌解决。


你可能感兴趣的:(caffe,Ubuntu)