Ubuntu16.04操作系统下配置caffe环境(GPU版本)

说明:如果你按照这个文档操作,请完全按照这下面的目录进行操作。如你是对这个环境非常熟悉,就当我没有说这句,哈哈~
整体步骤:

  1. 查询显卡型号
  2. 安装显卡驱动
  3. 安装CUDA
  4. 安装cuDNN
  5. 安装opencv
  6. 配置caffe
  7. 安装ffmpeg,此项如果没有用到可以选择不安装

详细描述:

  1. 显卡型号查询
 lspci | grep -i nvidia

在这里插入图片描述

  1. 根据查询出的显卡型号去下载对应的显卡驱动 NVIDIA官网,我这里下载是GeForce GTX 1050Ti的显卡驱动
  2. 显卡驱动安装
    1)首先屏蔽自带的显卡驱动
vim  /etc/modprobe.d/blacklist.conf
#最后一行加入后面的内容将自带显卡驱动屏蔽 blacklist nouveau
sudo update-initramfs -u #将修改后的内容生效

此处需要重启一下电脑

2)重启电脑后Ctrl+Alt+F1进入命令行界面,此处会黑屏了。这时一定要找一个备用电脑来看接下的操作

sudo service lightdm stop
sudo chmod +x ./NVIDIA-Linux-x86_64-384.111.run --no-opengl-files 

重点:如果你是双显卡的电脑,请一定要加上这个参数–no-opengl-files,如果没有加,那么你将无法进去图形界面了,就会在登录页面一直登录。
重启电脑后,输入sudo nvidia-smi 命令会显示显卡相关信息,如果看到以下图片说明显卡驱动安装成功了。
Ubuntu16.04操作系统下配置caffe环境(GPU版本)_第1张图片
4. 安装CUDA
1)下载安装官网地址
2)安装,一定要去安装的时候显卡驱动去掉,因为我们已经安装过驱动了。

sudo chmod 777 cuda_9.0.176_384.81_linux.run
sudo ./cuda_9.0.176_384.81_linux.run

3)环境配置

#vim ~/.bashrc 最后增加以下就可以了
exportPATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
exportLD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

4) 测试是否安装成功

cd /usr/local/cuda-10.1/samples/1_Utilities/deviceQuery
sudo make
sudo ./deviceQuery

看到以下显示,说明你的cuda安装成功了。
Ubuntu16.04操作系统下配置caffe环境(GPU版本)_第2张图片5. 安装配置cuDNN
1)下载cuDNN下载,此处需要注意的是版本要与cuda版本一致
2)安装

sudo tar -zxvf ./cudnn-10.1-linux-x64-v7.tgz
cd cuda/include
sudo cp cudnn.h /usr/local/cuda/include  #复制头文件到cuda头文件目录
cd ..

cd lib64

sudo cp lib*/usr/local/cuda/lib64/    #复制动态链接库
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.7    #删除原有动态文件
sudo ln -s libcudnn.so.7.0.5 libcudnn.so.7  #生成软衔接
sudo ln -s libcudnn.so.7 libcudnn.so      #生成软链接
  1. 安装opencv+opencv_contrib
  1. 下载opencv下载地址,可以选择对应的版本,opencv与opencv_contrib要版本一致。
    Ubuntu16.04操作系统下配置caffe环境(GPU版本)_第3张图片2)先解压opencv,再将opencv_contrib源码解压到opencv目录中
    3)注:在第4步安装的时候就出现以下两个错误:
  • 编译时遇到缺少boostdesc_bgm.i等文件,手动添加到缺少文件的位置(opencv_contrib-3.4.6/modules/xfeatures2d/src)下载地址
  • 找不到hpp文件目录,根据报错路径找到报错位置,修改hpp文件为绝对路径
/usr/local/opencv-3.4.6/modules/stitching/include/opencv2/stitching/detail/matchers.hpp:52:42: fatal error: opencv2/xfeatures2d/cuda.hpp: 没有那个文件或目录
/usr/local/opencv-3.4.6/modules/stitching/src/precomp.hpp:91:42: fatal error: opencv2/xfeatures2d/cuda.hpp: 没有那个文件或目录

/usr/local/opencv-3.4.6/opencv_contrib-3.4.6/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp


/usr/local/opencv-3.4.6/modules/stitching/src/matchers.cpp:52:35: fatal error: opencv2/xfeatures2d.hpp: 没有那个文件或目录
/usr/local/opencv-3.4.6/opencv_contrib-3.4.6/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp

/usr/local/opencv-3.4.6/opencv_contrib-3.4.6/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp:43:43: fatal error: opencv2/xfeatures2d/nonfree.hpp: 没有那个文件或目录

/usr/local/opencv-3.4.6/opencv_contrib-3.4.6/modules/xfeatures2d/include/opencv2/xfeatures2d/nonfree.hpp

4)安装
谨记设置WITH_GTK=ON

cd release // release是自己创建的存放cmake结果的目录
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=/opencv_contrib路径/modules ..
make -j8
sudo make install
  1. 配置caffe
  1. 安装依赖包
apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
apt-get install --no-install-recommends libboost-all-dev
apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

2)下载源码包caffe git 地址
3)修改配置文件

cp Makefile.config.example Makefile.config 
vim Makefile.config 

将以下三项的注释去掉

#USE_CUDNN:= 1
#OPENCV_VERSION:= 3
#WITH_PYTHON_LAYER:= 1 

修改此处(此处不要直接全部手复制,直接加一些新加的部分就可以),如下:

#Whatever else you find you need goes here
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

修改完成后,还需要修改Makefile,记得这个文件和Makefile.config不是一个文件噢

NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC$(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

4) 编译,测试

make all -j8
sudo make runtest

Ubuntu16.04操作系统下配置caffe环境(GPU版本)_第4张图片
当看到以下显示时,恭喜你,配置完成了。如果你需要ffmpeg可以安装,如果不需要。那么到这里就可以了。
在此提示一下,这个环境的安装与配置,请不要这找一点内容那里找一点内容,结果安装的时候就出现各种错误。因为我当时就是这样找了各种的文章,结果出现了各种错误。照此文章一般不会出什么错误,因为这是我验证过的。希望对你有帮助~~~

  1. 安装ffmpeg,这个就是相对好安装多了,我选择了一个最快的方法
apt-get install ffmpeg

备注:在安装的过程遇到了这个问题,到最后也没有定位到这个问题是什么原因(我重新从第一步安装了一下就好了),我估计应该是我之前安装opencv的时候出现了问题。有朋友遇到过这个问题解决了,可以在下面留言告诉我一下,谢谢。

NVCC src/caffe/util/im2col.cu
AR -o .build_release/lib/libcaffe.a
LD -o .build_release/lib/libcaffe.so.1.0.0
CXX tools/upgrade_net_proto_binary.cpp
CXX/LD -o .build_release/tools/upgrade_net_proto_binary.bin
/usr/bin/ld: .build_release/lib/libcaffe.so: undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libdl.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:635: recipe for target '.build_release/tools/upgrade_net_proto_binary.bin' failed
make: *** [.build_release/tools/upgrade_net_proto_binary.bin] Error 1

错误备注:

  1. 提示找不到库文件,需要安装 apt-get install libxml2 libxml2-dev
找不到xml2库错误:apt-get install libxml2 libxml2-dev
  1. 报错*** Error in `python’: free(): invalid pointer
apt-get install libtcmalloc-minimal4
vim ~/.bashrc
#增加以下配置文件
export LD_PRELOAD="/usr/lib/libtcmalloc_minimal.so.4"
#重新加载环境变量
sudo source ~/.bashrc

锁定固定版本,启动默认使用内核
https://blog.csdn.net/haijun7013/article/details/105454293?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

你可能感兴趣的:(C++,学习记录)