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

时间:2018-11-22 00:44:01

标签: cuda

我对运行which nvccnvidia-smi所显示的不同CUDA版本感到非常困惑。

我在Ubuntu 16.04上同时安装了cuda9.2和cuda10。现在,我将PATH设置为指向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 |

那么我是按照which nvcc的建议使用cuda9.2,还是我按照nvidia-smi的建议使用cuda10?

saw this answer,但是它并不能直接解决这个混乱,它只是要求我们重新安装cudatoolkit,而我已经做到了。

4 个答案:

答案 0 :(得分:29)

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

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

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

无论如何,(已安装的)驱动程序API版本可能并不总是与(已安装的)运行时API版本匹配,尤其是如果您独立于安装CUDA(即CUDA工具包)安装GPU驱动程序。

nvidia-smi工具由GPU驱动程序安装程序安装,并且通常具有GPU驱动程序,而不是CUDA工具包安装程序安装的任何东西。

最近(在Linux上介于410.48和410.73之间的驱动程序版本),NVIDIA的权力决定在nvidia-smi的输出中添加由驱动程序安装的CUDA驱动程序API版本的报告。

这与已安装的CUDA运行时版本无关。

nvcc(与CUDA工具包一起安装的CUDA编译器驱动程序工具)将始终报告其旨在识别的CUDA运行时版本。对于安装什么驱动程序版本,甚至安装了GPU驱动程序,它一无所知。

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

答案 1 :(得分:0)

nvcc位于CUDA bin文件夹中-这样检查CUDA bin文件夹是否已添加到您的$PATH中。

具体来说,请确保您已执行CUDA安装后操作(例如,从here开始):

  1. 将CUDA Bin添加到$PATH(即,将以下行添加到~/.bashrc
export PATH=/usr/local/cuda-10.1/bin:/usr/local/cuda-10.1/NsightCompute-2019.1${PATH:+:${PATH}}
  

PS。确保上面的以下两个路径首先存在:/usr/local/cuda-10.1/bin/usr/local/cuda-10.1/NsightCompute-2019.1(NsightCompute路径的结尾可能略有不同,具体取决于安装的Nsight计算版本...

  1. 更新$LD_LIBRARY_PATH(即,将以下行添加到您的~/bashrc)。
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64\
                         ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

此后,nvccnvidia-smi(或nvtop)都报告相同版本的CUDA ...

答案 2 :(得分:0)

如果您使用的是cuda 10.2:

export PATH=/usr/local/cuda-10.2/bin:/opt/nvidia/nsight-compute/2019.5.0${PATH:+:${PATH}}

可能会有所帮助,因为当我检查时,cuda-10.2中没有用于nsight-compute的目录。 我不确定这是否只是我的问题,否则他们为什么不在官方文档中提及它?

答案 3 :(得分:-1)

我在 nvcc (9.1) 和 nvidia-smi (11.2) 显示的 CUDA 版本之间遇到了同样的问题。 就我而言,问题是由于 /usr/bin 中的 nvcc 实例以及 /usr/local/cuda/bin 的 nvcc 实例造成的;因为 /usr/bin 在我的 PATH 环境中首先出现,所以我对“nvcc”的调用使用了第一个 nvcc 实例(因此显示了旧的 CUDA 版本)。 因此,我通过修改 PATH env var 解决了这个问题。然后命令“nvcc -V”正确显示了 11.2 CUDA 版本。 (所以只是nvcc显示问题,不是CUDA安装问题)