Ubuntu8 + NVDIA 1070ti + CUDA9.0 + CUDNN7.0 + OpenCV3.4 + caffe + python3环境 (GPU配置)
教程说明:
以下步骤是自己安装时采用的,但是在安装期间有一些细节没有完全列出来,因为每个系统的差异和问题的特色性,无法一一列出,因此如若遇到本文中未出现的问题,建议先查阅一下网上现存的方案,若还是无法解决,欢迎留言,如若本人可以解决,则会回复您!
感谢以下博客内容(主要参考资料,十分有价值):
https://blog.****.net/yggaoeecs/article/details/79163789
https://blog.****.net/weixin_37251044/article/details/82222098
https://blog.****.net/lingyunxianhe/article/details/85012003
https://blog.****.net/yhaolpz/article/details/71375762
https://blog.****.net/CAU_Ayao/article/details/83536320
https://blog.****.net/uniqueyyc/article/details/83338889
1. 电脑配置及软件下载
1.1 系统配置
Ubuntu 18.04.2英文系统
OS type:64-bit
GPU: GeForce GTX 1070 Ti(命令行lspci | grep -i nvidia查看)
1.2 NVDIA显卡驱动下载
下载链接:https://www.nvidia.com/Download/index.aspx?lang=en-us
1.3 CUDA9.0下载
说明:CUDA是NVIDIA的编程语言平台,想使用GPU就必须要使用cuda
链接:https://developer.nvidia.com/cuda-90-download-archive
1.4 CUDNN7.0.5下载
说明:cuDNN是GPU加速计算深层神经网络的库
链接:https://developer.nvidia.com/rdp/cudnn-archive#a-collapse705-9
点击以下选项
选择以下三个都要下载
1.5 OpenCV3.4.5下载
链接:https://opencv.org/releases.html
点击以下的Sources下载
1.6 所有准备材料都放在caffe-gpu新建文件夹中
在HOME目录下新建一个caffe-gpu文件夹,将以上所有材料存放到此文件夹中,方便取用
文件清单:
2. 安装NVDIA GPU驱动
2.1 屏蔽自带显卡驱动
# 终端输入
sudo gedit /etc/modprobe.d/blacklist.conf
在打开文件的最后一行加上:blacklist nouveau
这里是将Ubuntu自带的显卡驱动加入黑名单
# 终端输入
sudo update-initramfs -u
使修改生效
2.2 安装新驱动
重启系统,按Ctrl+Alt+F2进入命令行界面(安装GPU驱动要求在命令行环境,提示:按Ctrl+Alt+F7可回到图形界面)
在命令行界面输入用户名和密码,进入用户目录
# 命令行输入
sudo service lightdm stop
可能出现错误:unit lightdm.service not loaded
方法:输入sudo apt install lightdm,会弹出一个界面,选择lightdm,再回到上一步
# 命令行输入
cd caffe-gpu #进入下载文件所在目录
sudo chmod +x ./NVIDIA* #增加操作权限
sudo ./NVIDIA* #进入安装程序
roboot #重启系统
电脑重启后,
# 命令行输入
sudo nvidia-smi #验证新驱动的安装
3. 安装CUDA9.0
按Ctrl+Alt+F2进入命令行界面
# 命令行输入
cd caffe-gpu #进入下载文件所在目录
sudo chmod 777 cuda* #权限改为可读可写可执行
sudo ./cuda* --override #开始安装
命令行界面上出现关于CUDA的说明,按Ctrl+c直接跳过内容,输入accept,接下来都是yes通过,注意:一定要选择否(出现Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.**)
可能出现错误:出现多行的Missing recommended library
方法:命令行输入:sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev ,安装相关的依赖库,完成后回到上一步
可能出现错误:cannot find Toolkit in ..
方法:命令行输入:sudo apt-get install nvidia-cuda-toolkit,完成后回到上一步
安装完成后,重启系统进入图形界面
# 终端输入
sudo gedit ~/.bashrc #配置CUDA环境变量
在打开文件的最后加入以下两行代码:(注意其中cuda,根本自己cuda版本修改)
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
# 终端输入
source ~/.bashrc #更新修改
测试CUDA9.0是否安装成功,
# 终端输入
cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
sudo make
sudo ./deviceQuery
可能出现错误:CUDA 9.0 unsupported gcc versions later than 6
方法:在终端中分别输入以下代码
sudo apt-get install gcc-6
sudo apt-get install g++-6
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 10
成功安装提示:
4. 安装CUDNN
# 终端输入
sudo caffe-gpu #进入下载文件存放目录中
sudo dpkg -i libcudnn7_* #安装运行库
sudo dpkg -i libcudnn7-dev* #安装开发库
sudo dpkg -i libcudnn7-doc* #安装文档库
测试安装情况:
# 终端输入
cp -r /usr/src/cudnn_samples_v7/ $HOME
cd $HOME/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN
输出Test passed!则成功安装
可能出现错误:/mnistCUDNN: error while loading shared libraries: libcudart..
方法:在终端中依次输入以下代码
sudo cp /usr/local/cuda-9.0/lib64/libcudart.so.9.0 /usr/local/lib/libcudart.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcublas.so.9.0 /usr/local/lib/libcublas.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcurand.so.9.0 /usr/local/lib/libcurand.so.9.0 && sudo ldconfig
5 安装OpenCV3.4
# 终端输入
cd caffe-gpu #回到下载文件存放目录中
unzip opencv* #解压下载文件
sudo cp ./opencv* /home/username #其中username改为你的用户名
sudo mv opencv* opencv
cd ~/opencv
mkdir build #创建编译的文件目录
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make -j6 #-j6表示并行计算,根据自己电脑的配置进行设置
sudo make install #安装OpenCV
验证安装情况:
# 终端输入
pkg-config --modversion opencv
当出现版本号时,则安装成功
6. 安装caffe(GPU)
6.1 安装预编译的caffe-cuda
# 终端输入
sudo apt-get install caffe-cuda
6.2 安装caffe依赖库
# 终端输入
sudo apt-get install --no-install-recommends libboost-all-dev #boost
sudo apt-get install libgflags-dev #gflags
sudo apt-get install libgoogle-glog-dev #glog
sudo apt-get install libleveldb-dev #LevelDB
sudo apt-get install liblmdb-dev #LMDB
sudo apt-get install libprotobuf-dev #ProtoBuf
sudo apt-get install protobuf-c-compiler protobuf-compiler #ProtoBuf compiler
sudo apt-get install libhdf5-serial-dev #HDF5
sudo apt-get install libsnappy-dev #snappy
sudo apt-get install libopenblas-dev #OpenBlas
6.3 安装caffe
# 终端输入
git clone https://github.com/BVLC/caffe.git
6.4 配置caffe
# 终端输入
cd caffe
sudo cp Makefile.config.example Makefile.config
sudo gedit Makefile.config #打开并编辑Makefile.config
修改Makefile.config文件里面的相关内容:
将
#USE_CUDNN := 1
改为
USE_CUDNN := 1
将
#OPENCV_VERSION := 3
改为
OPENCV_VERSION := 3
将
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
改为
CUDA_ARCH := -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
将
#BLAS := atlas
改为
BLAS := open
文件中的python3环境设置为(因人而异):
PYTHON_LIBRARIES := boost_python3 python3.6m
PYTHON_INCLUDE := /usr/include/python3.6m \
/usr/lib/python3/dist-packages/numpy/core/include
将
#PYTHON_LIB := /usr/lib
改为
PYTHON_LIB := /usr/lib
将
#WITH_PYTHON_LAYER := 1
改为
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
保存好退出
# 终端输入
sudo gedit Makefile
修改Makefile文件的相关内容:
将
PYTHON_LIBRARIES ?= boost_python python2.7
改为
PYTHON_LIBRARIES ?= boost_python3 python3.6m
将
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 hdf5_hl hdf5
改为
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
保存好退出
编译环境,
# 终端输入
sudo make clean
sudo make all
sudo make test
sudo make runtest
可能出现错误:“boost/shared_ptr.hpp”: No such file or directory
方法:sudo apt-get install --no-install-recommends libboost-all-dev
安装成功的结果:
6.5 CMake搭建
# 终端输入
mkdir build
cd build
cmake ..
make all
make install
make runtest
运行成功结果:
7. python3环境中运行caffe
# 终端输入
python3
import caffe
可能出现错误:ImportError: cannot import name '_validate_lengths'
方法:(以下路径每个人有点差异,请根据错误提示中的路径提醒找)
sudo gedit /home/brian/.local/lib/python3.6/site-packages/numpy/lib/arraypad.py
在文件中添加以下两个函数:
函数链接:https://blog.****.net/Brianone/article/details/89068005
8、最终测试-案例运行
代码链接:https://blog.****.net/Brianone/article/details/89067220
成功运行结果: