nvcc和NVIDIA smi显示的不同CUDA版本

nvcc和NVIDIA smi显示的不同CUDA版本,cuda,Cuda,我对运行哪个nvcc和nvidia smi显示的不同CUDA版本感到非常困惑 我的ubuntu 16.04上安装了cuda9.2和cuda10。现在我将路径设置为指向cuda9.2。所以当我跑步时: $ which nvcc /usr/local/cuda-9.2/bin/nvcc 然而,当我跑的时候 $ nvidia-smi Wed Nov 21 19:41:32 2018 +-------------------------------------------------

我对运行
哪个nvcc
nvidia smi
显示的不同CUDA版本感到非常困惑

我的ubuntu 16.04上安装了cuda9.2和cuda10。现在我将路径设置为指向cuda9.2。所以当我跑步时:

 $ which nvcc
 /usr/local/cuda-9.2/bin/nvcc
然而,当我跑的时候

$ nvidia-smi
Wed Nov 21 19:41:32 2018       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.72       Driver Version: 410.72       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 106...  Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   53C    P0    26W /  N/A |    379MiB /  6078MiB |      2%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1324      G   /usr/lib/xorg/Xorg                           225MiB |
|    0      2844      G   compiz                                       146MiB |
|    0     15550      G   /usr/lib/firefox/firefox                       1MiB |
|    0     19992      G   /usr/lib/firefox/firefox                       1MiB |
|    0     23605      G   /usr/lib/firefox/firefox                       1MiB |
那么,我是按照nvcc的建议使用cuda9.2,还是按照nvidia smi的建议使用cuda10


我知道,但是它没有直接回答这个困惑,它只是要求我们重新安装cudatoolkit,我已经安装了。

CUDA有两个主要API,运行时和驱动程序API。两者都有相应的版本(例如8.0、9.0等)

对驱动程序API的必要支持(例如linux上的libcuda.so)由GPU驱动程序安装程序安装

运行时API的必要支持(例如linux上的libcudart.so,以及
nvcc
)由CUDA toolkit安装程序安装(其中可能还捆绑了GPU驱动程序安装程序)

在任何情况下,(已安装的)驱动程序API版本可能并不总是与(已安装的)运行时API版本相匹配,尤其是在独立于安装CUDA(即CUDA工具包)安装GPU驱动程序的情况下

nvidia smi工具由GPU驱动程序安装程序安装,通常可以看到GPU驱动程序,而不是CUDA toolkit安装程序安装的任何东西

最近(linux上的410.48和410.73驱动程序版本之间),NVIDIA的电源决定在
NVIDIA smi
的输出中添加驱动程序安装的CUDA驱动程序API版本的报告

这与已安装的CUDA运行时版本没有连接

随CUDA工具包一起安装的CUDA编译器驱动程序工具
nvcc
,将始终报告其构建目的是识别的CUDA运行时版本。它不知道安装了什么驱动程序版本,甚至不知道是否安装了GPU驱动程序

因此,根据设计,这两个数字不一定匹配,因为它们反映了两个不同的事物

如果您想知道为什么
nvcc-V
会显示您不期望的CUDA版本(例如,它显示的是您认为安装的版本以外的版本)或根本不显示任何内容,就版本而言,这可能是因为您没有遵循步骤7中的强制性说明(在CUDA 11之前)(或CUDA 11 linux安装指南中的步骤6)

请注意,尽管这个问题主要针对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”

如果
nvcc
命令根本不报告任何内容(例如
命令“nvcc”未找到…
)或者,如果报告了意外的CUDA版本,这也可能是由于CUDA安装不正确所致,即上面提到的强制步骤没有正确执行。您可以使用linux实用程序,如
find
locate
(请使用手册页了解如何操作)查找您的
nvcc
可执行文件。假设只有一个可执行文件,则可使用其路径修复path环境变量。还解释了如何设置此变量。您可能需要调整path变量中的CUDA版本,以匹配所需/安装的实际CUDA版本

类似地,当使用docker时,
nvidia smi
命令通常会报告安装在基础计算机上的驱动程序版本,而其他版本方法,如
nvcc--version
会报告安装在docker容器内的CUDA版本


同样,如果您对CUDA“toolkit”使用了另一种安装方法,如Anaconda,您可能会发现Anaconda指示的版本不“匹配”
nvidia smi
指示的版本。但是上述注释仍然适用。Anaconda安装的旧CUDA工具包可以与
nvidia smi
报告的新版本一起使用,并且
nvidia smi
报告的CUDA版本比Anaconda安装的版本更新/更高并不意味着您拥有instal问题。

CUDA有两个主要API,运行时和驱动程序API。它们都有相应的版本(例如8.0、9.0等)

对驱动程序API的必要支持(例如linux上的libcuda.so)由GPU驱动程序安装程序安装

运行时API的必要支持(例如linux上的libcudart.so,以及
nvcc
)由CUDA toolkit安装程序安装(其中可能还捆绑了GPU驱动程序安装程序)

在任何情况下,(已安装的)驱动程序API版本可能并不总是与(已安装的)运行时API版本相匹配,尤其是在独立于安装CUDA(即CUDA工具包)安装GPU驱动程序的情况下

nvidia smi工具由GPU驱动程序安装程序安装,通常可以看到GPU驱动程序,而不是CUDA toolkit安装程序安装的任何东西

最近(linux上的410.48和410.73驱动程序版本之间)NVIDIA的电源决定添加CUDA驱动程序API安装版本的报告
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64\
                         ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export PATH=/usr/local/cuda-10.2/bin:/opt/nvidia/nsight-compute/2019.5.0${PATH:+:${PATH}}