tensorflow前前后后装过几十次,每次装cuda&cuDNN都很麻烦,决定整理一下踩过的坑和安装流程,记录可能会遇到的问题在这里备忘,过程会尽量写得完整详细。
如果无法解决问题,建议查阅结尾参考资料中的官方文档链接,毕竟大部分情况下官方文档才是最完整的。
记录两种安装方法,第一种是使用runfile,第二种用deb文件安装。
环境:
主板——Z370XP SLI
显卡——2 * 微星红龙1070ti
ssd——建兴(LITEON) 睿速系列 T10 240G
系统环境——Ubuntu16.04 64位、Windows10 64位专业版本,双系统
电源——美商海盗船(USCorsair)额定1000W
当时折腾ubuntu的引导程序也花了不少时间,不过如何分盘装双系统这里还是不具体介绍了,网上一堆教程。
前置准备工作:
首先在官网查阅,自己的电脑是否支持。
查阅:Pre-installation Actions先确定下面四个没有问题。
Verify You Have a CUDA-Capable GPU]
Verify You Have a Supported Version of Linux
Verify the System Has gcc Installed
Verify the System has the Correct Kernel Headers and Development Packages Installed
开始做预备工作:
安装cuda的依赖包。
这里是cuda-sample的依赖包,不装sample可以只装上面的
1. deb安装:
1.1 CUDA安装
这种方法比较简单,推荐这种方法。
下载cuda9.0(https://developer.nvidia.com/nvidia-developer-zone)
下好以后在终端输入(版本格式参考官方文档)
sudo apt-get autoremove --purge nvidia-*
或者
sudo apt-get purge nvidia* 或者 sh ./nvidia.run --uninstall
来卸载原有驱动。(可以用nvcc -V 查看是否成功卸载。)
卸载完后开始安装:
1. sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
2. sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub #添加key
3. sudo apt update
4. sudo apt -y install cuda
- 添加环境变量
配置环境变量,运行如下命令打开profile文件
在profile结尾加入:
export CUDA_HOME=/usr/local/cuda-9.0
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
然后source /etc/profile
立即生效。
在终端输入 : nvcc -V
看到相应的nvcc编译器信息,那么CUDA配置成功。
那么重新启动:sudo reboot
5*. 注意:重启以后可能会有 循环登陆 的问题,我之前就卡在这边挺久,碰到这种情况最简单的方法当然是使用第二种方法runfile文件安装,然后安装的时候选择不安装OpenGL。
但是实际上还有一种方法可以解决,这种情况发生很可能是主板的安全启动secure boot引起的,先把它关掉(http://www.icharm.me/%E6%8A%80%E5%98%89gigabyte-b350m-gaming-3-%E5%85%B3%E9%97%AD-secure-boot.html),如果没有解决那么应该是显卡的问题。WIN10的电脑如果存在独显,那么cpu的核显驱动是不会下载的,我们需要两块显卡就得手动设置,设置以后WIN10就能识别核显并且能安装驱动了,此时ubuntu也一样,我们需要下载ubuntu对应的cpu的核显,很多七代八代的cpu核显ubuntu16.04并不支持,那么我需要对linux内核降级比较麻烦,比较好的方法是用官网提供的自动安装脚本来安装驱动程序包,ubuntu 16.04 lts的解决方法在此网址:(https://software.intel.com/en-us/forums/opencl/topic/738108)
- 性能测试:
其实主要是看看cuda是否正确安装,
# 切换到cuda-samples所在目录
cd /usr/local/cuda/samples
# 没有make,先安装命令 sudo apt-get install cmake,-j是最大限度的使用cpu编译,加快编译的速度
sudo make –j8
# 编译完毕,切换release目录(/usr/local/cuda/samples/bin/x86_64/linux/release完整目录)
cd ./bin/x86_64/linux/release
# 检验是否成功,运行实例
./deviceQuery
# 最后能看到Result = PASS就算成功了。
1.2 cuDNN 安装
cuDNN是GPU加速计算深层神经网络的库。首先去官网(https://developer.nvidia.com/rdp/cudnn-download)下载cuDNN,需要注册一个账号才能下载,以前需要几天的审核时间,现在基本是秒批。
选择对应版本下载。
安装cudnn比较简单,简单地说,就是复制几个文件:库文件和头文件。将cudnn的头文件复制到cuda安装路径的include路径下,将cudnn的库文件复制到cuda安装路径的lib64路径下。具体操作如下:
#解压文件
cp cudnn-9.0-linux-x64-v7.solitairetheme8 cudnn-9.0-linux-x64-v7.tgz
tar -xvf cudnn-9.0-linux-x64-v7.tgz
#切换到刚刚解压出来的文件夹路径
cd cuda
#复制include里的头文件(记得转到include文件里执行下面命令)
sudo cp include/cudnn.h /usr/local/cuda/include/
#复制lib64下的lib文件到cuda安装路径下的lib64(记得转到lib64文件里执行下面命令)
sudo cp lib64/* /usr/local/cuda/lib64/
#设置权限
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
#======更新软连接======
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.7 #删除原有动态文件,版本号注意变化,可在cudnn的lib64文件夹中查看
sudo ln -s libcudnn.so.7.0.5 libcudnn.so.7 #生成软衔接(注意这里要和自己下载的cudnn版本对应,可以在/usr/local/cuda/lib64下查看自己libcudnn的版本)
sudo ln -s libcudnn.so.7 libcudnn.so #生成软链接
sudo ldconfig -v #立刻生效
终端输入:nvcc -V
查看是否正常
2. runfile安装
2.1 runfile安装的前置准备工作
首先去官网(http://www.nvidia.cn/Download/index.aspx?lang=cn)查找适配自己电脑GPU的驱动,我的电脑驱动版本如下:
2.2 CUDA的安装
(1)卸载原有驱动 sudo apt-get autoremove --purge nvidia-*
或者
sudo apt-get purge nvidia* 或者 sh ./nvidia.run --uninstall
(2)禁用nouveau驱动
编辑文件blacklist.conf
sudo gedit /etc/modprobe.d/blacklist.conf
在文件最后部分插入以下两行内容
blacklist nouveau
options nouveau modeset=0
更新系统sudo update-initramfs -u
重启系统sudo reboot
终端中运行: lsmod | grep nouveau
确定已经禁用了 nouveau,输入以后没反应即成功
(3)安装驱动:
sudo add-apt-repository ppa:graphics-drivers/ppa
//添加驱动源
sudo apt update
sudo apt-get install nvidia-390
sudo apt-get install mesa-common-dev
//本句及下一句命令有的电脑需要,有的电脑不需要,根据实际情况输入命令
sudo apt-get install freeglut3-dev
执行完上述命令后若无问题,重启,若有问题,转到第二种方法。
sudo reboot
重启后输入:
sudo nvidia-smi
如果显示GPU列表,则证明驱动安装成功了,另外也可以通过如下命令:
nvidia-settings
查看GPU信息,显示界面如下:
出现这个是正常的
(4)下载cuda9.0 (https://developer.nvidia.com/nvidia-developer-zone)
(5)Ctrl + Alt + F1(或init 3等于直接执行(5)和(6))
(6)输入了sudo service lightdm stop
(7)sudo sh cuda_9.0.176_384.81_linux.run
(8)单击回车或者 q,输入accept,一路选yes往下运行,直到提示“是否为NVIDIA安装驱动nvidia-384?”,选择否,因为已经安装好驱动程序了,其他的全都是默认,(如果是安装tensorflow的话,cuda sample 可以不装,一是装了也经常会有问题,二是我们只通过tensorflow来调用CUDA,不直接写CUDA代码,也不是必须要安装)不过要记住安装位置,默认是安装在/usr/local/cuda文件夹下。
(8*)如果之前没有手动安装驱动,而下载的cuda版本里自带的驱动刚好支持现在的显卡
那么可以输入:(如果是为了避免循环登陆,记得选择不安装opengl)
sudo sh cuda_9.0.176_384.81_linux.run -no-x-check -no-nouveau-check -no-opengl-files
Accept以后全部点了yes 和 enter
(9)输入sudo service lightdm start
(10)添加环境变量
配置环境变量,运行如下命令打开profile文件
在profile结尾加入:
export CUDA_HOME=/usr/local/cuda-9.0
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
然后source/etc/profile
立即生效。
注意:
如果环境变量写错导致 gedit命令失效,那么先临时设置环境变量
export PATH="$PATH:/usr/bin"
现在这些命令就可以临时使用了,打开再修改就行。
碰到Would you like to register the kernel module sources with DKMS?This will allow DKMS to auomatically build a new module,if you install a different kernel later
回答No。
(11)安装完成以后
输入: nvcc -V
会得到nvcc-V相应信息,那么CUDA配置成功了。
2.3 安装cuDNN
同第一种方法
3.anaconda 的常用命令以及tensorflow的安装
3.1 anaconda 的常用命令
conda list (所有安装的库列表)
conda install package_name (库)安装
conda clean清理
conda update package_name(更新)
conda remove package_name(库) 删除
conda search package_name(库)搜索
conda list -n env_name #指定查看某环境下安装的库
conda info -e 查看当前系统下的环境
创建新的环境:
指定python版本为2.7,注意至少需要指定python版本或者要安装的包
conda create -n env_name python=2.7
同时安装必要的包:conda create -n env_name numpy matplotlib python=2.7
环境切换:
切换到新环境
linux下需要使用:source activate env_name
win下: activate env_name
退出环境:
win下(也可以使用’activate root’ 切回root环境)
deactivate env_name
linux下:
source deactivate
移除环境
conda remove -n env_name --all
安装库
anaconda search -t conda (库例如:tensorflow) 搜索可用版本,搜到的名字
anaconda show (搜到的名字) 会显示这个库需要用什么指令下载
输入安装指令即可
更常用的方法是:直接pip install (库名)
当想要安装的库安装不了或者下载没速度的时候,连到这个网址,(http://www.lfd.uci.edu/~gohlke/pythonlibs/#xgboost)直接ctrl+f搜想要的库。
cp27代表python2.7以此类推,找到对应版本的库(和自己python版本以及win32/amd64版本一样的库下载)
下载下来是一个whl文件,找到该文件的路径,然后pip install (该文件的文件名.whl)
3.2 安装tensorflow
为了提升速度,建议使用清华大学开源镜像。复制生成的连接直接在终端输入即可完成安装。
另外,tensorflow中的依赖库例如numpy跟anaconda root下的库可能版本不一致,这样会出现tensorflow报错的情况。需要删掉anaconda中的numpy库,替换为tensorflow中自带的,可是使用旧版本的numpy在其他代码又会出现问题。
所以推荐使用 anaconda或者virtualenv来隔离环境。
隔离环境可以参考另外两篇博客,关于廖雪峰的python教程(https://www.jianshu.com/p/3d6c0241503a)和anaconda 常用命令。(https://www.jianshu.com/p/cf14d7b51fe7)
为了保持连贯,anaconda常用命令已经贴在3.1部分。
怕麻烦的改配置,以后就都是从清华源安装库了
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
4. References:
[1]https://developer.nvidia.com/cudnn
[2]http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#ubuntu-installation
[3]https://tensorflow.google.cn/install/install_linux#InstallingAnaconda
[4]https://www.cnblogs.com/iloveblog/p/7683349.html
[5]http://www.icharm.me/%E6%8A%80%E5%98%89gigabyte-b350m-gaming-3-%E5%85%B3%E9%97%AD-secure-boot.html
[6]https://stackoverflow.com/questions/12883128/installing-cuda-5-0-rc-samples
[7]https://software.intel.com/en-us/forums/opencl/topic/738108
[8]https://software.intel.com/en-us/forums/opencl/topic/738108
[9]Keras2.0官方中文教程