平台环境配置--笔记本电脑+双系统的ubuntu16.04+显卡英伟达M740
参考网站
(1)ubuntu16.04+gtx1060+cuda8.0+caffe安装、测试经历
http://blog.csdn.net/WoPawn/article/details/52302164
(2)Ubuntu16:cmake生成Makefile编译caffe过程(OpenBLAS/CPU+GPU)
http://blog.csdn.net/10km/article/details/61619573
首先说明,这是在台式机上的安装测试经历,首先安装的windows(win7/win10),然后安装ubuntu16.04双系统,显卡为GTX1060 (笔记本M740)
台式机显示器接的是GTX1060 HDMI口,win10上首先安装了最新的GTX1060驱动372.54
废话不多说,上车吧,少年
一、首先安装nvidia显卡驱动
安装过程
1.安装相关依赖项
1 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
2 sudo apt-get install --no-install-recommends libboost-all-dev
3 sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
4 sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
2.安装NVIDIA驱动
(1)查询NVIDIA驱动
首先去官网 http://www.nvidia.com/Download/index.aspx?lang=en-us 查看适合自己显卡的驱动并下载:
驱动文件后缀名应当是以.run结尾的。我们要把这个文件移动到家目录下,原因是下面我们要切换到文字界面下,如果放到~/下载 下面,我们没有办法进入下载这个目录(没有中文输入法,且中文全部是乱码)
图1 输入显卡型号 图2 显卡驱动搜索结果
我的显卡型号是Quadro K620,系统是linux 64位,按照要求选择后点击search. 图2是搜索结果,点击下载就好了。
我下载后的驱动文件是:NVIDIA-Linux-x86_64-375.20.run
(2)安装驱动
在终端下输入: sudo gedit /etc/modprobe.d/blacklist.conf
输入密码后在最后一行加上 blacklist nouveau
. 这里是将Ubuntu自带的显卡驱动加入黑名单。
在终端输入: sudo update-initramfs -u
重启电脑~
这里要尤其注意,安装显卡驱动要先切换到文字界面,(按Ctrl+Alt+F1~F6).所以,启动电脑后,先进入文字界面。
然后,输入命令 sudo service lightdm stop
现在可以安装驱动了,先进入家目录 cd ~ ,然后: sudo ./NVIDIA-Linux-x86_64-375.20.run,按照提示一步步来~
完成后,再次重启电脑。
安装完成之后输入以下指令进行验证: sudo nvidia-smi ,若列出了GPU的信息列表则表示驱动安装成功。如下图:
一、首先安装nvidia显卡驱动
-
我是1080P的显示器,在没有安装显卡驱动前,ubuntu分辨率很低,可以手动修改一下grub文件,提高分辨率,在终端输入
sudo vim /etc/default/grub
找到以下行# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command 'vbeinfo'
# GRUB_GFXMODE=640×480
按a进入插入模式,增加下面一行GRUB_GFXMODE=1920×1080
#这里分辨率自行设置
按esc退出插入模式,按:wq保存退出
在终端编辑sudo update-grub
更新grub
重新启动ubuntu使之生效
-
进入ubuntu系统设置-软件与更新-ubuntu软件,使用的是中科大的源:http://mirrors.ustc.edu.cn/ubuntu,如下所示
更新Ubuntu16.04源,终端输入cd /etc/apt/
sudo cp sources.list sources.list.bak
sudo vi sources.list
把下面的这些源添加到source.list中:deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
-
最后更新源和更新已安装的包:
终端输入sudo apt-get update
sudo apt-get upgrade
-
安装nvidia驱动,终端输入
sudo add-apt-repository ppa:graphics-drivers/ppa
回车后继续
sudo apt-get update
sudo apt-get install nvidia-367
sudo apt-get install mesa-common-dev
sudo apt-get install freeglut3-dev
之后重启系统让GTX1060显卡驱动生效
-
测试
终端输入
nvidia-smi
显示效果如下图表示安装成功
二、cuda安装
安装CUDA
CUDA是NVIDIA的编程语言平台,想使用GPU就必须要使用cuda。
(1)下载CUDA
首先在官网上(https://developer.nvidia.com/cuda-downloads)下载CUDA:
-
下载cuda_8.0.27_linux.run和cudnn-8.0-linux-x64-v5.1.tgz
这里我提供了百度网盘,这两个文件我先在win10下下载好,并用u盘拷贝到ubuntu的下载目录下
[cuda_8.0.27_linux.run] [cudnn-8.0-linux-x64-v5.1.tgz] 下载目录下 -
安装cuda8.0
终端输入
cd 下载/
sh cuda_8.0.27_linux.run --override
启动安装程序,一直按空格到最后,输入accept接受条款
输入n不安装nvidia图像驱动,之前已经安装过了
输入y安装cuda 8.0工具
回车确认cuda默认安装路径:/usr/local/cuda-8.0
输入y用sudo权限运行安装,输入密码
输入y或者n安装或者不安装指向/usr/local/cuda的符号链接
输入y安装CUDA 8.0 Samples,以便后面测试
回车确认CUDA 8.0 Samples默认安装路径:/home/pawn(pawn是我的用户名),该安装路径测试完可以删除
安装完显示如下图
-
安装cudnn v5.1 .配置cuDNN
cuDNN是GPU加速计算深层神经网络的库。
首先去官网 https://developer.nvidia.com/rdp/cudnn-download 下载cuDNN,需要注册一个账号才能下载。下载版本号如下图:下载cuDNN5.1之后进行解压:
-
终端输入
cd 下载/
tar zxvf cudnn-8.0-linux-x64-v5.1.tgz
解压在下载目录下产生一个cuda目录cd cuda/include/
sudo cp cudnn.h /usr/local/cuda/include/
复制头文件cd ../lib64
打开lib64目录sudo cp lib* /usr/local/cuda/lib64/
复制库文件sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
给所有用户增加这些文件的读权限
-
建立软链接
终端输入
cd
sudo rm -rf libcudnn.so libcudnn.so.5
sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so
设置环境变量,终端输入sudo gedit /etc/profile
在末尾加入PATH=/usr/local/cuda/bin:$PATH
export PATH
保存后,创建链接文件sudo vim /etc/ld.so.conf.d/cuda.conf
按a进入插入模式,增加下面一行/usr/local/cuda/lib64
按esc退出插入模式,按:wq保存退出
最后在终端输入sudo ldconfig
使链接生效
-
cuda Samples测试
打开CUDA 8.0 Samples默认安装路径,终端输入
cd /home/pawn/NVIDIA_CUDA-8.0_Samples
(pawn是我的用户名)sudo make all -j4
(4核)
出现“unsupported GNU version! gcc versions later than 5.3 are not supported!”
的错误,这是由于GCC版本过高,在终端输入cd /usr/local/cuda-8.0/include
sudo cp host_config.h host_config.h.bak
sudo gedit host_config.h
ctrl+f寻找有“5.3”的地方,只有一处,如下# if __GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 3)
#error -- unsupported GNU version! gcc versions later than 5.3 are not supported!
将两个5改成6,即#if __GNUC__ > 6 || (__GNUC__ == 6 && __GNUC_MINOR__ > 3)
保存退出,继续在终端输入cd /home/pawn/NVIDIA_CUDA-8.0_Samples
(pawn是我的用户名)sudo make all -j4
(4核)
完成后继续向终端输入cd bin/x86_64/linux/release
./deviceQuery
完成之后出现如下图所示,表示成功安装cuda
三、依赖包安装
-
sudo apt-get install build-essential
#必要的编译工具依赖 -
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
-
sudo apt-get install --no-install-recommends libboost-all-dev
-
sudo apt-get install libatlas-base-dev
-
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
三、依赖包安装
软件环境
ubuntu 16.04
NVIDIA driver 378
CUDA8.0
cudnn 5.1
编译环境准备
安装编译Caffe所需的依赖库
#!/bin/bash
sudo apt-get install cmake cmake-gui
sudo apt-get install libprotobuf-dev protobuf-compiler libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev
sudo apt-get install libboost-all-dev // 安装boost库
#sudo apt-get install libatlas-base-dev //BLAS如使用OpenBLAS,可不安装
sudo apt-get install libopenblas-dev //BLAS如使用atlas,可不安装
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install python-numpy // 安装numpy
#sudo apt-get install doxygen // doxygen用于文档生成 可不安装
编译caffe
以下是编译caffe的脚本(解压,生成Makefile,编译,安装全过程)
build_caffe.sh
#!/bin/bash
caffe_folder=caffe-master
if [ -d $caffe_folder ]
then
rm -fr $caffe_folder
fi
# 从 https://github.com/BVLC/caffe 下载Caffe源码 保存为 caffe-master.zip 然后解压缩
wget https://github.com/BVLC/caffe/archive/master.zip -O $caffe_folder.zip
unzip $caffe_folder.zip
pushd $caffe_folder
# 创建编译输出文件夹
mkdir build && cd build
# 执行cmake生成Makefile
#编译CPU版本
#cmake -DCPU_ONLY=ON -DBLAS=Open ..
#编译GPU版本
cmake -DBLAS=Open -DCUDA_NVCC_FLAGS=--Wno-deprecated-gpu-targets ..
# 开始编译并安装到build/install文件夹下 并发8线程
make install -j 8
cd ..
popd
消除NVCC警告
在这里 -DCUDA_NVCC_FLAGS=--Wno-deprecated-gpu-targets
用于指定CUDA编译器(nvcc)的编译选项,如果不指定--Wno-deprecated-gpu-targets
选项则在编译Caffe时会产生如下编译警告
nvcc warning : The ‘compute_20’, ‘sm_20’, and ‘sm_21’ architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
当然也可以在cmake-gui中,如下图搜索NVCC,在CUDA_NVCC_FLAGS中添加--Wno-deprecated-gpu-targets
执行cmake -DBLAS=Open -DCUDA_NVCC_FLAGS=--Wno-deprecated-gpu-targets ..
输出如下
-- Boost version: 1.58.0
-- Found the following Boost libraries:
-- system
-- thread
-- filesystem
-- chrono
-- date_time
-- atomic
-- Found gflags (include: /usr/include, library: /usr/lib/x86_64-linux-gnu/libgflags.so)
-- Found glog (include: /usr/include, library: /usr/lib/x86_64-linux-gnu/libglog.so)
-- Found PROTOBUF Compiler: /usr/bin/protoc
-- Found lmdb (include: /usr/include, library: /usr/lib/x86_64-linux-gnu/liblmdb.so)
-- Found LevelDB (include: /usr/include, library: /usr/lib/x86_64-linux-gnu/libleveldb.so)
-- Found Snappy (include: /usr/include, library: /usr/lib/x86_64-linux-gnu/libsnappy.so)
-- CUDA detected: 8.0
-- Found cuDNN: ver. 5.1.10 found (include: /usr/local/cuda-8.0/include, library: /usr/local/cuda-8.0/lib64/libcudnn.so)
-- Automatic GPU detection failed. Building for all known architectures.
-- Added CUDA NVCC flags for: sm_20 sm_21 sm_30 sm_35 sm_50
-- OpenCV found (/usr/share/OpenCV)
-- Found OpenBLAS libraries: /usr/lib/libopenblas.so
-- Found OpenBLAS include: /usr/include
-- NumPy ver. 1.11.0 found (include: /usr/lib/python2.7/dist-packages/numpy/core/include)
-- Boost version: 1.58.0
-- Found the following Boost libraries:
-- python
-- Detected Doxygen OUTPUT_DIRECTORY: ./doxygen/
--
-- ******************* Caffe Configuration Summary *******************
-- General:
-- Version : 1.0.0-rc3
-- Git : unknown
-- System : Linux
-- C++ compiler : /usr/bin/c++
-- Release CXX flags : -O3 -DNDEBUG -fPIC -Wall -Wno-sign-compare -Wno-uninitialized
-- Debug CXX flags : -g -fPIC -Wall -Wno-sign-compare -Wno-uninitialized
-- Build type : Release
--
-- BUILD_SHARED_LIBS : ON
-- BUILD_python : ON
-- BUILD_matlab : OFF
-- BUILD_docs : ON
-- CPU_ONLY : OFF
-- USE_OPENCV : ON
-- USE_LEVELDB : ON
-- USE_LMDB : ON
-- ALLOW_LMDB_NOLOCK : OFF
--
-- Dependencies:
-- BLAS : Yes (Open)
-- Boost : Yes (ver. 1.58)
-- glog : Yes
-- gflags : Yes
-- protobuf : Yes (ver. 2.6.1)
-- lmdb : Yes (ver. 0.9.17)
-- LevelDB : Yes (ver. 1.18)
-- Snappy : Yes (ver. 1.1.3)
-- OpenCV : Yes (ver. 2.4.9.1)
-- CUDA : Yes (ver. 8.0)
--
-- NVIDIA CUDA:
-- Target GPU(s) : Auto
-- GPU arch(s) : sm_20 sm_21 sm_30 sm_35 sm_50
-- cuDNN : Yes (ver. 5.1.10)
--
-- Python:
-- Interpreter : /usr/bin/python2.7 (ver. 2.7.12)
-- Libraries : /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.12)
-- NumPy : /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.11.0)
--
-- Documentaion:
-- Doxygen : /usr/bin/doxygen (1.8.11)
-- config_file : /home/guyadong/caffe/caffe-master/.Doxyfile
--
-- Install:
-- Install path : /home/guyadong/caffe/caffe-master/build/install
--
-- Configuring done
-- Generating done
-- Build files have been written to: /home/guyadong/caffe/caffe-master/build
——————————————————--
四
-
安装python的pip和easy_install,方便安装软件包
终端输入
cd
wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
sudo python ez_setup.py --insecure
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
五
-
安装科学计算和python所需的部分库
终端输入
sudo apt-get install libblas-dev liblapack-dev libatlas-base-dev gfortran python-numpy
六
-
安装git,拉取源码
终端输入
sudo apt-get install git
git clone https://github.com/BVLC/caffe.git
七
-
安装python依赖
终端输入
sudo apt-get install python-pip
安装pipsudo su
for req in $(cat "requirements.txt"); do pip install -i https://pypi.tuna.tsinghua.edu.cn/simple $req; done
按Ctrl+D退出sudo su模式
八、编译caffe(暂不对matlab说明)
-
终端输入
cd /home/pawn/caffe
cp Makefile.config.example Makefile.config
gedit Makefile.config
①将
USE_CUDNN := 1
取消注释,②
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
后面打上一个空格 然后添加/usr/include/hdf5/serial
如果没有这一句可能会报一个找不到hdf5.h的错误 -
终端输入
make all -j4
make过程中出现找不到lhdf5_hl和lhdf5的错误,
解决方案:
在计算机中搜索libhdf5_serial.so.10.1.0
,找到后右键点击打开项目位置
该目录下空白处右键点击在终端打开,打开新终端输入sudo ln libhdf5_serial.so.10.1.0 libhdf5.so
sudo ln libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so
最后在终端输入sudo ldconfig
使链接生效
原终端中输入make clean
清除第一次编译结果
再次输入make all -j4
重新编译 -
终端输入
make test -j4
make runtest -j4
make pycaffe -j4
make distribute
生成发布安装包 -
测试python,终端输入
cd /home/pawn/caffe/python
python
import caffe
如果不报错就说明编译成功
九、mnist测试
-
下载mnist数据集,终端输入
cd /home/pawn/caffe/data/mnist/
./get_mnist.sh
获取mnist数据集
在/home/pawn/caffe/data/mnist/
目录下会多出训练集图片、训练集标签、测试集图片和测试集标签等4个文件 -
mnist数据格式转换,终端输入
cd /home/pawn/caffe/
./examples/mnist/create_mnist.sh
必须要在第一行之后运行第二行,即必须要在caffe根目录下运行create_mnist.sh
此时在/caffe/examples/mnist/
目录下生成mnist_test_lmdb和mnist_train_lmdb两个LMDB格式的训练集和测试集 -
LeNet-5模型描述在
/caffe/examples/mnist/lenet_train_test.prototxt
-
Solver配置文件在
/caffe/examples/mnist/lenet_solver.prototxt
-
训练mnist,执行文件在
/caffe/examples/mnist/train_lenet.sh
终端输入cd /home/pawn/caffe/
./examples/mnist/train_lenet.sh
测试结果如下
说明
1 主要为步骤1239。
2 python接口
3opencv应该还没配置