彻底搞清楚CUDA和cuDNN版本问题 |
您所在的位置:网站首页 › 7005是什么意思 › 彻底搞清楚CUDA和cuDNN版本问题 |
彻底搞清楚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. CUDACUDA的版本傻傻分不清楚?请看电子包浆一图流: 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的版本号。如下图第四行的末尾: 它的输出不是当前CUDA的版本号!!!而是当前torch支持的最高CUDA版本!!! 上源码: torch/cudnn/__init__.py 第八十行有源码(下图),但仅仅是一个封装了一个api,不知道输出究竟是什么逻辑。注意94行还有一个我们常用的is_available()。 虽然没有找到可读的源码,但我们已经可以得出一些有效的结论: ##################################################### ############ 以下的命令是反映机器上真实环境的 ############ ##################################################### $ 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 |