背景
为何nvidia-smi
中的CUDA 版本与 nvcc
不一致:
从上述结果可以看出,nvidia-smi
的结果显示CUDA
版本是10.0,而从nvcc
命令来看,却是CUDA 9.0
分析
其实是因为CUDA 有两种API,分别是 运行时 API 和 驱动API,即所谓的 Runtime API 与 Driver API。
nvidia-smi
的结果除了有 GPU 驱动版本型号,还有 CUDA Driver API的型号,这里是 10.0。
而nvcc
的结果是对应 CUDA Runtime API:
补充说明
在安装CUDA 时候会安装3大组件,分别是 NVIDIA 驱动、toolkit 和 samples。NVIDIA 驱动是用来控制 GPU 硬件,toolkit 里面包括nvcc编译器等,samples或者说SDK 里面包括很多样例程序包括查询设备、带宽测试等等。上面说的 CUDA Driver API是依赖于 NVIDIA 驱动 安装的,而CUDA Runtime API 是通过CUDA toolkit 安装的。