一、安装显卡驱动 cuda cudnn
鉴于我下载的CUDA包中自带显卡驱动,故直接安装CUDA和cudnn,安装前关闭桌面xserver和禁用nouveau,禁用这些和安装驱动请参考另一篇博客 install tensorflow,在开头讲解了安装驱动的过程。
鉴于这次实在linux mint 19上安装,其基于Ubuntu 18.04,故重新安装cuda
准备好cuda_10.0.130_410.48_linux.run,可以到官网下载
sudo chmod a+x cuda_10.0.130_410.48_linux.run
sudo sh ./cuda_10.0.130_410.48_linux.run
除了以下两项选择了no,其他都选择yes和默认目录
安装完成后注意环境变量
CUDA_HOME=/usr/local/cuda-10.0
LD_LIBRARY_PATH=$CUDA_HOME/lib64
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$CUDA_HOME/bin"
到官网下载对应18.04的cuDNN安装
sudo dpkg -i libcudnn7_7.3.1.20-1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.3.1.20-1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.3.1.20-1+cuda10.0_amd64.deb
验证是否安装成功,可以参考install tensorflow前半部分,注意安装g++等。
补充:安装opencv
首先要把opencv卸载干净
ubuntu会预装一个libopencv,也要卸载,不然之后caffe运行可能报错。
可以参考:彻底卸载opencv
然后编译运行opencv
二、安装caffe
采用源码编译安装的方法,到github上下载源码,编译之前在环境变量中加入库文件路径。
LD_LIBRARY_PATH=$CUDA_HOME/lib64:/usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu
使其生效
source /etc/environment
在github上下载的zip,解压后进入caffe-master编译。
cp Makefile.config.example Makefile.config
make all
make test
make runtest
编译过程遇到错误:
错误1:
fatal error: cblas.h: No such file or directory
安装atlas
sudo apt-get install libatlas-base-dev
错误2:
fatal error: hdf5.h: No such file or directory
安装hdf5,去官网下载,不过官网较慢,可以在国内网站找压缩包。本文使用hdf5-1.10.4。
解压后编译安装
tar -zxvf hdf5-1.10.4.tar.gz
cd hdf5-1.10.4/
mkdir build
cd build
sudo cmake -j80 …
sudo make
sudo make install
其中80是cpu的核心数,可以加快速度,酌情更改。
编译安装完成后可以发现hdf5.h的存放目录为/usr/local/HDF_Group/HDF5/1.10.4/include/hdf5.h,将其加入环境变量
后来发现之前装过hdf5,只是需要将其指定在makefile.config中,在其中加入:
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/hdf5/serial/
如果还有错误,请参照这里
错误3:
libcaffe.so: undefined reference to `cv::imread(cv::String const&, int)'
更改makefile.config
USE_CUDNN :=1
WITH_PYTHON_LAYER := 1
OPENCV_VERSION :=3
还有应该去除以下前两行
解决错误后重新编译caffe
sudo make -j80 all
make -j80 test
make -j80 runtest
make -j80 runtest这一步遇到问题4:
.build_release/tools/caffe: error while loading shared libraries: libcudart.so.10.0: cannot open shared object file: No such file or directory
解决:
在/etc/ld.so.conf.d目录下创建cuda.conf,写入cuda路径
/usr/local/cuda/lib64
更新缓存
sudo ldconfig
问题5:
error while loading shared libraries: libprotobuf.so.18
解决:找到这个文件,拷贝到环境变量配置过的地方,比如/usr/local/lib
重新运行
make -j80 runtest
如果结果全部是OK,则安装成功。
如果遇到undefined symbol:
_ZN2cv8imencodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_11_InputArrayERSt6vectorIhSaIhEERKSB_IiSaIiEE错误。
那么尝试在Makefile中更改。
ifeq ($(DEBUG), 1)
COMMON_FLAGS += -DDEBUG -g -O0
NVCCFLAGS += -G
else
COMMON_FLAGS += -DNDEBUG -O2
endif
改为:
ifeq ($(DEBUG), 1)
COMMON_FLAGS += -DDEBUG -g -O0
NVCCFLAGS += -G
else
COMMON_FLAGS += -DNDEBUG -O2
NVCCFLAGS += -G
endif
然后检查opencv是否同时安装了多个版本,应该值保留一个。
如果要提供python接口
make pycaffe
然后将…/caffe/python添加到PYTHONPATH
然后再python命令行运行import caffe 测试
如果遇到
问题:
can not find module skimage.io
解决:
sudo apt-get install python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython
sudo apt-get update
make pycaffe