ubuntu16.04下 显卡驱动384.98+cuda9.0+cudnn9.0+caffe 安装
我自己尝试的在16.04下安装如上所述,系统安装不多说,主要说显卡驱动往下的部分,和我自己遇到的问题和解决办法。
- 装ubuntu16.04
- 显卡驱动384.98
- cuda9.0
- cudnn9.0
- caffe
装ubuntu16.04
原系统是win10,在这个基础上用u盘安装的双系统。所用系统https://www.ubuntu.com/download/desktop 如下图
显卡驱动384.98
第一开始我以为cuda中自带GPU显卡驱动,不用独立安装,实际上我是没成功的,还是要先安装显卡驱动。第二因为我的主板上有集成显卡的插槽,所以在gpu显卡驱动装上之前,都是用的集成显卡。如果是没有集成显卡插槽,我就没试过了,用其他人的方法吧。
首先去官网下载对应GPU版本的显卡驱动,我的是微星的GTX1080Ti ,到nvidia网站http://www.nvidia.cn/Download/index.aspx?lang=cn
点击搜索,下载。我放在了下图的位置
接下来我遇到了第一个大坑,-》安装这个驱动。安装驱动是需要关闭ubuntu的图形桌面的,但是我在用ctrl+alt+F1 或者 sudo service lightdm stop 命令想关闭图形,都会满屏幕输出nouveau。。。。SCHED_ERROR 08 这样的错误,我搜索解决方法,网上说还是显卡的原因,有一堆解决方法,说是引导的问题,或者显卡的问题,我都没解决。接下来说解决方案。首先我用了http://blog.csdn.net/u012005313/article/details/50582808 这个方法,问题没有完美解决,但是我不确定不操作这一步之后会不会成功。
sudo apt-get install grub
sudo apt-get install grub2
sudo gedit /etc/default/grub
#将GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"中的quiet splash改为modeset
并没有解决,仍然是接下来我又看了个博客,地址找不到了,就是先注销当前账户,在输入密码的那个界面 用ctrl+alt+F1,这次成功进入到命令行界面,输入用户名密码(相当于在图形化界面里输入密码,当然用户名需要自己输入,它不会直接显示)成功完成。
#首先关闭图形服务
sudo service lightdm stop
#给NVIDIA-Linux-x86_64-384.98.run赋权限,版本不一样自行修改,还有我
#的当前目录就是~目录,注意路径
sudo chmod 777 NVIDIA-Linux-x86_64-384.98.run
sudo sh NVIDIA-Linux-x86_64-384.98.run
#打开图形服务
sudo service lightdm start
#重启
sudo reboot
如果上述步骤都没问题,那么显卡驱动安装成功,可以把显示器插口插在gpu的口上了,重启后屏幕可以显示,安装成功,图形界面也恢复了。
cuda9.0
下面安装cuda,我下载了目前最新版本的9.0。去官网下载https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=runfilelocal
#运行
sudo sh cuda_9.0.176_384.81_linux.run
run文件类似于win的安装了,一步一步有提示的,第一个好像问装不装显卡驱动,选择n,其他就选择y吧。接下来修改环境变量和库路径
sudo gedit /etc/profile
#添加一句 export PATH=/usr/local/cuda-9.0/bin:$PATH
source /etc/profile #让它生效
#添加lib库路径,需要新建一个文件
sudo gedit etc/ld.so.conf.d/cuda.conf
#在文件里添加一句 /usr/local/cuda-9.0/lib64 记得保存
sudo ldconfig #让它生效
接下来编译samples ,进入sample
sudo cd /usr/local/cuda-9.0/samples
接下来编译
sudo make
验证编译
cd /usr/local/cuda-9.0/samples/bin/x86_64/linux/release
./deviceQuery
如果显示显卡信息就ok了,其实上一步make不报错基本就成功了。
安装cudnn
cudnn 是让gpu加速的一个库,运行起来快吧。cudnn的版本要与cuda对应,所以去官网下载https://developer.nvidia.com/rdp/cudnn-download 我选的是下图有下划线那个版本。我应该下载了一个压缩包,要解压。
cudnn的安装学习了这篇博客http://blog.csdn.net/xuezhisdc/article/details/48651003 和
http://blog.csdn.net/guoyunfei20/article/details/78191599
#解压文件
tar -zxvf cudnn-9.0-linux-x64-v7.tgz
#切换路径,文件夹名字被我改成了cuda
cd cuda
#复制lib文件到cuda安装路径下的lib64/
sudo cp lib* /usr/local/cuda/lib64/
#复制头文件
sudo cp cudnn.h /usr/local/cuda/include/
#更新软连接 文件名具体要自己看一下
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.7.0
sudo ln -s libcudnn.so.7.0.4 libcudnn.so.7.0
sudo ln -s libcudnn.so.7.0 libcudnn.so
sudo gedit /etc/profile
#添加export LD_LIBRARY_PATH=/usr/local/cuda/cudnn/lib64$LD_LIBRARY_PATH
source /etc/profile
当然可以按照上面链接的方法测试cudnn是否成功,我就不写了。
caffe的安装
安装caffe之前要安装python或者matlab,opencv也是可选的,我就不写了。ubuntu16.04 python2 python3都有的 。
还要安装一个东西mkl或者blas ,简单点就是blas
sudo apt-get install libatlas-base-dev
然后下载caffe,github https://github.com/BVLC/caffe
并且解压。
首先安装一堆依赖包,否则后面编译caffe会有各种各样的错误。参考http://blog.csdn.net/jpday/article/details/70741619
#先下载一个glog,貌似谷歌又上不去,csdn有人传又收金币,日了够
tar zxvf glog-0.3.3.tar.gz
cd glog-0.3.3/
./configure
make
sudo make install
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
sudo apt-get install -y python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython
#cython 我没有装上,报错了。我没管它。
sudo apt-get install -y protobuf-c-compiler protobuf-compiler
首先需要在官方提供的Makefile.config文件的基础上进行一些配置工作。先拷贝一份原始Makefile.config文件
cd ~/caffe-master
cp Makefile.config.example Makefile.config
sudo gedit Makefile.config
#需要对配置文件做一些修改
因为相关博客有很多,我就直接贴我修改了哪些内容吧
一 开启cudnn
# cuDNN acceleration switch (uncomment to build with cuDNN).
USE_CUDNN := 1
*
二 compute_20这里以后会报错,因为cuda版本问题,所以注释掉
*
# CUDA architecture setting: going with all of them.
# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility.
# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility.
# For CUDA >= 9.0, comment the *_20 and *_21 lines for compatibility.
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
三 因为要用py2 和py3 所以注释去掉
# NOTE: this is required only if you will compile the python interface.
# We need to be able to find Python.h and numpy/arrayobject.h.
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.
# ANACONDA_HOME := $(HOME)/anaconda
# PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
# $(ANACONDA_HOME)/include/python2.7 \
# $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include
# Uncomment to use Python 3 (default is Python 2)
# PYTHON_LIBRARIES := boost_python3 python3.5m
PYTHON_INCLUDE := /usr/include/python3.5m \
/usr/lib/python3.5/dist-packages/numpy/core/include
四 这个路径一定要修改,不然找不到hdf5,或者其他依赖包
# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/include/hdf5/serial \
/usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/lib/x86_64-linux-gnu/hdf5/serial \
/usr/local/lib /usr/lib
那个反斜杠是换行,不要搞错了,我直接复制的,可能格式不太好看
五 关于opencv 和matlab 的配置文件修改部分,我没用就没改,其他博客中写的很清楚,也很简单。
总之,有错误就搜一下错误,总有前人会犯过的。。。。再贴几个帮助很大的博客
http://blog.csdn.net/striker_v/article/details/51615197
http://m.blog.csdn.net/w113691/article/details/77937193
http://blog.csdn.net/jpday/article/details/70741619
http://www.linuxidc.com/Linux/2016-12/138870p2.htm
http://blog.csdn.net/u010417185/article/details/52065472
接下来就是编译caffe了,在当前文件夹下
make all
make test
make runtest
make pycaffe