Ubuntu16.04+Cuda+Caffe安装
来源:互联网 发布:北京编程培训机构排名 编辑:程序博客网 时间:2024/04/27 15:03
电脑配置:Ubuntu16.04+NVIDIA TITAN XP+CUDA8.0+cudnn_v6+OpenCV3.2
在给服务器配置cuda时,使用ppa安装驱动,出现了循环登录(输入密码之后返回登录界面)问题。之后使用run文件安装并且加入不安装OpenGL的flag之后,可以避免该问题。
一、安装依赖项
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-devsudo apt-get install libopenblas-dev liblapack-dev libatlas-base-devsudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
二、安装CUDA
推荐安装7+或者最新的驱动版本,Ubuntu16.04只能安装CUDA 8。
1 驱动安装的两种方法
ppa安装有时会出现循环登陆的问题,而run文件安装,nvidia-settings中不会显示显卡信息,大家权衡安装。
1.1、安装驱动之通过ppa安装(可能会循环登录)
首先卸载安装过的驱动版本:
sudo apt-get remove --purge nvidia*
若电脑是集成显卡,则需要禁用lightdm(ubuntu默认的显示管理工具):
sudo service lightdm stop
使用命令行安装驱动:
sudo add-apt-repository ppa:xorg-edgers/ppasudo apt-get updatesudo apt-get install nvidia-375 #此处对应自己安装的的驱动版本
安装完成后,注销,重新登录,执行以下指令:
sudo nvidia-smi
若显示GPU的信息列表,说明驱动安装成功。
或执行
nvidia-settings
可以看到本机GPU的详细信息,同样说明安装成功。
1.2 驱动安装之通过run文件安装
通过ppa安装的驱动有时会出现循环登陆的情况,这时就需要使用run文件进行安装。
到官网查询并下载本机GPU所对应的驱动,对于GeForce系列显卡,其地址为GeForce Driver。输入显卡信息,便会显示相应的驱动版本。
为了保险起见,选择375的驱动进行安装(之前使用384的驱动,通过runtest,但在train_lenet.sh时遇到错误)。
为下载的文件添加执行权限:
$sudo chmod a+x NVIDIA*.run #其中NVIDIA*为对应驱动文件的名称
由于需要禁用X-server,所以按下Ctrl+Alt+F1(F1~F6均可)进入到tty1,执行:
sudo /etc/init.d/lightdm stop #禁用lightdm服务sudo ./NVIDIA-Linux-x86_64-384.69.run -no-x-check -no-nouveau-check -no-opengl-files#非常重要!!!
其中,
–no-x-check 安装驱动时关闭X服务,
–no-nouveau-check 安装驱动时禁用nouveau,
–no-opengl-files 只安装驱动文件,不安装OpenGL文件
重启,没有出现循环登陆,命令行中输入nvidia-smi,就可以看到对应的显卡信息。
但是这种方法安装的驱动,使用nvidia-settings不会显示相应的显卡,而且系统不会检测到安装了显卡驱动,所以在其他相关的程序(如nvidia-opencl)需要安装nvidia驱动时,系统会再次安装nvidia驱动,从而造成重新登录的问题,需要谨慎。
如果发生上述情况,使用sudo apt-get purge nvidia*删除所有nvidia文件,之后再次用run文件安装即可。
2、安装CUDA
在英伟达官网下载安装文件,如下图所示:
选择runfile(local)文件进行安装,这是因为deb包安装不能选择安装选项。
首先为runfile增加执行权限:
sudo chmod a+x cuda_***.run
使用run文件进行安装:
sudo ./cuda_***.run
首先会出现安装协议,按q直接跳到末尾(而非一直按空格),输入accept。
在选择显卡驱动的一项一定选择n。
其他默认即可。
【不推荐】使用local deb包进行安装,下载完成后,在下载文件所在目录执行以下指令进行安装:
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.debsudo apt-get updatesudo apt-get install cuda
若提示某些依赖项不存在,使用apt-get install -f
进行修复。
此处不需要对gcc进行降级。
3、配置环境变量
打开bashrc文件:
sudo gedit ~/.bashrc
在文件末尾加入以下代码,保存
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
设置环境变量和动态链接库,输入
sudo gedit /etc/profile
在文件末尾添加如下语句,注意等号两侧不可出现空格,否则会有语法错误。
export PATH=/usr/local/cuda/bin:$PATH
保存,创建链接文件
sudo gedit /etc/ld.so.conf.d/cuda.conf
在文件末尾添加
/usr/local/cuda/lib64
保存、退出,执行命令
sudo ldconfig
4、测试CUDA是否安装成功
选择samples文件夹下的示例进行测试
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery #根据自己CUDA安装目录进行修改makesudo ./deviceQuery
若显示出本GPU的相关信息,则说明安装成功。sample中的大量示例可供学习参考。
四、安装cuDNN
cuDNN是一个CUDA的深度神经网络的加速库,到官网cuDNN Download页面注册账号后,可以免费下载。
此处选择cuDNN v6.0 Library for Linux版本。
下载完成后,解压,进入include目录,执行:
sudo cp cudnn.h /usr/local/cuda/include/
之后进入lib64目录下:
sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库cd /usr/local/cuda/lib64/sudo rm -rf libcudnn.so libcudnn.so.6 #删除原有动态文件sudo ln -s libcudnn.so.6.0.21 libcudnn.so.6 #生成软衔接(注意这里要和自己下载的cudnn版本对应,其他版本可以在/usr/local/cuda/lib64下查看自己libcudnn的版本,进行相应调整)sudo ln -s libcudnn.so.6 libcudnn.so #生成软链接
五、安装OpenCV
opencv版本需高于2.4,可以使用3.0,此处使用OpenCV3.2 。
1、安装依赖项:
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libtiff4-dev libswscale-dev libjasper-dev cmake pkg-config
2、在OpenCV官网下载安装包,解压,进入其目录:
mkdir buildcd build/cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
编译:
make -j8 #其中8指的是编译时的并行线程数,最好的选择是机器的内核数。
安装:
sudo make install
3、使用OpenCV中sample进行测试:
cd path_to_opencv/opencv-3.2.0/samples/cpp/example_cmakecmake .make./opencv_example
可以看到一张写有”Hello OpenCV”的黑色背景图片,说明OpenCV配置成功(具体结果视opencv_example的功能而定)。
六、配置Caffe
1、下载Caffe源文件:
git clone https://github.com/BVLC/caffe.git
2、复制、打开Makefile.config文件
sudo cp Makefile.config.example Makefile.configsudo gedit Makefile.config
对Makefile.config进行修改:
(1)若使用cudnn,则去掉USE_CUDNN := 1
之前的#(#即注释)
(2)若OpenCV版本为3.0,则去掉OPENCV_VERSION := 3
之前的#
(3)若许使用Python编写layer,则去掉WITH_PYTHON_LAYER := 1
之前的#
(4)找到# Whatever else you find you need goes here.下面的:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/includeLIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serialLIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
3、对Caffe目录下的Makefile文件进行修改:
将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
4、编辑/usr/local/cuda/include/host_config.h
将
#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改为
//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
5、编译
make all -j8 #8的含义同上make pycaffe #编译python layermake runtest
若显示通过所有测试样例,则说明安装成功。
6、使用MNIST样例进行测试
MNIST是一个手写数字的数据集,共包含数字0~9十个类,训练集、测试集分别含有60000、10000张图片。使用含有两个卷积层的LeNet模型,就可以取得很好的分类结果。
获取数据集、装换为lmdb格式,网络训练过程如下:
cd path_to_caffe/caffe #进入caffe目录中./data/mnist/get_mnist.sh #下载mnist数据集./examples/mnist/create_mnist.sh#将mnist数据集转为lmdb格式./examples/mnist/train_lenet.sh #训练lenet网络
训练结果如下,经过10000次迭代,可以达到99.06%的训练准确率。
参考资料
- Caffe Ubuntu安装教程
- Training LeNet on MNIST with Caffe
- Ubuntu16.04+CUDA8.0+caffe配置
- Ubuntu16.04+cuda8.0+caffe安装教程
- Ubuntu安装NVIDIA驱动后桌面循环登录问题
- 问题汇总ubuntu16.04+cuda8.0+cudnn+opencv3.2+caffe+tensorflow
- NVIDIA驱动挂掉后Ubuntu 16.04循环登陆
- Ubuntu16.04+Cuda+Caffe安装
- ubuntu16.04配置GPU1080Ti 安装cuda caffe
- Ubuntu16.04环境下安装CUDA、cudnn、Caffe、Tensorflow、pytorch
- Ubuntu16.04+CUDA 8.0+caffe配置说明
- deeplab caffe ubuntu16.04 CUDA 8.0
- ubuntu16.04 CUDA 8.0 caffe错误
- Ubuntu16.04 cuda cudnn opencv caffe
- ubuntu16.04安装caffe
- Ubuntu16.04 安装caffe
- Ubuntu16.04 安装caffe
- Ubuntu16.04 Caffe安装
- Ubuntu16.04 安装Caffe
- Ubuntu16.04 安装Caffe
- Ubuntu16.04安装Caffe
- ubuntu16.04 安装 caffe
- Ubuntu16.04安装caffe
- ubuntu16.04 安装 Caffe
- ubuntu16.04安装Caffe
- 在idea上如何查看本地历史版本
- office 2016 for mac 安装
- PAT basic 1003
- datacleaner第九部分
- ViewPage+Fragment选项卡切换
- Ubuntu16.04+Cuda+Caffe安装
- 使用postman基于opendaylight和ovsdb创建vxlan隧道
- Codeforces 834D The Bakery(dp+线段树)
- JetBrains激活
- opencv4-videoCapture
- Cocos2d-Js中创建对象都使用new 对象,而且每个对象前面都要加cc.例如
- 局域网内利用nc传输文件
- PAT basic 1003_2
- cocos2d-js使用的对象