第一部分,准备材料(NVIDIA官网下载)
:
显卡驱动àNVIDIA-Linux-x86_64-367.44.run
Cuda8.0àcuda_8.0.27_linux.run
网址:https://developer.nvidia.com/cuda-downloads
Cudnnàcudnn-7.0-linux-x64-v4.0-prod.tgz
网址:https://developer.nvidia.com/cudnn
2.1系统安装
系统选择ubuntu16.04,下载后ultrISO制作到U盘安装,不细说了。关闭系统更新。
2.2、安装依赖
安装编译工具:
$sudo apt-get install build-essential # basic requirement
$sudo apt-get install cmake git
$sudo apt-get update #update source
安装依赖项:
$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 libopenblas-dev liblapack-dev libatlas-base-dev
$sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
$sudo apt-get install python-numpy python-scipy python-matplotlib
2.3、显卡驱动安装
sudo apt-get install nvidia-367
2.4、安装cuda8.0
进入cuda_8.0.27_linux.run所在目录
$cd /home/smith/Downloads
$sudo chmod +x cuda_8.0.27_linux.run
$sudo ./cuda_8.0.27_linux.run
按q键退出RELU文档,按照如下选择,显卡驱动一定要选n,不装
Do you accept the previously read EULA?
accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?
(y)es/(n)o/(q)uit: n
Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: y
Enter Toolkit Location
[ default is /usr/local/cuda-8.0 ]:
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y
Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: y
Enter CUDA Samples Location
[ default is /home/zhou ]:
Installing the CUDA Toolkit in /usr/local/cuda-8.0 …
完成后看到
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-8.0
Samples: Installed in /home/zhou, but missing recommended libraries
最后,配置环境变量,直接放在系统配置文件profile里面:
s
u
d
o
g
e
d
i
t
/
e
t
c
/
p
r
o
f
i
l
e
在
最
后
面
加
入
两
行
代
码
:
e
x
p
o
r
t
P
A
T
H
=
/
u
s
r
/
l
o
c
a
l
/
c
u
d
a
−
8.0
/
b
i
n
:
sudo gedit /etc/profile 在最后面加入两行代码: export PATH=/usr/local/cuda-8.0/bin:
sudogedit/etc/profile在最后面加入两行代码:exportPATH=/usr/local/cuda−8.0/bin:PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:
L
D
L
I
B
R
A
R
Y
P
A
T
H
保
存
退
出
.
执
行
:
LD_LIBRARY_PATH 保存退出. 执行:
LDLIBRARYPATH保存退出.执行:sudo ldconfig
此时,显卡驱动没装,等待下一步显卡驱动装好后检查cuda8.0是否装好。
errors:
lly@lly-desktop:~/Downloads$ sudo ldconfig
/sbin/ldconfig.real: /usr/lib/nvidia-375/libEGL.so.1 is not a symbolic link
/sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 is not a symbolic link
solution:
sudo mv /usr/lib/nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.org
sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.org
sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.39 /usr/lib/nvidia-375/libEGL.so.1
sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.39 /usr/lib32/nvidia-375/libEGL.so.1
关于卸载cuda:
$cd /usr/local/cuda-8.0/bin
$sudo ./uninstall_cuda_8.0.pl
进入显卡驱动目录
$cd /home/smith/Downloads
$sudo su
$sudo chmod +x NVIDIA-Linux-x86_64-367.44.run
s
u
d
o
.
/
N
V
I
D
I
A
−
L
i
n
u
x
−
x
8
6
6
4
−
367.44.
r
u
n
一
路
按
照
提
示
选
择
安
装
,
具
体
不
记
得
了
,
主
要
有
接
受
协
议
,
在
系
统
内
核
注
册
,
用
新
路
径
注
册
,
更
新
X
−
s
e
r
v
e
r
,
安
装
完
成
后
会
自
动
回
到
命
令
行
重
启
电
脑
:
sudo ./NVIDIA-Linux-x86_64-367.44.run 一路按照提示选择安装,具体不记得了,主要有接受协议,在系统内核注册,用新路径注册,更新X-server,安装完成后会自动回到命令行 重启电脑:
sudo./NVIDIA−Linux−x8664−367.44.run一路按照提示选择安装,具体不记得了,主要有接受协议,在系统内核注册,用新路径注册,更新X−server,安装完成后会自动回到命令行重启电脑:sudo reboot
输入密码进入桌面
2.5、检查之前的安装
此时在home目录下会出现文件夹NVIDIA_CUDA-8.0_Samples,打开终端,进入该目录:
$sudo make –j8 #编译samples,我电脑8线程,全开编译
等待2分钟左右,编译完成,执行下条指令:
$sudo ./1_Utilities/deviceQuery/deviceQuery
出现如下信息,cuda8.0安装成功(忘记截图了,下面信息是gtx670装cuda6.5的)
./deviceQuery Starting…
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: “GeForce GTX 670”
CUDA Driver Version / Runtime Version 6.5 / 6.5
CUDA Capability Major/Minor version number: 3.0
Total amount of global memory: 4095 MBytes (4294246400 bytes)
( 7) Multiprocessors, (192) CUDA Cores/MP: 1344 CUDA Cores
GPU Clock rate: 1098 MHz (1.10 GHz)
Memory Clock rate: 3105 Mhz
Memory Bus Width: 256-bit
L2 Cache Size: 524288 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bdeclared as function returning an arrayytes
Concurrent copy and kernel execution: Yes with 1 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device PCI Bus ID / PCI location ID: 1 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 6.5, CUDA Runtime Version = 6.5, NumDevs = 1, Device0 = GeForce GTX 670
Result = PASS
可以看到,最后出现了PASS,安装cuda完成。
还可以:
$nvcc --version
查看nvcc版本
$nvidia-smi
显示(具体机子不一样,这图不是我的):
这里写图片描述
2.6、CUDNN安装
需要说明的是,我安装的是V4.0,之前安装的V5.0,发现GPU可以运行别人训练好的网络,但不能训练自己的网络,在产生随机数时发生了库函数无法打开内核的情况,无奈保险起见重装了系统,踩过的最郁闷的坑。。。
$tar -zxvf cudnn-7.0-linux-x64-v4.0-prod.tgz
$cd cuda
$sudo cp lib64/lib* /usr/local/cuda/lib64/
$sudo cp include/cudnn.h /usr/local/cuda/include/
更新软连接:
$cd /usr/local/cuda/lib64/
$sudo chmod +r libcudnn.so.5.1.5
$sudo ln -sf libcudnn.so.5.1.5 libcudnn.so.5
$sudo ln -sf libcudnn.so.5 libcudnn.so
更新设置:
$sudo ldconfig
2.7 opencv安装
进入这个网址下载文件https://github.com/jayrambhia/Install-OpenCV
解压后 进入其目录
$ cd Ubuntu
$ chmod +x *
$ ./opencv_latest.sh
2.8拉取caffe源码
git clone https://github.com/BVLC/caffe.git
2.9安装python的pip和easy_install,方便安装软件包
(超慢的下载。。。)
$sudo 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
2.10.安装python依赖(路径根据自己的目录可能要调一下)
$cd caffe/python
$sudo su
$for req in $(cat requirements.txt); do pip install $req; done
这步安装也有点慢,别急,等会儿,先去干点别的 _(干点别的回来还没好。。。)
2.11.编辑caffe所需的Makefile文件,配置
$cd caffe
$cp Makefile.config.example Makefile.config
$sudo gedit Makefile.config
$Makefile.config里面有依赖库的路径,及各种编译配置,取消USE_CUDNN := 1的注释,开启GPU,USE_LMDB := 1
配置运行环境,调用CUDA库,在/etc/ld.so.conf.d目录新建caffe.conf,
$sudo gedit /etc/ld.so.conf.d/caffe.conf
添加:
/usr/local/cuda/lib64
保存退出,执行:
$sudo ldconfig
2.12、编译caffe、pycaffe
进入caffe根目录,
$sudo make –j8
src/caffe/net.cpp:8:18: fatal error: hdf5.h: No such file or directory
http://blog.csdn.net/xue_wenyuan/article/details/52037121
Step 1
在Makefile.config文件的第85行,添加/usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include11
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/11
Step 2
在Makefile文件的第173行,把 hdf5_hl 和hdf5修改为hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行代码改为第二行代码。
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf511
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial1
测试一下结果,
$sudo make test –j8
$sudo make runtest –j8
(runtest中个别没通过没关系,不影响使用)
$make pycaffe –j8
第三部分,拿cifar10测试下效果
$cd /home/smith/caffe
$sudo sh data/cifar10/get_cifar10.sh (脚本下载速度太慢,找个迅雷下载拷进来,再照脚本解压)
下面,网络开始初始化、训练了,loss会开始下降,很快的就会出现优化完成。