zoukankan      html  css  js  c++  java
  • 【tf.keras】Linux 非 root 用户安装 CUDA 和 cuDNN

    推荐使用 conda 安装 TensorFlow,安装 GPU 版本的 TensorFlow 时会同时安装对应的 CUDA 和 cuDNN。下面的问题也就不会产生。

    TensorFlow 2.0 for Linux 使用时报错:(cuDNN 版本低了)

    E tensorflow/stream_executor/cuda/cuda_dnn.cc:319] Loaded runtime CuDNN library: 7.4.1 but source was compiled with: 7.6.0.  CuDNN library major and minor version needs to match or have higher minor version in case of CuDNN 7.0 or later version. If using a binary install, upgrade your CuDNN library.  If building from sources, make sure the library loaded at runtime is compatible with the version specified during compile configuration.
    ...
    tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above. [Op:Conv2D]
    

    解决方法:升级 cuDNN。TF 2.0 和 CUDA 10.0、cuDNN 7.6.4 是匹配的。(如果是用 conda,那么以下都不需要,直接删除 cudnn 再安装对应版本)

    root 用户

    Linux 服务器的用户如果有 root 权限,那直接删除原来的 cuDNN,然后再重装新版本。
    删除已有的 cuDNN:

    sudo rm -rf /usr/local/cuda/include/cudnn.h
    sudo rm -rf /usr/local/cuda/lib64/libcudnn*
    

    进入 cuDNN 解压后的 cuda 文件夹,安装新版本:

    sudo cp include/cudnn.h /usr/local/cuda/include/
    sudo cp lib64/lib* /usr/local/cuda/lib64/
    

    建立软连接:(以 7.6.4 版本为例)

    cd /usr/local/cuda/lib64/
    sudo chmod +r libcudnn.so.7.6.4
    sudo ln -sf libcudnn.so.7.6.4 libcudnn.so.7
    sudo ln -sf libcudnn.so.7 libcudnn.so   
    sudo ldconfig
    

    非 root 用户

    如果没有 root 权限,一种做法是自己重新装 CUDA 和 cuDNN。

    在用户目录下安装 CUDA

    从官网 https://developer.nvidia.com/cuda-10.0-download-archive 下载 ubuntu 使用的 cuda_10.0.130_410.48_linux.run,安装指令 sh cuda_10.0.130_410.48_linux.run,之后:

    # 按q退出协议说明. 
     
    Do you accept the previously read EULA?
    accept/decline/quit: accept
    
    Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
    (y)es/(n)o/(q)uit: no
    
    Install the CUDA 10.0 Toolkit?
    (y)es/(n)o/(q)uit: yes
    
    # 改成自己的用户名
    Enter Toolkit Location
     [ default is /usr/local/cuda-10.0 ]: /home/wuliyttaotao/cuda-10.0
    
    Do you want to install a symbolic link at /usr/local/cuda?
    (y)es/(n)o/(q)uit: n
    
    Install the CUDA 10.0 Samples?
    (y)es/(n)o/(q)uit: y
    
    # 使用默认路径,回车
    Enter CUDA Samples Location
     [ default is /home/wuliyttaotao ]:    
    

    配置 cuDNN

    下载完 cuDNN,可能发现后缀是 .solitairetheme8,直接将这个后缀改成 .tgz 即可解压。

    复制 cuDNN 文件到 CUDA 安装目录:(cuDNN 解压到 ~/cuda 目录了,~/cuda-10.0 为自己设定的 CUDA 安装目录,~ 代表 /home/wuliyttaotao)

    cp ~/cuda/include/cudnn.h ~/cuda-10.0/include
    cp ~/cuda/lib64/lib* ~/cuda-10.0/lib64
    
    chmod a+r ~/cuda-10.0/include/cudnn.h ~/cuda-10.0/lib64/libcudnn*
    

    建立软连接:

    cd ~/cuda-10.0/lib64
    ln -sf libcudnn.so.7.6.4 libcudnn.so.7
    ln -sf libcudnn.so.7 libcudnn.so
    ldconfig -v
    

    配置用户环境变量

    修改 ~/.bashrc 文件,将下面两行加进去:(将 wuliyttaotao 改成自己的用户名)

    export PATH=/home/wuliyttaotao/cuda-10.0/bin${PATH:+:${PATH}}  
    export LD_LIBRARY_PATH=/home/wuliyttaotao/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    

    保存 ~/.bashrc 文件后,source ~/.bashrc 使其生效。

    References

    Linux之cudnn升级方法 -- ZONG_XP
    非root用户在linux下安装多个版本的CUDA和cuDNN(cuda 8、cuda 10.1 等)-- 随性拂尘倾心

  • 相关阅读:
    使用 git 托管代码
    转载自网络大神
    i18n 国际化
    转自知乎大神---什么是 JS 原型链?
    转自知乎大神----JS 闭包是什么
    转自知乎大神----JS 的 new 到底是干什么的?
    转载自知乎大神---this 的值到底是什么?一次说清楚
    sql查看本机IP地址
    Python 编码规范(Google)
    Python在mysql中进行操作是十分容易和简洁的
  • 原文地址:https://www.cnblogs.com/wuliytTaotao/p/12169315.html
Copyright © 2011-2022 走看看