zoukankan      html  css  js  c++  java
  • 关于CUDA,cuDNN,TF,CUDA驱动版本兼容问题

    实际工作当中,经常维护好几个项目的代码,不同项目依赖的TF版本不一致问题。网上找了好多资料,但是每次遇到的问题都不一样,每次都要去查(就是是一样的问题,解决办法也可能会不一样)每次踩坑无数,今天痛定思痛,下决心总结一下。

    基本概念

    • CUDA:用于GPU编程的语言,跑TF的时候用了GPU,TF里面很多函数(或者依赖库)是CUDA语言编写的。不同TF版本需要不同的CUDA。
    • cuDNN:NVIDIA为深度学习,矩阵运算写的一个加速库。CUDA版本必须和cuDNN版本匹配。cuDNN和TF版本匹配与否则无所谓(不过CUDA和TF版本必须匹配,所以cuDNN版本和TF版本是间接依赖关系)。
    • TF:这个没什么好说的。个人经验,别用太新的,如果每次都用最新的,那么进而导致CUDA也要不断更新
    • NVIDIA驱动版本:保持最新就好了,NVIDIA驱动版本要求和CUDA版本匹配,而CUDA又要求cuDNN/TF是匹配的。不过NVIDIA驱动版本是向下兼容的,所以保持最新就没事。输入nvidia-smi可以查看:

    工作当中改如何做?

    • 尽量保持最新的CUDA驱动版本
    • 维护多个cuda版本:cuda安装到/usr/local/目录下,可以通过命令切换不同版本
    sudo rm -rf /usr/local/cuda #删除之前创建的软链接
    sudo ln -s /usr/local/cuda-8.0 /usr/local/cuda #创建新 cuda 的软链接
    • 将cuDNN和CUDA解耦:说白了就是,二者单独存放,不要混在一起。切换cuDNN只需要在~/.bashrc文件里面设置如下即可:
    # 在.bashrc文件里面写入该环境变量,切换cudnn只需要把cudnn设置到/root/cuda路径即可
    export LD_LIBRARY_PATH=/root/cuda/lib64:$LD_LIBRARY_PATH
    • TF版本别用太新的:使用pip install tensorflow-gpu=1.x.0安装
    • 遇到问题不要无脑google:先自行分析原因,尝试办法,然后再google。
     
  • 相关阅读:
    python--DenyHttp项目(1)--调用cmd控制台命令os.system()
    python--DenyHttp项目(1)--GUI:tkinter☞ module 'tkinter' has no attribute 'messagebox'
    python--DenyHttp项目(1)--socket编程:服务器端进阶版socketServer
    python--DenyHttp项目(1)--socket编程:客户端与服务器端
    平台后台编辑功能实现
    java中的map
    java 重写(override)与 重载(overload)
    java继承 extends
    java泛型
    java中Map和List的使用
  • 原文地址:https://www.cnblogs.com/clemente/p/10619235.html
Copyright © 2011-2022 走看看