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}}