ubuntu16.04安装cuda8.0 和cudnn5.1(多个cuda、天坑tensorflow)

ubuntu16.04安装cuda8.0 和cudnn5.1(多个cuda、天坑tensorflow)

背景

以下只能解决特定问题,普遍问题不能解决,建议参考参考博客内容进行选择。

文本摘要界中有一个很著名的论文,叫做Get to the point(指针生成模型),最近需要复现一下相关论文。然后踩坑就开始了。


过程

代码地址,有兴趣的可以挑战一下。其实这玩意说难也难,说不难也不难。难就难在配置环境上,真的是踩坑无数。我按照一步一步配置下来,获得数据集步骤可以参考这篇博客,会讲解处理数据集的过程,但是具体还得看人家写的英文文档。

处理好了之后,觉得还有点小成就,然后就安装tensorflow跑,直接报错:大概说的是类型转换出现了问题。在这里插入图片描述

不出意外,死活不会改人家的代码。只好换方法,找到上述的代码地址,看到作者tensorflow用的是1.2.1的,我寻思我也安装跟作者一样的,结果就可以正常跑通,然后就想着先跑着吧。跑了一上午、一下午、一晚上、又一上午,感觉训练的速度好慢,就想着要不用gpu跑跑试试?然后手贱的在正在使用的环境中输入了pip install tensorflow-gpu==1.2.1,然后就没有然后了。

安装cuda8.0

既然程序崩了,那就好好整理下,那就非得用GPU跑它不行。

首先找到一个表格

在这里插入图片描述
在这里插入图片描述

从这里我们可以看出我们使用1.2.1那么需要安装的是cuda8和cudnn5.1。

我使用的是ubuntu16.04,然后输入/usr/local查看由多少个cuda:
![在这里插入图片描述](https://img-blog.csdnimg.cn/202012102011473.png)

可以看到有cuda9.0、cuda9.1,这就证明我们需要在一台机器上安装多个cuda。

步骤:

  1. 下载cuda8.0,百度网盘在这:链接:https://pan.baidu.com/s/1aXhnaIuM5cgyQ1sneYmbFQ
    提取码:a5kk 。

  2. 将这个文件拷贝到算法服务器的指定位置,并使用指令解压:tar xvzf cuda_8.0....

  3. 解压之后直接开始安装:sudo sh cuda_8.0.61_375.26_linux.run。

  4. #..一堆协议说明...
    #直接按q退出协议说明.
    zerozone@zerozone: accept/decline/quit: accept  #接受协议
    
    Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26? 
    y)es/(n)o/(q)uit: n  #是否显卡驱动包,由于已经安装显卡驱动,选择n
    
    Install the CUDA 8.0 Toolkit?
    (y)es/(n)o/(q)uit: y #是否安装工具包,选择y
    
    Enter Toolkit Location
    [ default is /usr/local/cuda-8.0 ]: #工具包安装地址,默认回车即可
    
    Do you want to install a symbolic link at /usr/local/cuda?
    (y)es/(n)o/(q)uit: y #添加链接**注意这个连接,如果你之前安装过另一个版本的cuda,除非你确定想要用这个新版本的cuda,否则这里就建议选no,因为指定该链接后会将cuda指向这个新的版本**
    
    Install the CUDA 8.0 Samples?
    (y)es/(n)o/(q)uit: y #安装样例
    
    Enter CUDA Samples Location
     [ default is /root ]:  #样例安装地址默认即可
    
    # ***安装信息***
    Installing the CUDA Toolkit in /usr/local/cuda-8.0 ...
    
    Missing recommended library: libXi.so
    Missing recommended library: libXmu.so
    #注意,这里出现了Missing recommended library错误,
    # 如果出现了错误:执行这条指令 
    # sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev 
    # 我没有出现,所以直接略过这条指令了,我执行这条指令,需要我安装matlib,有点迷。所以就没执行这段指令,后来发现也能用。
    #是因为博主在第一次安装时,没有添加最开始的那条安装相关依赖的指令,
    #之后我添加了依赖后,再次安装,就没有Missing错误了
    
    Installing the CUDA Samples in /root ...
    Copying samples to /root/NVIDIA_CUDA-8.0_Samples now...
    Finished copying samples.
    
    ===========
    = Summary =
    ===========
    Driver:   Not Selected
    Toolkit:  Installed in /usr/local/cuda-8.0
    Samples:  Installed in /root, but missing recommended libraries
    
    Please make sure that
     -   PATH includes /usr/local/cuda-8.0/bin
     -   LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.0/lib64 to /etc/ld.so.conf and run ldconfig as root
    
    To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-8.0/bin
    
    Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-8.0/doc/pdf for detailed information on setting up CUDA.
    
    ***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 361.00 is required for CUDA 8.0 functionality to work.
    
    To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    
        sudo <CudaInstaller>.run -silent -driver
    
    Logfile is /tmp/cuda_install_6388.log   
    # ***安装完成***
    
  5. 配置CUDA相关环境在这里插入图片描述

    # 或者输入这些指令:
    Tensorflow官方安装历程要求注意的是:配置PATH和LD_LIBRARY_PATH和CUDA_HOME环境变量.
    
    vim ~/.bashrc #修改配置文件(如果你用的是zsh,则需要修改 ~/.zshrc文件)
    #在文件结尾处添加
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
    export PATH=$PATH:/usr/local/cuda/bin
    export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
    
  6. 如果需要版本切换的话,可以参考这篇文章,通过软链进行更换的,但是我发现我不更换也能用。1.8的和1.2.1的都能正常使用gpu。待会还需要验证下。

安装cudnn5.1

百度网盘下载:链接:https://pan.baidu.com/s/1UUUgevH6xX9R1-BX5olaTQ
提取码:hoe7

安装过程

  1. 解压tar -zxvf cudnn-8.0-linux-x64-v6.0.tgz

  2. 在当前目录下查看都有什么文件:在这里插入图片描述

  3. 拷贝指定文件到指定目录

    $cd cuda  
    $sudo cp lib64/lib* /usr/local/cuda/lib64/  
    $sudo cp include/cudnn.h /usr/local/cuda/include/
    
  4. 如果有软链的话,建议这样更新:

    $ sudo chmod +r libcudnn.so.6.0.21
    $ sudo ln -sf libcudnn.so.6.0.21  libcudnn.so.6
    $ sudo ln -sf libcudnn.so.6 libcudnn.so
    $ sudo ldconfig
    

这时候再使用tensorflow1.2.1的话应该没什问题了。但是有一点比较疑惑,为什么我配置了1.2.1的环境,tensorflow1.8.0的还能用。有点迷。

报错记录

  1. ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory

    安装cudnn就行了。

  2. ResourceExhaustedError (see above for traceback): OOM when allocating tensor of shape [9216,4096] an

    很明显,OOM,out of Memory,显存不够了,调小参数就行。

  3. TensorFlow报错FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated......

    重新安装numpy-1.16-0 安装版本太高了,更换即可

参考博客

  1. TensorFlow报错FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated......
  2. 安装CUDNN6.0
  3. 在ubuntu上安装多个版本的CUDA,并且可以随时切换
  4. ubuntu16.04安装多个版本CUDA的方法
  5. Ubuntu16.04+cuda-8.0+cudnn-v5.1+tensorflow0.8-gpu/tensorflow1.0-gpu安装教程
  6. tensorflow-gpu1.8.0+win10+vs2017+CUDA9.2 安装——从挖坑到跳坑到出坑
原文地址:https://www.cnblogs.com/chenyameng/p/14117269.html