美文网首页我爱编程
Ubuntu 16.04 lts安装CUDA9.0 & cuDN

Ubuntu 16.04 lts安装CUDA9.0 & cuDN

作者: wong小尧 | 来源:发表于2017-12-08 18:18 被阅读0次

    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
    
    1. 添加环境变量

    配置环境变量,运行如下命令打开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

    1. 性能测试:

    其实主要是看看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官方中文教程

    相关文章

      网友评论

        本文标题:Ubuntu 16.04 lts安装CUDA9.0 & cuDN

        本文链接:https://www.haomeiwen.com/subject/mlncixtx.html