ubuntu16.04下 显卡驱动384.98+cuda9.0+cudnn9.0+caffe 安装
我自己尝试的在16.04下安装如上所述,系统安装不多说,主要说显卡驱动往下的部分,和我自己遇到的问题和解决办法。
装ubuntu16.04显卡驱动384.98cuda9.0cudnn9.0caffe
装ubuntu16.04
原系统是win10,在这个基础上用u盘安装的双系统。所用系统/download/desktop 如下图
显卡驱动384.98
第一开始我以为cuda中自带GPU显卡驱动,不用独立安装,实际上我是没成功的,还是要先安装显卡驱动。第二因为我的主板上有集成显卡的插槽,所以在gpu显卡驱动装上之前,都是用的集成显卡。如果是没有集成显卡插槽,我就没试过了,用其他人的方法吧。
首先去官网下载对应GPU版本的显卡驱动,我的是微星的GTX1080Ti ,到nvidia网站/Download/index.aspx?lang=cn
点击搜索,下载。我放在了下图的位置
接下来我遇到了第一个大坑,-》安装这个驱动。安装驱动是需要关闭ubuntu的图形桌面的,但是我在用ctrl+alt+F1 或者 sudo service lightdm stop 命令想关闭图形,都会满屏幕输出nouveau。。。。SCHED_ERROR 08 这样的错误,我搜索解决方法,网上说还是显卡的原因,有一堆解决方法,说是引导的问题,或者显卡的问题,我都没解决。接下来说解决方案。首先我用了/u01313/article/details/50582808 这个方法,问题没有完美解决,但是我不确定不操作这一步之后会不会成功。
sudo apt-get install grubsudo apt-get install grub2sudo 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.runsudo sh NVIDIA-Linux-x86_64-384.98.run#打开图形服务sudo service lightdm start#重启sudo reboot
如果上述步骤都没问题,那么显卡驱动安装成功,可以把显示器插口插在gpu的口上了,重启后屏幕可以显示,安装成功,图形界面也恢复了。
cuda9.0
下面安装cuda,我下载了目前最新版本的9.0。去官网下载/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:$PATHsource /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对应,所以去官网下载/rdp/cudnn-download 我选的是下图有下划线那个版本。我应该下载了一个压缩包,要解压。
cudnn的安装学习了这篇博客/xuezhisdc/article/details/48651003 和
/guoyunfei20/article/details/78191599
#解压文件tar -zxvf cudnn-9.0-linux-x64-v7.tgz#切换路径,文件夹名字被我改成了cudacd 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_PATHsource /etc/profile
当然可以按照上面链接的方法测试cudnn是否成功,我就不写了。
caffe的安装
安装caffe之前要安装python或者matlab,opencv也是可选的,我就不写了。ubuntu16.04 python2 python3都有的 。
还要安装一个东西mkl或者blas ,简单点就是blas
sudo apt-get install libatlas-base-dev
然后下载caffe,github /BVLC/caffe
并且解压。
首先安装一堆依赖包,否则后面编译caffe会有各种各样的错误。参考/jpday/article/details/70741619
#先下载一个glog,貌似谷歌又上不去,csdn有人传又收金币,日了够tar zxvf glog-0.3.3.tar.gzcd glog-0.3.3/./configuremakesudo make installsudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-devsudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compilersudo 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-mastercp Makefile.config.example Makefile.configsudo 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.5mPYTHON_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/includeLIBRARY_DIRS := $(PYTHON_LIB) /usr/lib/x86_64-linux-gnu/hdf5/serial \/usr/local/lib /usr/lib
那个反斜杠是换行,不要搞错了,我直接复制的,可能格式不太好看
五 关于opencv 和matlab 的配置文件修改部分,我没用就没改,其他博客中写的很清楚,也很简单。
总之,有错误就搜一下错误,总有前人会犯过的。。。。再贴几个帮助很大的博客
/striker_v/article/details/51615197
http://m./w113691/article/details/77937193
/jpday/article/details/70741619
/Linux/-12/138870p2.htm
/u010417185/article/details/52065472
接下来就是编译caffe了,在当前文件夹下
make allmake testmake runtestmake pycaffe