这几天安装cuda出现了很多问题,特意记录并分享给需要的人。拿走不谢-:)
我的环境:GTX1080Ti,Ubuntu16.04,intel集显
遇到的问题:我安装显卡驱动出了问题,第一次安装官网最新版驱动381.xx(记得不清楚了),安装完驱动,安装cuda,caffe没有问题,但是训练mnist网络时出错:cannot
create cublas handle. cublas won’t be available。查了之后得知是驱动安装不正确。反思是不是驱动版本太高。第二次直接安装cuda8.0 run文件,并安装其自带的驱动(375.26),安装之后驱动能正常工作,但是无法识别GPU型号。第三次直接安装cuda8.0 deb文件,成功了,驱动版本是(375.66),训练mnist网络也没有问题,但是重启黑屏,当时没有找到很好的方法(后来找到了),就又重新安装了。第四次直接用命令行apt-get install安装的375驱动,刚好是375.66,然后安装cuda8.0 run文件,没有安装其自带的驱动,结果成功了,但是也遇到重启黑屏。(最后面更新部分有怎样下载旧版本驱动的说明)
第一部分:安装nvidia驱动,CUDA8.0和cudnn5.1
备注:开机通过BIOS更改初始显卡可以选择集显(IGFX)或独显(PCIE),独显进入ubuntu需要从启动菜单"高级模式"->"Recovery Mode"->”Resume”,多按几次enter就可以进入文本界面(由于没有驱动)。
Step 1:检查是否安装有nvidia第三方驱动nouveau
lsmod |grep nouveau #若有输出,需要禁止该nvidia第三方驱动,若无,忽略该步骤
sudo touch /etc/modprobe.d/blacklist-nouveau.conf
sudo chmod a+w /etc/modprobe.d/blacklist-nouveau.conf
sudo vim /etc/modprobe.d/blacklist-nouveau.conf
#添加几行:
blacklist nouveau
options nouveau modeset=0
sudo update-initramfs -u
reboot#重启
Step 2:安装显卡驱动(以apt-get install形式安装,驱动的安装可能需要多试几次了,其他安装方式请查看官网或谷歌百度)
Ctrl+Alt+F1#进入文本模式(已经是文本模式忽略)
sudo service lightdm stop#关闭图形化环境
sudo apt-get update
sudo apt-get install nvidia-375
sudo nvidia-smi#安装完验证,若列出了GPU的信息列表则表示驱动安装成功
sudo service lightdm start#会自动切换到图像界面
Step 3:安装CUDA8.0(以run文件为例)
sudo bash cuda_8.0.61_375.26_linux.run
#安装过程中,不安装驱动(可能由于版本问题,需要安装cuda驱动,不安装opengl),因为已经安装过了,其他的默认或选择就好,在网上看到说安装cuda之前,需要安装一些依赖,我有安装过,但不知道有没有用,安装cuda最好看看官网的安装指南CUDA Toolkit Documentation,一步一步来,比较保险
#依赖部分 sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
Step 4:环境变量设置
sudo vim ~/.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}}
source .bashrc#让环境变量生效
Step 5:测试CUDA的sammples
cd /usr/local/cuda-8.0/samples#也可以是/home/usrname/NVIDIA_CUDA-8.0_Samples
make
cd bin/x86_64/linux/release/
./deviceQuery#最后能看到Result = PASS就算成功
./bandwidthTest#同上,能看到Result = PASS就算成功
Step 6:配置cuDNN5.1
#下载(需要注册)cuDNN5.1之后进行解压,解压后的文件夹为cuda
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/lib* /usr/local/cuda/lib64/
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so
第二部分:配置安装caffe
Step 1:安装caffe,pycaffe依赖
sudo apt-get upgrade
sudo apt-get install -y build-essential cmake git pkg-config
sudo apt-get install python-protobuf
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 -y libgflags-dev libgoogle-glog-dev liblmdb-dev
#install ATLAS by sudo apt-get install libatlas-base-dev or install OpenBLAS by sudo apt-get install libopenblas-dev or MKL for better CPU performance
sudo apt-get install libatlas-base-dev
#Python
sudo apt-get install python-dev
sudo apt-get install -y python-pip
sudo apt-get install python-numpy
sudo apt-get install python-matplotlib
sudo pip install scikit-image
Step 2:配置Makefile.config
sudo cp Makefile.config.example Makefile.config
sudo vim Makefile.config
#根据个人情况修改文件:
USE_CUDNN := 1#若使用cudnn
USE_OPENCV := 1
USE_LEVELDB := 1
USE_LMDB := 1
CUDA_DIR := /usr/local/cuda
PYTHON_INCLUDE := /usr/include/python2.7 /usr/lib/python2.7/dist-packages/numpy/core/include
PYTHON_LIB := /usr/lib
WITH_PYTHON_LAYER := 1#若要使用Python来编写layer
#以下两行比较重要,否则会报错
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/lib/hdf5/serial /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
Step 3:编译caffe
make all
make test
make runtest
make pycaffe#不用python接口可以去掉
(需要设置环境变量后可用
sudo echo export PYTHONPATH=”/path/to/caffe/python” >> ~/.bashrc
source ~/.bashrc)
make distribute#可不用,把所有执行的相关文件放在一个目录下
#如果没有什么问题的话,就应该算成功了
Step 4:验证caffe
#用mnist网络验证
cd /xx/xx/caffe-master#回到Caffe根目录
./data/mnist/get_mnist.sh#下载MNIST数据库并解压缩
./examples/mnist/create_mnist.sh#将其转换成Lmdb数据库格式
./examples/mnist/train_lenet.sh#训练网络,没有问题应该能看到损失与精度数值,至此,恭喜你大功告成!
第三部分:重启循环进入登录界面,重启黑屏解决办法
question 1:重启之后重复进入登录界面解决办法(如果cuda deb安装驱动,没有/proc/driver/nvidia,执行nvidia-xconfig也能解决)
利用启动菜单"高级模式"->"Recovery
Mode"->”Resume”,等系统到登陆界面,按下”Ctrl+Alt+F1”,输入用户名密码登陆后,进行以下操作(可能要执行几次):
sudo nvidia-xconfig
#当成功建立/etc/X11/xorg.conf并备份,则说明成功
question 2:重启之后黑屏(安装nvidia驱动容易出现这个问题),解决办法
sudo vim /etc/default/grub
#将quiet splash”改为”quiet splash nomodeset”
sudo update-grub
reboot
第四部分:参考的教程,在这里表示衷心的感谢
http://blog.csdn.net/xuzhongxiong/article/details/52717285
http://blog.csdn.net/Liekkas_Javey/article/details/53391481
—————————第一次更新2017.11.17———————-
驱动的问题:最近发现cuda工作又不正常了,运行pytorch例程,出现RuntimeError: CUDNN_STATUS_INTERNAL_ERROR,然后运行caffe例程,出现syncedmem.hpp:19] Check failed: error == cudaSuccess (30 vs. 0) unknown error,查看了一下驱动版本为最新的384.xx,以前cuda正常工作时的驱动是375.66,然后我尝试重新安装375.66,无奈用命令行安装375版本后,发现显示的版本还是384,并且caffe、pytorch还是原来的错误,官网上又只能下载最新的版本,折腾了好几天,终于找到安装旧版本的方法,由于官网的驱动下载地址每次都只是改了个驱动号而已,因此只需要更改下载链接中驱动的版本号即可,比如官网给的最新驱动384的下载链接为http://us.download.nvidia.com/XFree86/Linux-x86_64/384.xx/NVIDIA-Linux-x86_64-384.xx.run,改为375.66的为http://us.download.nvidia.com/XFree86/Linux-x86_64/375.66/NVIDIA-Linux-x86_64-375.66.run,就可以下载旧版本的驱动。
备注:个人感觉官方下载的驱动比apt-get install安装的驱动好用。