nvidia-smi 中的CUDA 版本与 nvcc不一致

1 问题

为何nvidia-smi 中的CUDA 版本与 nvcc不一致,nvidia-smi的结果显示CUDA版本是10.0,而从nvcc-V命令来看,却是CUDA 9.0。

nvidia-smi 中的CUDA 版本与 nvcc不一致

2 分析

其实是因为CUDA 有两种API,分别是 运行时 API 和 驱动API,即所谓的 Runtime API 与 Driver API。

nvidia-smi 的结果除了有 GPU 驱动版本型号,还有 CUDA Driver API的型号,这里是 10.0。

而nvcc的结果是对应 CUDA Runtime API:

3 补充说明

在安装CUDA 时候会安装3大组件,分别是 NVIDIA 驱动、toolkit 和 samples。NVIDIA 驱动是用来控制 GPU 硬件,toolkit 里面包括nvcc编译器等,samples或者说SDK 里面包括很多样例程序包括查询设备、带宽测试等等。上面说的 CUDA Driver API是依赖于 NVIDIA 驱动 安装的,而CUDA Runtime API 是通过CUDA toolkit 安装的。