记一次ubuntu16.04+python3+cuda10.0下安装caffe实操

【起因:】tensorflow,caffe,pytorch三选其一,是深度学习必须要过一道坎。tensorflow就不说了,只要cuda版本对上,安装就很简单。pytorch听说也不难。caffe试过都说到处是坑,网上一搜,全部都是踩坑记,血泪史之类,今天就来扒一扒这个坑。

【步骤:】

一.我的环境

ubuntu16.04+python3.5+cuda 10.0

关于如何安装nvidia驱动,cuda,cudnn,以及opencv3 等网上已经有足够多的教程了,可以直接在网上找。这里主要提示三点:

1.确保nvdia显卡驱动要正确安装,有的虽然安装上了,但由于版本之间不兼容问题,是看不到GPU里线程的信息,就是下图下面半部分,在后面GPU编译会过不去。

2.nvcc -V和你安装的cuda版本不一致

请参考我的另一篇博客:https://blog.csdn.net/qq525003138/article/details/103911704

3.python版本问题

有的虽然安装了python3.x版本,但默认指向还是ubuntu自带的python2.7

如何切换python版本,请参考:https://www.jianshu.com/p/4d27fa2dce86

二、安装依赖库

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

三、下载caffe源码

下载地址:git clone https://github.com/BVLC/caffe.git

四、修改配置文件

1.修改makefile.config文件

进入caffe源码主目录,拷贝一个Makefile.config作为编译配置选项

命令:cp Makefile.config.example Makefile.config

打开makefile.config

# USE_CUDNN := 1  

# USE_OPENCV := 0

# OPENCV_VERSION := 3

# WITH_PYTHON_LAYER := 1

# 改为:

USE_CUDNN := 1

USE_OPENCV := 1

OPENCV_VERSION := 3

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 

使用python3.5版本,把python2.7代码加注释,python3.5前的注释去掉

2.修改makefile文件

位置分别在181行,425行

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
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

 五、编译

在caffe-master目录下打开终端输入:make all -j8

流程非常简单,主要时解决编译时出现的错误:

【问题1:】缺少gflags头文件,这是一个google的日志库

 【解决方法:】

【问题2:】缺少lmdb头文件

【解决方法:】

和上面一样,直接安装:sudo apt-get install liblmdb-dev

【问题3:】

 【解决方法:】

后面两个lcblas,latlas都是缺少依赖库,和上面一样:sudo apt-get install libatlas-base-dev

lopencv_imgcodecs是opencv里的一个链接库,必须先安装opencv,然后在/usr/lib/x86_64-linux-gnu目录下建立软连接。

 【问题4:】

nvcc fatal   : Unsupported gpu architecture 'compute_20',原因是不支持GPU架构'compute_20'(cuda版本高了)

【解决方法:】

在Makefile.config里面的找到

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_52,code=sm_52 \
                  -gencode arch=compute_60,code=sm_60 \
                  -gencode arch=compute_61,code=sm_61 \
                  -gencode arch=compute_61,code=compute_61

把前面compute_20相关的那2行删除
-gencode arch=compute_20,code=sm_20
-gencode arch=compute_20,code=sm_21
 

KO!

【总结:】基本还算顺利,除了配置opencv和建立那个链接库软连接花点时间,其他需要注意的就是前面显卡安装,然后就是各种版本和依赖库,因为caffe这个框架维护的人还是比较少的,所以安装的版本不要太新。看到别人还有一个c++=std-11标准库问题,我没遇到,不过解决链接mark下来:https://blog.csdn.net/pkwcxy/article/details/82351669?utm_source=blogxgwz8

发布了11 篇原创文章 · 获赞 6 · 访问量 2303

猜你喜欢

转载自blog.csdn.net/qq525003138/article/details/103910929