彻底搞清楚CUDA和cuDNN版本问题

您所在的位置:网站首页 7005是什么意思 彻底搞清楚CUDA和cuDNN版本问题

彻底搞清楚CUDA和cuDNN版本问题

2024-06-09 08:33| 来源: 网络整理| 查看: 265

彻底搞清楚CUDA和cuDNN版本问题 1. 缘起

我的机器上以下三条指令输出的版本不相同。

nvcc -V # 这个输出11.7 nvidia-smi # 右上角显示12.3 import torch; torch.version.cuda # 这个输出12.1

我想以此为契机,彻底搞清楚CUDA、cuDNN和torch之间的关系。

环境:

Ubuntu 22.04

torch==2.1.2

2. CUDA

CUDA的版本傻傻分不清楚?请看电子包浆一图流:

在这里插入图片描述

Driver是唯一能驱动GPU的,一般N卡都自带。它虽然也叫CUDA,但深度学习项目中所说的CUDA不是它。

Runtime是Driver的进一步封装,API更简洁。一般需要自己安装。它就是我们在深度学习项目中所说的CUDA,因为Runtime是torch+cu版本的必要依赖。

ps:其实这张图画得有问题。CUDA Application不能同时用Runtime和Driver的API,两者是互斥的。

3. 各命令的区别 1. nvidia-smi

这个命令是CUDA Driver的组件,也就是说基本所有有N卡的机器都能使用这个命令。

请添加图片描述

注意,nvidia-smi 不可查询CUDA版本!!!这张图最上面的Driver Version是实际的版本号,但CUDA Version不是实际的版本号,而是当前Driver支持的最高CUDA版本。CUDA向下兼容,你的CUDA必须要小于等于这个版本号。

这里贴个nvidia-smi 命令的详细用法

2. nvcc -V

很简单,nvcc是CUDA Runtime的编译器。输出的版本号就是机器上CUDA Runtime的版本号。如下图第四行的末尾:

请添加图片描述

3. torch.version.cuda

它的输出不是当前CUDA的版本号!!!而是当前torch支持的最高CUDA版本!!!

上源码: 请添加图片描述 源码里的torch.version 都是用字符串写定的,根本没有去检查CUDA版本。

4. torch.backends.cudnn.version()

torch/cudnn/__init__.py 第八十行有源码(下图),但仅仅是一个封装了一个api,不知道输出究竟是什么逻辑。注意94行还有一个我们常用的is_available()。请添加图片描述 再找__cudnn.version是怎么来的(下图)。第27行显示是_cudnn.getVersionInt(),注意到第十行,找到torch._C的目录(记得is_available()吗,同样是这个目录)。请添加图片描述 打开torch/_C全部是python存根。__init__.pyi里没有getVersionInt() ,有两个常量:_has_cuda和_has_cudnn,只规定了bool类型。torch/_C中存在_cudnn.pyi,如下图:请添加图片描述 第5行所写的torch/csrc是空的。到这线索就断了。

结论

虽然没有找到可读的源码,但我们已经可以得出一些有效的结论:

##################################################### ############ 以下的命令是反映机器上真实环境的 ############ ##################################################### $ nvcc -V # 查询CUDA Runtime版本 nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2023 NVIDIA Corporation Built on Mon_Apr__3_17:16:06_PDT_2023 Cuda compilation tools, release 12.1, V12.1.105 Build cuda_12.1.r12.1/compiler.32688072_0 >>> torch.backends.cudnn.is_available() # 查询cuDNN是否可用 True >>> torch.backends.cudnn.version() # cudnn的版本(输出代表8.9.02版本) 8902 ####################################################################### ############ 以下命令输出只提示版本对应的关系,不代表机器上真实环境 ############ ####################################################################### $ nvidia-smi # 输出省略 >>> torch.version.cuda '12.1'


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3