此博文是我与@Issac_33历时3天安装完成,已在NVIDIA GTX970显卡的电脑与NVIDIA GeForce 840M显卡的电脑上测试通过。 如果出现问题请及时指正或留言。一定要使用16.04的系统,不推荐使用15.10的系统,否则前方无限坑!!!!!!
需要下载的东西
安装步骤
安装NVIDIA驱动nvidia-367.57
- 在Ubuntu的设置里面进行驱动的安装,打开System Settings -> System Settings -> Software & updates -> Additional Driver 进行安装,截图如下
- 安装下载会耗费一段的时间,安装结束需要对电脑进行重启即可
验证安装成功
- 搜索nvidia,如果出现了如下的界面界面即说明安装成功
同样,也可在命令行输入如下的命令
sudo nvidia-smi
如果出现如下的界面即说明安装成功
- 搜索nvidia,如果出现了如下的界面界面即说明安装成功
- 注意:驱动下载安装完之后一定要重启,不能注销再登录,否则会出现电脑黑屏并输入各种乱七八糟的信息!
- 在Ubuntu的设置里面进行驱动的安装,打开System Settings -> System Settings -> Software & updates -> Additional Driver 进行安装,截图如下
安装Anaconda2
wget https://repo.continuum.io/archive/Anaconda2-4.2.0-Linux-x86_64.sh sudo bash Anaconda2-4.2.0-Linux-x86_64.sh #接下来按提示一步一步安装即可
安装各种的依赖库,在命令行输入如下的命令
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 -f
如果遇到Hash sum dismatch问题,则依据提示的.deb地址进行先下载再安装,如果使用了阿里云的软件源,则使用第二种方法也可解决
#一个例子 wget https://xxx/ppp.deb sudo dpkg -i ppp.deb
sudo vim /etc/resolv.conf # 加上下面的几句话 nameserver 202.96.134.133 nameserver 202.96.128.68
安装cuda 8.0
- 点此进入cuda下载界面,下载的界面如下图
- 注意在此处一定下载 .run文件的,否则后方有无限的坑!!
下载完成后在cuda 8 的下载目录打开命令行输入以下的命令进行cuda-8的安装
sudo sh cuda_8.0.44_linux-run
之后按照提示一步一步的安装就行了,但是 Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62 出现时一定要选择否,因为之前已经安装过了nvidia显卡的驱动
环境变量配置
打开~/.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}}
保存之后,输入如下的命令使配置生效
source ~/.bashrc
测试CUDA的sammples,运行如下的命令
cd /usr/local/cuda-8.0/samples sudo make all cd ./1_Utilities/deviceQuery sudo make ./deviceQuery
出现如下的界面即证明安装成功
- 点此进入cuda下载界面,下载的界面如下图
安装 cudnn v5.1
- cuDNN是GPU加速计算深层神经网络的库,下载cudnn v5.1要进入官网进行下载,可能需要注册
进入下载的目录,运行如下的命令
tar zxvf cudnn-8.0-linux-x64-v5.1.tgz #解压 cd cuda/include #进入include目录 sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件 cd ../lib64 #进入lib64目录 sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库 cd /usr/local/cuda/lib64/ sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件 # 以下的两步设置软连接时,一定要注意自己电脑的/usr/local/cuda/lib64/下的libcudnn.so.5.1.5名字,有的可能是libcudnn.so.5.0.5等,要依据自己的电脑上的文件来定 sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5 #生成软链接 sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接
- cuDNN是GPU加速计算深层神经网络的库,下载cudnn v5.1要进入官网进行下载,可能需要注册
安装opencv3.0.0
注意,前方多坑,请仔细看!!!
搭建编译环境
sudo apt-get install build-essential
安装依赖库
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
下载并解压opencv
cd ~ wget https://github.com/Itseez/opencv/archive/3.0.0-alpha.zip -O opencv-3.0.0-alpha.zip #下载opencv unzip opencv-3.0.0-alpha.zip #解压opencv
代码修改,为了使得之后opencv的编译可以通过,需要做如下的修改
打开opencv-3.0.0-alpha/modules/cudalegacy/src/cuda/NCVPixelOperations.hpp
删除51-58行,61-68行,119-133行的static
打开opencv-3.0.0-alpha/modules/cudastereo/src/cuda/stereocsbp.cu
删除62,66,74行的static
打开opencv-3.0.0-alpha/modules/cuda/src/graphcuts.cpp
修改第45行的代码
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
改为
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION>=8000)
至此,对于代码的修改就此完毕,下面进行编译
编译opencv
cd ~/opencv-3.0.0-alpha #进入opencv-3.0.0-alpha文件夹 mkdir build cd build # 直接cmake .. 会出现nvcc fatal : Unsupported gpu architecture'compute_11'错误 sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler .. make all -j4 #多核运算进行编译,此步的耗时较长,请耐心等待 sudo make install #上一步进行的是编译,此步进行的是安装
至此,opencv的编译安装就此完毕
安装caffe
下载caffe
cd ~ sudo apt-get install git #没有git的用户需要进行此步 git clone https://github.com/BVLC/caffe.git #下载caffe
将原Makefile.config.example复制为Makefile.config并做如下的修改
使用了cuDNN,取消相应注释
#USE_CUDNN := 1 #注释取消改为下一行 USE_CUDNN := 1
使用了opencv 3.0的版本,取消相应注释
#OPENCV_VERSION := 3 #注释取消改为下一行 OPENCV_VERSION := 3
使用了openblas
BLAS := open # 将这句话的后面改为open
修改INCLUDE_DIRS与LIBRARY_DIRS
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include #改为下面一行,否则出现fatal error: hdf5.h: No such file or directory INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib #改为下面一行 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
由于使用了Anaconda2,需要取消Anaconda相关的注释,并正确地配置路径
ANACONDA_HOME := $(HOME)/anaconda2 #取消这一行的注释,并且在后面写上正确的anacond路径 #配置相应的include路径 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 #取消注释
若要使用python来编写layer,取消相应注释
#WITH_PYTHON_LAYER := 1 WITH_PYTHON_LAYER := 1
修改Makefile
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS) #替换为下面一行 NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS) LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5 #修改为下面一行,否则出现fatal error: hdf5.h: No such file or directory LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl
编译安装caffe
cd ~/caffe #进入你的caffe目录 mkdir build cmake .. make all -j4 #使用4线程编译 make runtest #测试
make all -j4 成功之后的结果图如下
make runtest 成功后的结果如下图
错误/anaconda2/lib/libstdc++.so.6: version `GLIBCXX_3.4.20’ not found ,做如下的操作
cd ~/anaconda2/lib mv -vf libstdc++.so.6 libstdc++.so.6.old #备份原来的libstdc++.so.6 ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./libstdc++.so.6 #创建新的软连接
之后重新从
make all -j4
开始
配置pycaffe接口
安装protobuf
conda install protobuf
进入caffe/build目录,进行编译
cd ~/caffe/build make pycaffe
添加~/caffe/Python到$PYTHONPATH
gedit ~/.bashrc #在打开的.bashrc的末尾添加下面一行 export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH #注意/path/to/caffe修改为你自己的caffe路径,此处是~/caffe source ~/.bashrc
验证caffe是否可以成功的导入
如果出现libcudart.so.8.0: cannot open shared object file: No such file or director则进行以下操作
sudo find /* -name libcudart.so.8.0 #在电脑查找libcudart.so.8.0 #例如查找到/usr/local/lib64/libcudart.so.8.0,则进行如下的操作 sudo ln -s /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/lib/libcudart.so.8.0
参考链接
http://blog.csdn.net/u011762313/article/details/47262549
http://blog.csdn.net/u011762313/article/details/47263845
http://www.2cto.com/kf/201610/552429.html
http://askubuntu.com/questions/575505/glibcxx-3-4-20-not-found-how-to-fix-this-error
http://caffework.blogspot.hk/2015/04/install-caffe-on-ubuntu-1404.html