CUDA 有 2 个主要 API:运行时 API 和驱动程序 API。两者都有对应的版本(例如8.0、9.0等)
对驱动程序 API 的必要支持(例如libcuda.so
在 Linux 上)由 GPU 驱动程序安装程序安装。
对运行时 API 的必要支持(例如libcudart.so
在Linux上,也nvcc
)由 CUDA 工具包安装程序(其中可能还捆绑有 GPU 驱动程序安装程序)安装。
无论如何,(安装的)驱动程序 API 版本可能并不总是与(安装的)运行时 API 版本匹配,特别是如果您独立于安装 CUDA(即 CUDA 工具包)安装 GPU 驱动程序。
The nvidia-smi
工具由 GPU 驱动程序安装程序安装,并且通常包含 GPU 驱动程序,而不是 CUDA 工具包安装程序安装的任何内容。
最近(Linux 上的驱动程序版本介于 410.48 和 410.73 之间)NVIDIA 的掌权者决定在输出中添加驱动程序安装的 CUDA 驱动程序 API 版本的报告nvidia-smi
.
这与安装的 CUDA 运行时版本没有关系。
nvcc
与 CUDA 工具包一起安装的 CUDA 编译器驱动程序工具将始终报告其构建时可识别的 CUDA 运行时版本。它不知道安装了什么驱动程序版本,甚至不知道是否安装了 GPU 驱动程序。
因此,根据设计,这两个数字不一定匹配,因为它们反映了两个不同的事物。
如果你想知道为什么nvcc -V
显示您不期望的 CUDA 版本(例如,它显示的版本不是您认为已安装的版本),或者根本不显示任何内容(就版本而言),这可能是因为您没有遵循 中的强制说明步骤 7(在 CUDA 11 之前)(或 CUDA 11 Linux 安装指南中的步骤 6)cuda Linux 安装指南 https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions
请注意,虽然这个问题主要考虑的是 linux,但相同的概念也适用于windowsCUDA 安装。该驱动程序有一个与之关联的 CUDA 驱动程序版本(可以使用以下命令进行查询)nvidia-smi
, 例如)。 CUDA 运行时还有一个与之关联的 CUDA 运行时版本。两者不一定在所有情况下都匹配。
大多数情况下,如果nvidia-smi
报告的 CUDA 版本在数字上等于或高于报告的版本nvcc -V
,这不值得担心。这是 CUDA 中定义的兼容性路径(较新的驱动程序/驱动程序 API 支持“较旧的”CUDA 工具包/运行时 API)。例如如果nvidia-smi
报告 CUDA 10.2,以及nvcc -V
报告 CUDA 10.1,这通常不需要担心。它应该可以正常工作,并不一定意味着您“在打算安装 CUDA 10.1 时实际上安装了 CUDA 10.2”
If nvcc
命令根本不报告任何内容(例如Command 'nvcc' not found...
)或者如果它报告意外的 CUDA 版本,这也可能是由于 CUDA 安装不正确,即未正确执行上述强制步骤。您可以使用 Linux 实用程序来开始解决这个问题,例如find
or locate
(请使用手册页了解如何操作)找到您的nvcc
可执行的。假设只有一个,则可以使用它的路径来修复您的 PATH 环境变量。这CUDA Linux 安装指南 https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#mandatory-post还解释了如何设置它。您可能需要调整 PATH 变量中的 CUDA 版本以匹配您所需/安装的实际 CUDA 版本。
同样,当使用 docker 时,nvidia-smi
命令通常会报告主机上安装的驱动程序版本,而其他版本方法如nvcc --version
将报告 docker 容器内安装的 CUDA 版本。
同样,如果您使用过 Anaconda 等其他 CUDA“工具包”安装方法,您可能会发现 Anaconda 指示的版本与 Anaconda 指示的版本不“匹配”nvidia-smi
。然而,上述评论仍然适用。 Anaconda 安装的旧版 CUDA 工具包可以与 Anaconda 报告的新版本一起使用nvidia-smi
,以及事实nvidia-smi
报告比 Anaconda 安装的版本更新/更高的 CUDA 版本并不意味着您有安装问题。
Here https://stackoverflow.com/questions/70048525/why-does-python-show-a-wrong-cuda-version是另一个涵盖类似领域的问题。上述处理并不以任何方式表明该答案仅适用于您有意或无意安装了多个 CUDA 版本的情况。情况自行显现任何时候安装 CUDA。报告的版本nvcc
and nvidia-smi
可能不匹配,那就是expected行为在大多数情况下都很正常。