ubuntu16-04安装GPU版本的caffe
记录一下GPU版本的caffe的安装过程, 路慢慢其修远兮, 吾将上下而求索。 参考链接如下: 大佬一 大佬二
安装opencv
安装需要的两个opencv文件在我的百度云中可以下载,百度云链接地址:链接:链接: https://pan.baidu.com/s/1o8ZK76E 密码: hswb
具体安装教程见百度云中Linux下OpenCV安装PPT所示,讲解的很详细。编译成功之后可以用例子测试一下,PPT中也有具体讲解。
如何测试?
Ubuntu16.04下安装opncv
- Create a directory DisplayImagefor test project:
1 |
|
- Create DisplayImage.cpp and edit it:
1 |
|
Then edit the DisplayImage.cpp:
1 |
|
- Create a CMake file:
1 |
|
Then edit the CMakeLists.txt: 1
2
3
4
5cmake_minimum_required(VERSION 2.8)
project(DisplayImage)
find_package(OpenCV REQUIRED)
add_executable(DisplayImage DisplayImage.cpp)
target_link_libraries(DisplayImage ${OpenCV_LIBS})
- Generate the executable file:
1 |
|
如果编译时cmake报错
1
//usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line
1 |
|
- Execute it:
1 |
|
安装显卡驱动
手动安装
(1)查询NVIDIA驱动型号:
首先去官网 http://www.nvidia.com/Download/index.aspx?lang=en-us 查看适合自己显卡的驱动并下载: 驱动文件后缀名应当是以.run结尾的(即现在选项第一个)。我们要把这个文件移动到家目录下,原因是下面我们要切换到文字界面下,如果放到~/下载下面,我们没有办法进入下载这个目录(没有中文输入法,且中文全部是乱码) 图1.输入显卡型号
图2.显卡驱动搜索结果
(2)禁止集成的nouveau驱动 Ubuntu系统集成的显卡驱动程序是nouveau,它是第三方为NVIDIA开发的开源驱动,我们需要先将其屏蔽才能安装NVIDIA官方驱动。 将驱动添加到黑名单blacklist.conf中,但是由于该文件的属性不允许修改。所以需要先修改文件属性。
查看属性 1
$sudo ls -lh /etc/modprobe.d/blacklist.conf
1
$sudo chmod 666 /etc/modprobe.d/blacklist.conf
1
$sudo vim /etc/modprobe.d/blacklist.conf
1
2
3
4
5blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb1
sudo update-initramfs -u
(3)接下来就是自己安装显卡驱动了:
1).卸载你电脑中此刻有的nvidia的驱动。(复制命令就行,方便,后面也一样)
1
2
3
4sudo apt-get remove –purge nvidia*
或者针对不同的安装方式有不同的卸载方法
sudo chmod +x NVIDIA-Linux-*.run
sudo ./NVIDIA-Linux-*.run --uninstall
2).添加一个PPA到系统,等一下安装驱动要用的。复制下面的话命令就行(放在这里是因为你现在还在图形界面,复制方便) 1
2sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
3).上面的准备工作做完,马上就要脱离图形界面进入字符界面了,要是这个时候你看不到教程,还是推荐用手机或者平板边看教程边操作。按CTRL+ATL+F1进入终端1(输入用户名和密码后和终端很相似,可以大胆进去), CTRL+ATL+F7是进入图形页面. 在终端下面运行: 1
sudo service lightdm stop(关闭图形界面)
1
sudo apt-cache search nvidia*
1
sudo apt-get install nvidia-390(你下载的驱动是什么版本这里就写什么)
自动安装
选择系统自动更新即可
输入以下指令进行验证: 1
sudo nvidia-smi
关于secure boot和UEIF以及BIOS的种种可以参考这个博客
检查是否安装成功
1 |
|
安装cuda8.0
- 首先在官网上(https://developer.nvidia.com/cuda-downloads) 下载CUDA(1G以上那个):
(2)下载完成后执行以下命令: 1
sudo chmod 777 cuda_8.0.44_linux.run(输入自己下载的cuda文件名,因为软件要进行更新优化,所以过一段时间名字就会略有不同)
1
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 390.25
1
sudo sh cuda_9.1.85_387.26_linux.run
打开~/.bashrc文件: sudo gedit ~/.bashrc
将以下内容写入到~/.bashrc尾部: 1
2export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}1
2
3cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
make
sudo ./deviceQuery
cuda版本安装错误, 如何卸载? 在目录: 1
/usr/local/cuda-7.0/bin
1
2sudo ./uninstall_cuda_toolkit_7.0.pl
(5)配置cuDNN
首先,看看自己电脑的计算能力,如果自己电脑计算能力不超过3就不要进行这一步了,因为cuDNN仅能在计算能力为3以上的电脑上运行,强行装的话后面安装Caffe时会报错。查看自己电脑显卡的计算能力:https://developer.nvidia.com/cuda-gpus
cuDNN是GPU加速计算深层神经网络的库。 首先去官网 https://developer.nvidia.com/rdp/cudnn-download 下载cuDNN,需要注册一个账号才能下载。下载版本号如下图: 下载cuDNN5.1之后进行解压:
1
2
3sudo tar -zxvf ./cudnn-8.0-linux-x64-v5.1.tgz
# 把刚刚解压的那个cuda文件更名为cuda-9.0
mv cuda cuda-8.01
2
3
4
5
6
7cd cuda-8.0
sudo cp lib64/lib* /usr/local/cuda/lib64/
sudo cp include/cudnn.h /usr/local/cuda/include/
# 建议进行如下操作
cuda-8.0
sudo cp lib64/lib* /usr/local/cuda-8.0/lib64/
sudo cp include/cudnn.h /usr/local/cuda-8.0/include/ 1
2
3
4
5
6cd /usr/local/cuda-8.0/lib64/
sudo chmod +r libcudnn.so.5.1.10
sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5
sudo ln -sf libcudnn.so.5 libcudnn.so
sudo ldconfig
sudo ldconfig /usr/local/cuda-8.0/lib64/
安装caffe
目标安装caffe、pycaffe、matcaffe
(1) 安装依赖包
1 |
|
参看caffe官网
(2) 设置Makefile.config文件
1 |
|
修改如下: 1
2
3USE_CUDNN := 1 #去掉#号
OPENCV_VERSION := 3
WITH_PYTHON_LAYER := 1 #使用python来编写层
将 # Whatever else you find you need goes here. 下面的 1
2INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 1
2INCLUDE_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/serial1
2$ vim Makefile.config
MATLAB_DIR := /usr/local/MATLAB/R2016b
修改一: 1
2
3
4
5
6$ vim Makefile
- opencv_core opencv_highgui opencv_imgproc
+ opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
在位置((LIBRARIES += glog gflags protobuf leveldb snappy \
lmdb boost_system hdf5_hl hdf5 m \
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs))处添加 opencv_imgcodecs1
2
3$ vim examples/cpp_classification/classification.cpp
+ #include <opencv2/imgproc/types_c.h>
+ #include <opencv2/objdetect/objdetect_c.h>1
2
3
4
5
6vim Makefile
- NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
+ NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
# 这个操作是为了解决版本过低的问题
410 CXXFLAGS += -MMD -MP
在410行下面加上 CXXFLAGS += -std=c++111
2
3
4
5sudo vim ~/.bashrc
export LD_LIBRARY_PATH="/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH"
export PATH=$PATH:/usr/local/MATLAB/R2016b/bin
source ~/.bashrc
sudo ldconfig
(4) 编译
查看物理cpu个数 1
grep 'physical id' /proc/cpuinfo | sort -u
1
grep 'core id' /proc/cpuinfo | sort -u | wc -l
1
grep 'processor' /proc/cpuinfo | sort -u | wc -l
1
2
3
4
5
6
7
8cd caffe-master
mkdir build
cd build
cmake ..
cd ..
make all -j6
make test -j6
make runtest -j6
(5) 安装python接口
首先回到caffe的根目录,然后执行安装代码: 1
2
3
4cd ~/caffe
sudo apt-get install gfortran
cd ./python
for req in $(cat requirements.txt); do sudo pip install $req; done1
2cd ..
sudo pip install -r python/requirements.txt1
make pycaffe
1
sudo gedit ~/.bashrc
1
2
3
4
5export PATH=/user/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/user/local/cuda/lib64:$LD_LIBRARY_PATH
# 以上两个也要有
export PYTHONPATH=/home/caffe/python:$PYTHONPATH
export PYTHONPATH=~/caffe/python1
source ~/.bashrc
然后就能import caffe了
(6) 安装matcaffe接口
1 |
|
如果执行了上面的命令,提示gcc版本过低的话,不用管它,看/home/weijian/caffe/matlab/+caffe/privat下面,有没有caffe_.mexa64这个文件,如果有的话,可以开始测试了。
测试
打开matlib如何使用matcaffe?
在Caffe根目录启动Matlab之后需要增加路径:
1
addpath ./matlab
1
savepath
接着,执行: 1
2
3gpu_id = 0
caffe.set_mode_gpu();
caffe.set_device(gpu_id);
编译mattest
执行 1
sudo make mattest -j5
执行下面几个句子
1
2export LD_LIBRARY_PATH=/usr/local/R2016b/sys/os/glnxa64
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6
1
2export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:/usr/local/cuda-8.0/lib64
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:/usr/lib/x86_64-linux-gnu/libfreetype.so.6
MNIST数据集测试
配置caffe完成后,我们可以利用MNIST数据集对caffe进行测试,过程如下: 1.将终端定位到Caffe根目录 1
cd ~/caffe
1
./data/mnist/get_mnist.sh
1
./examples/mnist/create_mnist.sh
1
./examples/mnist/train_lenet.sh
可以看到最终训练精度是0.9906。
可能遇到的问题
ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory
场景1: 在命令行里进入python,输入“import caffe” 或者 直接使用caffe/build/tools/caffe 出现错误: ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory
使用这个命令: 1
sudo ldconfig /usr/local/cuda/lib64
解决办法:首先确认/etc/profile中的路径包含了cuda8.0的安装路径及相应的库文件 1
2
3export PATH=$PATH:/usr/local/cuda-8.0/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-8.0/lib641
$source /etc/profile
然后在当前命令窗下启动jupyter 1
jupyter notebook --allow-root
1
2
3sudo 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
如果仍然不行, 关掉此终端, 重新开启一个试一试.
.build_release/tools/caffe: error while loading shared libraries: libcudart.
解决方法:在/usr/lib/下建立一个 软链接将 libopenblas.so.0指向/openbls安装目录/lib/ libopenblas.so.0
ImportError: cannot import name cbook
问题描述:caffe环境编译成功,运行具体项目时,出现错误ImportError: cannot import name cbook。后来进入python环境发现,运行import caffe 和 import matplotlib 出现Import: No module named functools_lru_cache
找了好久才找到的解决方法,亲测有效:
卸载之前的matplotlib: 1
sudo pip uninstall matplotlib
1
sudo apt-get install python-matplotlib
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!