【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?

一、如何查看CUDA版本?

1.1 查看runtime版本的CUDA

(1)nvcc -V或nvcc --version

【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?_第1张图片

(2)在CUDA的include文件夹中找到cuda.h文件

打开后搜索version。

【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?_第2张图片

上面这张图的cuda路径是我在安装的时候自定义的,不要完全参考。 

【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?_第3张图片

(3)查看conda指令安装的CUDA版本

用下面的代码去查看CUDA和cudnn版本。

import torch
print(torch.__version__)

print(torch.version.cuda)
print(torch.backends.cudnn.version())

 下面是我在虚拟环境1和2上运行的结果,有一个结果cuda版本是10.2,和上面第(1)、(2)中查看的cuda版本不一样,说明用conda命令安装的cuda和官方安装包安装的cuda不一样(具体原因详见本文第三部分)。

【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?_第4张图片

【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?_第5张图片

1.2 查看driver版本的CUDA

(1)nvidia-smi

在cmd命令窗口中执行nvidia-smi,显示的CUDA-Version其实是CUDA驱动的版本(CUDA driver)。

【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?_第6张图片

 (2)NVIDIA控制面板

在NVIDIA控制面板——系统信息——组件信息中看到的CUDA版本,其实也是驱动版本。

【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?_第7张图片

二、两种不同的CUDA(驱动版和运行库版)

在cmd命令窗口中执行nvidia-smi,显示的CUDA-Version其实是CUDA驱动的版本(CUDA driver)。

【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?_第8张图片

在NVIDIA控制面板——系统信息——组件信息中看到的CUDA版本,其实也是驱动版本。

【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?_第9张图片

而执行nvcc -V命令显示的CUDA版本,是CUDA运行库(CUDA runtime)的版本。

【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?_第10张图片

想要正常利用GPU运行TensorFlow、PyTorch、Keras环境, 两种CUDA都要正确安装,版本需要符合兼容要求。

一般来说,驱动版本越新越好;而运行库版本,如果需要根据开源项目进行开发,则需要参考对方指定的CUDA版本,一般来说不要太高;但是注意一点,30系的显卡只能运行CUDA11以上版本。

三、Conda指令和NVIDIA安装包有何区别?

想要安装CUDA RUNTIME,有两种方式:1、在英伟达官网下载CUDA Toolkit Installer,借此安装;2、在Anaconda环境中使用类似【conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch】的包括cudatoolkit的命令安装。

第一种方式安装的cuda,包括的模块更全面。

第二种方式安装的cuda,用来训练模型,基本够用,但是要用到扩展功能就不行了。

详见:Pytorch 使用不同版本的 cuda - yhjoker - 博客园

  通过 Anaconda 安装的应用程序包位于安装目录下的 /pkg 文件夹中,如笔者的目录即为 /home/xxx/anaconda3/pkgs/ ,用户可以在其中查看 conda 安装的 cudatoolkit 的内容,如下图所示。可以看到 conda 安装的 cudatoolkit 中主要包含的是支持已经编译好的 CUDA 程序运行的相关的动态链接库。( Ubuntu 环境下 )

  在大多数情况下,上述 cudatoolkit 是可以满足 Pytorch 等框架的使用需求的。但对于一些特殊需求,如需要为 Pytorch 框架添加 CUDA 相关的拓展时( Custom C++ and CUDA Extensions ),需要对编写的 CUDA 相关的程序进行编译等操作,则需安装完整的 Nvidia 官方提供的 CUDA Toolkit。

四、如何查看cudnn的版本

4.1 利用torch包的命令

详见本文第一部分的第(3)部分。

4.2 利用cudnn的头文件记录的信息

在cuda安装文件夹的include目录下找到cudnn_version.h文件。

【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?_第11张图片

 随便用一个文本浏览器打开后,可以看出我的机器上用英伟达官方安装包安装的cudnn版本是8.0.4。

【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?_第12张图片

4.3 conda的cudatoolkit指令捆绑了cudnn

参考:如何用正确姿势安装 PyTorch(With CPU or GPU-CUDA-cuDNN) | 一只因特马

我也不知道为啥这么多教程都在建议单独安装cudnn,从上面的4.1、4.2可以看出,我用conda指令安装的cudnn和用NVIDIA官网下载的cudnn库安装的,版本有所不同,所以它们是不同来源的cudnn。

因此结论明确:利用类似【conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch】指令安装的CUDA,本身就已经捆绑了cudnn,不需单独安装了。

五、如何为环境指定特定版本CUDA呢?

同一机器上有多个CUDA Runtime,如何为环境指定特定版本CUDA呢?

下面分两种情况讨论。

情况一:虚拟环境中已配置CUDA

假如你的虚拟环境中用Conda指令安装过CUDA,那么你在这个环境中训练模型时就默认用这个CUDA引擎。

这时候,如果你想要用另一个版本的CUDA,再用conda指令卸载重装CUDA toolkit即可;而如果你想要用自己当时用NVIDIA官网提供的安装包对应的CUDA,就卸载CUDA toolkit,即可。

情况二:虚拟环境中未配置CUDA

虚拟环境中未配置CUDA,但是机器曾经安装过两个CUDA版本(比如CUDA10和CUDA11)。

那么你需要更改一下系统变量CUDA_PATH和PATH变量中不同版本CUDA的优先级。

由于本人机器没有安装两种CUDA,没法演示,实在抱歉。

【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?_第13张图片

【Windows】怎么查看CUDA版本?Conda命令安装和NVIDIA官网安装包安装的CUDA有何区别?nvcc -V和nvidia-smi获得的CUDA版本有何区别?如何指定CUDA版本?_第14张图片

你可能感兴趣的:(机器学习,python)