ubuntu14.04 + cuda8 + caffe + cudnn5.0 (GTX1080 + GTX750Ti)

Published by 煎鱼 on

工作室的内网出了问题,不能修改以前写的文档,于是我便修改了放在个人网站

版本

linux系统:Ubuntu 14.04.5 (64位)
显卡:GTX1080 + GTX750Ti
cuda: cuda_8.0.27_linux.run (传送门:https://developer.nvidia.com/cuda-toolkit)
显卡驱动:NVIDIA-Linux-x86_64-367.27.run (传送门:http://www.geforce.cn/drivers/results/104314)
cudnn:cudnn-5.1 ( for CUDA 8 rc) (传送门:https://developer.nvidia.com/cudnn)
BLAS:BLAS选用intel的MKL parallel_studio_xe_2016,或者Atlas

以下默认使用root用户,sudo已忽略

安装ubuntu:

需要注意事项:
ubuntu14.04默认开源驱动不兼容GTX1080,因此需要先拔掉GTX1080或将GTX750Ti置于PCI优先位置
在显示屏使用GTX750Ti的情况下,安装以及启动ubuntu

禁用nouveau驱动

按Ctrl+Alt+F1进入命令提示符,新建一个黑名单文件

vim /etc/modprobe.d/blacklist-nouveau.conf

输入

blacklist nouveau options nouveau modset=0

保存退出(:wq)
然后执行

update-initramfs -u

执行 lspci | grep nouveau查看是否有内容
如果没有内容 ,说明禁用成功,如果有内容,就重启一下再查看
reboot
重启后,进入登录界面的时候,不要登录进入桌面,直接按Ctrl+Alt+F1进入命令提示符。

安装CUDA和NVIDIA驱动

(目前使用最新的CUDA里面包含的NVIDIA驱动足矣)

chmod 755 NVIDIA-Linux-x86_64-367.27.run //获取权限
./NVIDIA-Linux-x86_64-367.27.run //安装驱动

安装后就可以用nvidia-smi命令查看显卡和驱动情况。

chmod 755 cuda_8.0.27_linux.run
./cuda_8.0.27_linux.run

PS:8.0.27可能已经过旧,请到官网下载最新版
需要注意该版本CUDA8中的NVIDIA驱动太旧,而且我们已经安装了,所以安装CUDA过程中唯有驱动不安装
除了第二项“”是否安装显卡驱动“选择no之外,其他全部按照默认设定
安装过程显示如下信息

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 …
Missing recommended library: libGLU.so
Missing recommended library: libX11.so
Missing recommended library: libXi.so
Missing recommended library: libXmu.so

Installing the CUDA Samples in /root …
Copying samples to /root/NVIDIA_CUDA-8.0_Samples now…
Finished copying samples.
.
.
.

设置环境变量
(error while loading shared libraries: xxx.so.x” 错误的原因和解决办法)

vim /etc/profile
加上两句

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

vim /etc/ld.so.conf.d/cuda.conf
中添加
/usr/local/cuda/lib64

执行ldconfig

make CUDA库

安装依赖:

apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev  libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx
cd /usr/local/cuda/samples
make all -j8

以上的make编译时为了测试cuda库和环境安装成功并编译玩一下。

cd ./bin/x86_64/linux/release
./deviceQuery 查询显卡信息

安装CUDNN5.0

解压好CUDNN得到cuda目录

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.0.5
sudo ln -sf libcudnn.so.5.0.5 libcudnn.so.5
sudo ln -sf libcudnn.so.5 libcudnn.so
sudo ldconfig

安装OPENCV

推荐安装pyenv来管理python版本环境(自行查找)

提前安装libegl的库,免得安装到一并报错:
apt install libegl1-mesa libegl1-mesa-drivers

参考https://github.com/jayrambhia/Install-OpenCV一键安装opencv

编译安装Caffe

安装依赖:

apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev libgflags-dev libgoogle-glog-dev  liblmdb-dev  libboost-all-dev

如果不用mkl,而是用atlas,则安装:

apt-get install libatlas-dev libatlas-base-dev

所有python依赖:(按照不同情况自行查看关系安装)

apt-get install python-dev python-pip cython python-numpy python-scipy python-opencv

在github上clone Caffe: https://github.com/BVLC/caffe

进入其目录,并按照实际修改Makefile.config,主要是启用CUDNN,改用MKL(如果安装了),然后编译:

git clone https://github.com/BVLC/caffe
cd caffe
make all -j8
make test -j8
make runtest -j8

PS:j后面的8表示启用多少线程来编译,视性能而定

如果还需要使用pycaffe:需要对pycaffe进行编译:

make pycaffe -j8

而后进入python目录,用pip安装依赖:

apt-get install python-pip
cd python
pip install -r requirements.txt

顺手把graphviz也安装了:

apt-get install graphviz graphviz-dev
pip install pydot
pip install pygraphviz

最后添加pythonpath的环境变量:
vim /etc/profile
添加export PYTHONPATH=/root/caffe/python:$PYTHONPATH # path to pytho in caffe
然后执行 source /etc/profile

若有错误之处请指出,更多地关注煎鱼

Categories: AICV

发表评论

电子邮件地址不会被公开。 必填项已用*标注