nvidia-smi & nvcc -V

首先需明白CUDA有runtime api和driver api,两者都有对应的CUDA版本,nvcc -V显示前者对应的CUDA版本,而nvidia-smi显示后者对应的CUDA版本。

通常,driver api版本能向下兼容runtime api的版本,即nvidia-smi显示的版本大于nvcc -V的版本通常不会出现大问题。因此nvidia-smi显示的版本与所安装CUDA版本不一致是正常的。

而平常我们做深度学习所用的是CUDA的runtime api版本,因此以nvcc -V为准,这里版本如果不一致就容易发生问题。其原因主要是本机存在多个CUDA,没有正确映射造成。

问题解决

查询现在的映射关系,可通过如下命令:

1
stat /usr/bin/nvcc

要是映射错误,需重新建立映射:

① 删除原来映射

1
sudo rm -rf /usr/bin/nvcc

② 建立新的软链接指向安装的CUDA版本

1
sudo ln -s /usr/local/cuda/bin/nvcc /usr/bin/nvcc