1. 前期准备
2. 配置 Caffe-gpu
2.1 安装 caffe 依赖项
sudo apt install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt install --no-install-recommends libboost-all-dev
sudo apt install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt install libgflags-dev libgoogle-glog-dev liblmdb-dev
2.2 下载 Caffe
git clone [email protected]:BVLC/caffe.git
cd caffe
2.3 修改 Makefile.config 文件
由于 make 指令只能 make Makefile.config 文件,而 Makefile.config.example 是 caffe 给出的 makefile 例子。因此,首先将 Makefile.config.example 的内容复制到 Makefile.config:
sudo cp Makefile.config.example Makefile.config
2.3.1 打开开关
如果需要使用 cudnn,则打开 cudnn 注释;如果使用 opencv3,则打开 opencv3 的注释;如果需要使用 python 编写 layer,则打开 python 开关,如下:
#USE_CUDNN:= 1 =====> USE_CUDNN:= 1
#OPENCV_VERSION:= 3 =====> OPENCV_VERSION:= 3
#WITH_PYTHON_LAYER:= 1 =====> WITH_PYTHON_LAYER:= 1
2.3.2 一个重要的修改
因为 Ubuntu18.04 的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径。将 #Whatever else you find you need goes here. 下面的内容按照如下方式修改:
INCLUDE_DIRS:= $(PYTHON_INCLUDE) /usr/local/include =====> 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
2.4 修改 Makefile 文件
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler-fPIC$(COMMON_FLAGS) =====> NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
2.5 编译 caffe
编译指令如下:
make all -j8
如果中间出现编译错误,一定要耐心寻找解决方案,解决方案主要是修改 Make.config 文件和 Makefile 文件,修改之后,先清除错误编译,再重新编译:
sudo make clean
make all -j8
2.6 趟坑记录
下面记录了一些我遇到过的一些坑
2.6.1 nvcc fatal
编译过程中错误提示如下:
NVCC src/caffe/layers/bnll_layer.cu
nvcc fatal : Unsupported gpu architecture 'compute_20'
Makefile:594: recipe for target '.build_release/cuda/src/caffe/layers/bnll_layer.o' failed
make: *** [.build_release/cuda/src/caffe/layers/bnll_layer.o] Error 1
make: *** Waiting for unfinished jobs....
修改 Makefile.config 中的 CUDA_ARCH 的设置,由于我的 CUDA 版本是 10.0,所以将以下两行删除或者注释掉,如下:
2.6.2 Makefile:635
编译过程中报错如下:
Makefile:635 recipe for target ‘.build_release/tools/convert_imageset.bin’ failed
修改 Makefile 文件,在
LIBRARIES += opencv_core opencv_highgui opencv_imgproc
后面添加 opencv_imgcodecs,如下
3. 测试
Caffe 配置完成后,利用 MNIST 数据集进行测试。进入 caffe 编译目录,执行以下命令:
./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh
./examples/mnist/train_lenet.sh
测试效果如下:
也可以按照以下方式,直接编译 runtest 文件:
make runtest
看到如下结果,则说明 caffe 已经安装成功