【深度学习】CUDA —— nvcc 和 nvidia-smi 显示的版本不一致?
最近对想学习深度学习 图网络。
nvcc --version 和 nvidia-smi 显示出来的CUDA版本不一致,其中前者显示的版本是10.2,而后者是11.0,但是深度学习相关的程序是能正常跑的,期间GPU也确实有在使用(通过nvidia-smi可以看出)。
记录一下!
nvcc --version 和 nvidia-smi 这两个命令在功能和用途上有显著的区别:
nvcc --version:
- 功能:这个命令用于显示 NVIDIA CUDA 编译器(NVCC)的版本信息。
- 用途:它主要用于确定安装在系统上的 CUDA 工具集的版本。这对于开发 CUDA 应用程序非常重要,因为不同版本的 CUDA 可能支持不同的 NVIDIA 显卡和特性。
- 输出信息:包括 CUDA 编译器的版本号、构建日期和其他相关信息。
nvidia-smi:
- 功能:这个命令是 NVIDIA 系统管理接口工具,用于提供 NVIDIA GPU 的实时状态和监控信息。
- 用途:它主要用于监控和管理 NVIDIA GPU 的性能和健康状况,如温度、使用率、内存使用情况等。
- 输出信息:包括 GPU 型号、使用率、温度、功耗、内存信息、驱动版本和正在 GPU 上运行的进程。
总结来说,nvcc --version 更多用于 CUDA 开发环境的版本确认,而 nvidia-smi 用于实时监控和管理 NVIDIA GPU 的运行状态。
如果在同一台电脑上,nvcc --version 和 nvidia-smi 显示的 CUDA 版本不一致,这通常是由以下几个原因造成的:
不同的版本来源:
- nvcc --version 显示的是 CUDA 编译工具(NVCC)的版本,它与 CUDA 开发工具包(SDK)相关。
- nvidia-smi 显示的是 GPU 驱动支持的 CUDA 版本。这个版本指的是 NVIDIA 驱动能够支持的最高 CUDA 版本。
多个 CUDA 版本安装:
- 在同一台电脑上可能安装了多个 CUDA 版本。nvcc 可能指向一个特定版本的 CUDA,而 NVIDIA 驱动可能支持一个不同(通常是更高)的 CUDA 版本。
- 环境变量设置(如 PATH 和 LD_LIBRARY_PATH)可能导致 nvcc 命令调用的是非预期的 CUDA 版本。
驱动和CUDA开发包不同步更新:
- 有时候,系统的 NVIDIA 驱动可能被更新,而 CUDA 开发工具包没有相应地更新,或者反过来,这可能导致版本不一致。
- 在进行系统更新或安装新的 GPU 驱动时,可能会遇到这种情况。
通常,driver api的版本能向下兼容runtime api的版本,即 nvidia-smi 显示的版本大于nvcc --version 的版本通常不会出现大问题。
在安装CUDA 时候会安装3大组件,分别是 NVIDIA 驱动、toolkit 和 samples。NVIDIA 驱动是用来控制 GPU 硬件,toolkit 里面包括nvcc编译器等,samples或者说SDK 里面包括很多样例程序包括查询设备、带宽测试等等。上面说的 CUDA Driver API是依赖于 NVIDIA 驱动 安装的,而CUDA Runtime API 是通过CUDA toolkit 安装的。
如何选择与CUDA版本匹配的Pytorch
那么 nvcc --version 与 nvidia-smi 的版本不一致的情况下,有些朋友可能就会懵了:我该如何选择与CUDA版本匹配的Pytorch呢?(炼个丹也太南了吧~!)
其实,只要上去Pytorch官网瞄瞄,细心的你应该能够发现在命令中指定CUDA版本时,用的是 cudatoolkit,而 nvcc --version 显示的版本就是通过CUDA Toolkit Installer在安装时决定的,因此,我们应该选择与 nvcc --version 对应的CUDA版本匹配的Pytorch。
参考链接:
https://blog.csdn.net/TonyNotes/article/details/135946980