ubuntu16.04+anaconda2+gpu+caffe安装

1. 安装显卡驱动
个人觉得安装显卡驱动是最烦的,所以单独写了博客,参考 Ubuntu16.04系统下装显卡驱动 ,在这就不再叙述。
2.安装相关依赖

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

3. 安装cuda
如果在cuda官网上下载的是最新版本,安装起来可能会出现错误,于是我安装的cuda8.o版本
链接: https://developer.nvidia.com/cuda-80-ga2-download-archive
在这里插入图片描述
下载好之后,在下载的文件夹中打开终端,输入命令:

sudo sh cuda_8.0.61_375.26_linux.run

在这里插入图片描述
出现这个界面,然后一直按enter键,直到进度条为100%,然后根据提示,依次输入accept,n,y,y,y
在这里插入图片描述安装结束后,设置变量环境,输入命令:

sudo gedit ~/.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
检查是否安装成功,输入命令nvcc --version
在这里插入图片描述
如果出现上图信息,说明cuda安装成功。

4.安装cudnn8.0
cudnn8.0下载连接:https://developer.nvidia.com/rdp/cudnn-archive
在这里插入图片描述
下载好之后,同样在文件中打开终端,输入命令

sudo tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz

解压后,接着输入命令

cd cuda/include
sudo cp cudnn.h /usr/local/cuda/include
cd ..
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.0.5 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so

测试一下是否安装成功,输入命令

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

在这里插入图片描述
如果出现上图信息,说明配置成功。
5.安装opencv
ubuntu安装caffe之前,必定要安装opencv,网上很多教程都是说安装opencv3.1版本,不知道什么原因,可能是因为版本旧的原因,怎么都安装不上,于是我选择了opencv3.4.6版本,直接在opencv官网上就能下载。
同样在下载的文件下打开终端,输入命令

unzip opencv-3.4.6.zip
sudo mv opencv-3.4.6 opencv
cd ~/opencv
mkdir build
cd build

开始配置

sudo apt install cmake
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

编译

sudo make -j8 

以上只是编译,下面开始安装,输入命令

sudo make install

检测是否安装成功

pkg-config opencv --modversion

如果显示对应的安装版本号,则说明安装成功。

6. 安装anaconda2
在anaconda官网上下载anaconda2,下载完后,在该文件中右击,打开终端,输入命令:

bash Anaconda2-2019.03-Linux-x86_64.sh

一直按enter键,在安装过程中,会问安装路径,按回车即可。询问是否添加到~/.bashrc中,回复yes即可。
安装完成后,执行命令如下:

echo 'export PATH="/home/csm/anaconda2/bin:$PATH"' >> ~/.bashrc

其中csm是我电脑用户名,你得根据你电脑用户名修改,接着输入命令

source ~/.bashrc

测试一下是否安装成功,输入命令conda --version,如果出现如下图所示,则说明安装成功。
在这里插入图片描述
如果你看到这里的话,说明你前面安装的都很顺利,喝杯水冷静一下,因为后面还有更大的坑等着我们。
7.安装caffe
(1)首先最下载安装包:https://github.com/BVLC/caffe
然后进行解压unzip caffe-master.zip
(2)然后进入caffe-master文件夹,打开终端,输入命令,复制Makefile.config文件

sudo cp Makefile.config.example Makefile.config

(3)打开Makefile.config文件sudo gedit Makefile.config
(4)修改Makefile.config文件内容:

  1. 应用 cudnn
#USE_CUDNN := 1
#修改成: 
USE_CUDNN := 1
  1. 应用 opencv 版本
#OPENCV_VERSION := 3 
#修改为: 
OPENCV_VERSION := 3
  1. 使用 python 接口
#WITH_PYTHON_LAYER := 1 
#修改为 
WITH_PYTHON_LAYER := 1
  1. 修改 python 路径

在PYTHON_INCLUDE前面加一个#

#PYTHON_INCLUDE := /usr/include/python2.7 \
		/usr/lib/python2.7/dist-packages/numpy/core/include

将ANACONDA_HOME和PYTHON_INCLUDE前面的#去掉,anaconda修改为anaconda2

ANACONDA_HOME := $(HOME)/csm/anaconda2
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
		$(ANACONDA_HOME)/include/python2.7 \
		$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include

如下图所示
在这里插入图片描述
5. 重要的一步

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 

保存退出。
6. 在caffe-master文件夹下打双击打开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
#改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
  1. 安装依赖
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 libatlas-base-dev 
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
conda install protobuf
  1. 编译make all -j8,这时候你会发现各种各样的错,到这我都有点崩溃了,已经研究了好几天了。
  2. 可能的错误
    (1)nvcc fatal : Unsupported gpu architecture ‘compute_20’
    修改方法,在caffe-master/cmake文件夹下,双击打开Cuda.cmake文件,将第7行修改为第8行
  1 if(CPU_ONLY)
  2   return()
  3 endif()
  4 
  5 # Known NVIDIA GPU achitectures Caffe can be compiled for.
  6 # This list will be used for CUDA_ARCH_NAME = All option
  7 #set(Caffe_known_gpu_archs "20 21(20) 30 35 50 52 61")
  8 set(Caffe_known_gpu_archs "30 35 50 52 61")

(2)In file included from /usr/include/boost/python/detail/prefix.hpp:13:0,
from /usr/include/boost/python/args.hpp:8,
from /usr/include/boost/python.hpp:11,
from tools/caffe.cpp:2:
/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: 没有那个文件或目录

这是因为当前环境下没有安装的Python的开发库,使用yum安装一下即可,解决办法

conda install python-devel

(3)make: *** [.build_release/src/caffe/layer_factory.o] Error 1
解决方案

make clean

export CPLUS_INCLUDE_PATH=/usr/include/python2.7

make all -j8

(4)make: *** [.build_release/lib/libcaffe.so.1.0.0] Error 1

解决方案
进入cuda/include文件夹中,打开终端命令

sudo cp cudnn.h /usr/local/cuda/include/

在这里插入图片描述
进入cuda/lib64文件夹中,打开终端命令

sudo cp {libcudnn.so,libcudnn.so.5,libcudnn.so.5.1.10,libcudnn_static.a} /usr/local/cuda/lib64

在这里插入图片描述
虽然说无法通过符号链接,但是不影响编译
(5)find /usr/include -name pyconfig.h
/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: No such file or directory

解决方案:
注意你的anaconda2的路径

make clean
export CPLUS_INCLUDE_PATH=/usr/include/python2.7 
make all -j8

(6).build_release/tools/caffe: error while loading shared libraries: libcudart.so.8.0: cannot open shared object file: No such file or directory
Makefile:542: recipe for target ‘runtest’ failed

解决方案:

sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig

到这我真的无力吐槽了,就算前面出现这些个错误,按照百度的一一去解决,但是发现根本不管用,就在我快放弃的时候,第二天我又重新试了一遍,结果莫名其妙的就成功了,装caffe真的需要靠运气。
10 . 编译成功后,即使没报错,也别高兴的太早,在测试一下

sudo make runtest

如果运行出现下图所示,表面安装成功
在这里插入图片描述
11. 安装 pycaffe
我以为到这总能成功了吧,但是依然想多了,心里是一万cnm在崩腾。
输入命令

sudo make pycaffe -j8

结果又报错:
Makefile:517: recipe for target ‘python/caffe/_cmakaffe.so’ failed
解决方案:
首先确保Makefile.config中你的anaconda2的路径是正确的,就是ANACONDA_HOME后面的路径
然后输入命令

sudo apt-get install python-numpy

重启电脑,重新编译

make clean
make all -j8
sudo make pycaffe -j8

md。终于编译成功了,测试一下,输入

python
import caffe

在这里插入图片描述
在这花了一个星期的时间终于成功了,真的很心酸

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章