我的AI之路(5)--如何选择和正确安装跟Tensorflow版本对应的CUDA和cuDNN版本

14 篇文章 1 订阅
13 篇文章 1 订阅

最新的Tensorflow和CUDA cuDNN的对应关系可以从这里找到:

https://tensorflow.google.cn/install/source

https://tensorflow.google.cn/install/source_windows

 

以下内容提到的版本都有点陈旧了,不过如果tensorflow和cuda cudnn版本对不上时,你可能依旧会遇到类似的下面提到的问题,仅供参考。

    最新的Tensorlfow2.0 gpu版要求使用的CUDA是CUDA 10.0,安装错版本了会用不了,最新的pytorch 1.3.1要求使用CUDA 10.1,如果你两者都需要使用,可以先把CUDA 10.0和CUDA 10.1都安装上,然后linux下把/usr/local/cuda链接到CUDA 10.0所在的目录, windows下吧CUDA v10.1改名成别的名字,然后把CUDA v10.0改名成CUDA v10.1,这样Tensorflow 2.0和PyTorch1.3.1能同时使用,也就是说PyTorch1.3.1要求CUDA是10.1版貌似只是在安装时检查要求版本是10.1,而实际上跑代码时用CUDA 10.0就够了,这个我试用过多次,目前还没有发现报错。

注:本文后面写的内容是基于CUDA9.0的,但步骤是仍基本适用的;另外,昨天Tensorflow 最新的版本1.13 rc2发布了: https://github.com/tensorflow/tensorflow/releases/tag/v1.13.0-rc2 里面有几个重要的让人看到就激动(^_^)的improvements:

  • TensorFlow Lite has moved from contrib to core. This means that Python modules are under tf.lite and source code is now under tensorflow/lite rather than tensorflow/contrib/lite.
  • TensorFlow GPU binaries are now built against CUDA 10 and TensorRT 5.0.
  • Support for Python3.7 on all operating systems.
  • Moved NCCL to core.

首先,Tensorflow终于支持CUDA 10了!第二,我很在乎的TensorFlow Lite终于移到core里来了!另外,Python3.7可以放心使用了,支持多个NVidia GPU卡之间通讯的NCCL也移到core里了(什么是NCCL,参见https://baijiahao.baidu.com/s?id=1581386178946489641&wfr=spider&for=pc这篇文章)。 

所以如果你打算用Tensorflow最新的版本,可以安装CUDA 10,而不是CUDA 9.x,这样可以用到最新的CUDA的特性和避免一些bug。

下面是以前写的原文:

     这个问题曾让我折腾了一天半,真是个大坑啊,反复把Tensorflow和CUDA装了卸,卸了又装,然后测试,遇到一个又一个错误,周六晚上弄到凌晨三点,周日上午继续干,终于在周日中午搞定,现在对这个问题弄得比较透彻了。

   每安装某一个Tensorflow版本时该安装什么对应版本的cuda和cudnn呢?Tensorflow没有提供明确的提示,我买的多本关于tensorflow的书里都只说作者安装的什么版本,根本没说Tensorflow版本和使用的CUDA、cuDNN版本的对应关系,网上也没找到这样的文章,所以像我这样喜欢尝鲜总是安装最新版Tensorflow 1.8 而不是书上说的版本的就得自己琢磨解决GPU版tensorflow安装后使用时出现的错误了。

    在解决tensorflow报错问题的过程中我注意到https://github.com/tensorflow/tensorflow/releases提供了Tensorflow个版本的releases notes,在里面搜索cuda,可以看到在Tensorflow 1.6版里有个大的改动:

 

Release 1.6.0

Breaking Changes

  • Prebuilt binaries are now built against CUDA 9.0 and cuDNN 7.
  • Prebuilt binaries will use AVX instructions. This may break TF on older CPUs

这表明Tensorflow1.6开始使用CUDA9.0+cuDNN7。

    另外还有一个快捷办法,通过查看tensorflow的源码build_info.py知道其使用的CUDA和cuDNN版本(我在import tensorflow出错后,根据出错信息,阅读琢磨出错的.py代码文件,跟调用关系找到的这个定义版本信息的文件,以前的老版本tensorflow似乎没有这个文件,版本信息都是写死在初始化的.py源码里,需要搜索初始化代码找到检查cuda版本地方):

   假设tensorflow安装在D:\Anaconda3\envs\tensorflow环境里,那么打开D:\Anaconda3\envs\tensorflow\Lib\site-packages\tensorflow\python\platform\build_info.py这个文件,可以看到使用的CUDA 9.0和cuDNN 7:

    msvcp_dll_name = 'msvcp140.dll'
    cudart_dll_name = 'cudart64_90.dll'
    cuda_version_number = '9.0'
    nvcuda_dll_name = 'nvcuda.dll'
    cudnn_dll_name = 'cudnn64_7.dll'
    cudnn_version_number = '7'

   这里的msvcp140.dll应该在C:\Windows\System32\下面,是通过安装vc 2005 redistribute提供的,nvcuda.dll也是在C:\Windows\System32\下面,cudart64_90.dll则是安装CUDA 9.0时产生的cudnn64_7.dll是安装cuDNN 7时产生的,任何一个文件缺失或没加入搜索路径都有可能引起tensorflow在import时报ImportError错。

   CUDA在https://developer.nvidia.com/cuda-downloads这里下载,打开页面后不要在这个页面里下载,因为这个页面下载的是CUDA9.2,版本太高了跟tensorflow1.8不匹配,而是应该后点击Legacy Releases按钮进入archive页面https://developer.nvidia.com/cuda-toolkit-archive,然后点击CUDA Tookit 9.0进入CUDA 9.0的下载页面https://developer.nvidia.com/cuda-90-download-archive,根据自己机器环境选择操作系统和版本及位数点击相应按钮做选择,注意最后一项Install Type最好选择本地可执行文件,比如Windows版的exe(local)或Linux版的runfile(local),这样在网速差的环境下对成功安装更有保障。对于Windows 64位安装环境,这里需要下载三个安装文件,一个主文件:cuda_9.0.176_win10.exe和两个patch文件:cuda_9.0.176.1_windows.exe,cuda_9.0.176.2_windows.exe。

   cuDNN在https://developer.nvidia.com/cudnn这里下载,这里需要先注册账号然后登录才能进去下载,反正NVIDIA网站做的很不友好,注册后登录还得验证邮件转来转去的晕头转向,网站找个什么东西也是很不直观,不是一般的绕,用过NVIDIA网站的恐怕都想吐槽,登录(注册后好像仍然要使用join进去,而不是login,否则老是循环要你验证邮件有效性,晕死)进去后,下载对应于cuda9.0的cudnn7.1.4文件(从https://developer.nvidia.com/rdp/cudnn-download这里下载cudnn最新版7.1.4,不要进Archived cuDNN Releases),对于Windows 64位安装环境,下载cudnn7.1.4 for cuda9.0即cudnn-9.0-windows10-x64-v7.1.zip。

     安装CUDA时,最好使用自定义安装,把Visual Studio Integration的勾选去掉,否则你机器上安装的Visual Studio版本不对或者没有安装时,下一步会报错导致你安装不下去(下面两张图是试着安装CUDA 9.1版时的截图,出错提示是一样的,所以不影响作为示例):

    这时可以退回去把Visual Studio Integration勾选去掉再安装:    

    安装CUDA 9.0的默认路径是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\,安装CUDA9.0完后,把cudnn-9.0-windows10-x64-v7.1.zip解压后,把bin,include,lib里面的文件(共三个)分别拷贝到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\下的bin,include,lib目录下即可。

      然后测试tensorflow,可以看到我本子的GeForce 940MX GPU被tensorflow添加创建为TensorFlow device,并 可以成功打印输出常量c的值,表明安装成功了:

     

     我最初不知道Tensorflow1.8和CUDA 9.0对应依赖关系,我的本子的GPU是很古老的Geforce 940MX,对它没信心,怕安装了CUDA9.0根本不能用,又查看了我的本子上的NVIDIA控制面板里的系统信息窗口里的组件信息,本子上当时安装的NVCUDA版本是8.0.0(这个版本信息其实是CUDA driver版本,而不是要安装的CUDA runtime的版本,把两者搞混了,误导了思考方向):

    另外由受书本和网上的有些文章误导跌入坑里,相信应该是安装CUDA8,于是先安装的CUDA8.0.44+cuDNN 7,结果安装GPU版Tensorflow后Import tensorflow时报错找不到文件cudart64_90.dll,把CUDA 8的cudart64_80.dll强制改名为cudart64_90.dll后,Import tensorflow又会报另外的错ImportError: DLL load falied: 找不到指定的模块,不知道是哪个模块找不到,于是我琢磨出错代码,在‪D:\Anaconda3\Lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py里加了句打印把

   mname = '.'.join((pkg, '_pywrap_tensorflow_internal')).lstrip('.')

 这里的mname打印出来,可以看到这个模块是tensorflow.python._pywrap_tensorflow_internal,可是在D:\Anaconda3\Lib\site-packages\tensorflow\python\下面有_pywrap_tensorflow_internal.pyd这个文件啊,怎么回事呢?怎么就不认识这个pyd文件呢?于是把tensorflow-gpu 1.8和CUDA 8+cuDNN7/CUDA 8+cuDNN6装了卸卸了装弄了多遍折腾到凌晨几点还是没搞定,今天早上继续,后来突然想到可能是因为Tensorflow1.8就得安装CUDA9.0,否则初始化代码检查CUDA版本失败导致_pywrap_tensorflow_internal这个模块加载不了,后来下载CUDA 9.0+cuDNN7.1,安装好后,果然tensorflow可以用了!

 

     关于安装错误的CUDA版本导致的几个错误,截图如下:

(1)找不到cudart64_90.dll:

(2) ImportError: DLL loaded failed: 找不到指定模块。找不到_pywrap_tensorflow_internal模块:

 

另外,如果运行tensorflow时报错说:CUDA driver  version is insufficient for CUDA runtime version : 

   这说明你机器上安装的CUDA driver版本比刚安装的CUDA tookit版本低(原因应是安装时没有勾选display driver之类的),解决办法是安装CUDA tookit时所用组件全部勾选(除了Visual Studio Integration),如果还不行,假如你的GPU卡是GeForce序列的,到https://www.geforce.com/drivers按你的机器的GPU卡的类型搜索对应的最新的driver,下载并安装即可,其他序列的去NVIDIA中国网页https://www.nvidia.cn/Download/index.aspx?lang=cn上按卡类型搜索最新的driver安装程序。

    通过搜索GUP卡的驱动,知道了很古老的GPU卡NVIDIA仍在提供最新的driver更新,这样就保障了我的GeForce 940MX这样的古懂卡在升级driver到最新后,也可以自由使用最新的CUDA 9.x版本,只要Tensorflow或Caffe支持!这点真是太好了!以前担心我的GPU卡太老导致玩不了比较新的GPU版tensorflow,现在暂时不用担心了!

 

     关于Tensorflow更多知识,可以访问谷歌中国官网(https://tensorflow.google.cn/)了解更多 TensorFlow 内容,也可关注 TensorFlow 官方公众号获取更多资讯。

     

 

     关于如何在Linux下安装CUDA和CUDNN,参见 我的AI之路(10)--如何在Linux下安装CUDA和CUDNN

 

 

我的AI之路(1)--前言

我的AI之路(2)--安装Fedora 28

我的AI之路(3)--安装Anaconda3 和Caffe

我的AI之路(4)--在Anaconda3 下安装Tensorflow 1.8

我的AI之路(5)--如何选择和正确安装跟Tensorflow版本对应的CUDA和cuDNN版本

我的AI之路(6)--在Anaconda3 下安装PyTorch

我的AI之路(7)--安装OpenCV3_Python 3.4.1 + Contrib以及PyCharm

我的AI之路(8)--体验用OpenCV 3的ANN进行手写数字识别及解决遇到的问题

我的AI之路(9)--使用scikit-learn

我的AI之路(10)--如何在Linux下安装CUDA和CUDNN

我的AI之路(11)--如何解决在Linux下编译OpenCV3时出现的多个错误

我的AI之路(12)--如何配置Caffe使用GPU计算并解决编译中出现的若干错误

我的AI之路(13)--解决编译gcc/g++源码过程中出现的错误

我的AI之路(14)--Caffe example:使用MNIST数据集训练和测试LeNet-5模型

我的AI之路(15)--Linux下编译OpenCV3的最新版OpenCV3.4.1及错误解决

我的AI之路(16)--云服务器上安装和调试基于Tensorflow 1.10.1的训练环境

我的AI之路(17)--Tensorflow和Caffe的API及Guide

我的AI之路(18)--Tensorflow的模型安装之object_detection

我的AI之路(19)--如何在Windows下安装pycocotools PythonAPI

我的AI之路(20)--用Tensorflow object_detection跑raccoon数据集

我的AI之路(21)--用Tensorflow object_detection跑PASCAL VOC 2012数据集

我的AI之路(22)--使用Object_Detection_Tensorflow_API

我的AI之路(23)--在Windows下编译Bazel和使用Bazel编译tensorflow

 

  • 49
    点赞
  • 209
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 132
    评论
### 回答1: 首先,要手动安装Jetson TX2中的CUDACuDNN,需要按照以下步骤进行操作: 1. 下载CUDA Toolkit: - 首先,通过NVIDIA官方网站下载适用于Jetson TX2的CUDA Toolkit。 - 在下载页面上选择与您的Jetson TX2版本对应CUDA Toolkit版本,并下载该版本的.run文件。 2. 安装CUDA Toolkit: - 将下载的CUDA Toolkit文件拷贝到Jetson TX2设备上。 - 打开终端,进入到CUDA Toolkit文件所在的目录。 - 运行以下命令,以设置安装选项并启动安装过程: ``` chmod +x cuda_<version>_linux.run sudo ./cuda_<version>_linux.run ``` - 按照安装向导的指示进行操作,接受许可协议并选择相应的安装选项。 - 完成安装后,根据提示将必要的环境变量添加到系统配置文件中(如~/.bashrc)。 3. 下载CuDNN库文件: - 访问NVIDIA官方网站并下载与安装CUDA Toolkit版本对应CuDNN库文件。 - 将下载的CuDNN库文件拷贝到Jetson TX2设备上。 4. 安装CuDNN库文件: - 将CuDNN库文件解压到一个指定目录中,例如'/usr/local/cuda/'。 - 打开终端,进入CuDNN库文件所在的目录。 - 运行以下命令以将CuDNN库文件拷贝到CUDA Toolkit的安装目录中: ``` sudo cp cuda/include/cudnn.h /usr/local/cuda/include/ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn* ``` 5. 配置环境变量: - 打开终端,编辑~/.bashrc文件: ``` nano ~/.bashrc ``` - 在文件末尾添加以下内容,并保存退出: ``` export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64 export CUDA_HOME=/usr/local/cuda ``` - 运行以下命令使环境变量配置生效: ``` source ~/.bashrc ``` 完成以上步骤后,您应该成功地手动安装了Jetson TX2中的CUDACuDNN。您可以通过在终端上运行`nvcc -V`来验证CUDA是否正确安装,并通过运行`cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2`来验证CuDNN是否正确安装。 ### 回答2: 首先,Jetson TX2是一款高性能边缘计算设备,用于深度学习、AI和计算机视觉等领域。CUDAcuDNN是用于加速计算的关键软件,在Jetson TX2上手动安装这两个软件需要以下步骤: 1. 下载CUDAcuDNN:首先,从NVIDIA官方网站下载适用于Jetson TX2的CUDAcuDNN版本。确保选择与Jetson TX2硬件兼容的版本。 2. 安装CUDA:将下载的CUDA安装包复制到Jetson TX2上,并解压缩文件。然后,运行安装脚本来设置CUDA环境变量并安装CUDA。 3. 配置环境变量:为了正确地配置CUDAcuDNN,需要设置环境变量。在终端中输入以下命令以打开.bashrc文件: ``` sudo nano ~/.bashrc ``` 然后,在文件的末尾添加以下行: ``` export CUDA_HOME=/usr/local/cuda export PATH=/usr/local/cuda/bin:${PATH} export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH} ``` 保存并关闭文件,然后运行以下命令以使更改生效: ``` source ~/.bashrc ``` 4. 安装cuDNN:将下载的cuDNN安装包复制到Jetson TX2上,并解压缩文件。然后,将cuDNN库文件复制到CUDA安装目录中。使用以下命令完成此操作: ``` sudo cp cuda/include/cudnn.h /usr/local/cuda/include sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn* ``` 5. 验证安装:在终端中运行以下命令以验证CUDAcuDNN是否安装成功: ``` nvcc -V ``` 如果输出中显示了CUDA版本信息,则说明CUDA安装成功。然后,可以使用深度学习框架(如TensorFlow,PyTorch等)来验证cuDNN安装。 这些是手动安装CUDAcuDNN的基本步骤。确保按照官方文档和说明进行操作,并根据自己的需求进行相应的配置和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 132
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arnold-FY-Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值