关于查看CUDA版本方式的区别

1,147 阅读2分钟

引言

  • 前面文章写过一个如何查看CUDA安装成功的指令nvcc -V ,会显示出来CUDA版本号,然后问题就来啦,为啥和指令nvidia-smi显示的不同呢

经过多篇参考文章查阅后得到以下信息:

  • 以下引用解释个人觉得比较通俗易懂
  • CUDA有两个主要的API:runtime(运行时) API和driver API。这两个API都有对应的CUDA版本
  • 用于支持driver API的必要文件(如libcuda.so)是由GPU driver installer安装的。nvidia-smi就属于这一类API。
  • 用于支持runtime API的必要文件(如libcudart.so以及nvcc)是由CUDA Toolkit installer安装的。(CUDA Toolkit Installer有时可能会集成了GPU driver Installer,偶尔会有包含关系)。nvcc是与CUDA Toolkit一起安装的CUDA compiler-driver tool,它只知道它自身构建时的CUDA runtime版本。它不知道安装了什么版本的GPU driver,甚至不知道是否安装了GPU driver。
  • 综上,如果driver API和runtime API的CUDA版本不一致可能是因为你使用的是单独的GPU driver installer,而不是CUDA Toolkit installer里的GPU driver installer。
  • runtime和driver API区别(个人理解)
    • runtime和driver 的API在很多使用情况类似,但是二者属于互斥的,因此你不能混合使用这两个API。在开发过程中,你只能选择其中一种API。更简单理解二者的区别就是:runtime是更高级的封装,就像pyton相对于C是让开发人员用起来更方便,而driver API更接近底层,速度可能会更快。
  • 什么意思呢?(个人理解)
    • 也就是说driver 与runtime并不是一一对应的,CUDA Toolkit本质上只是一个工具包,NVIDIA显卡驱动和CUDA Toolkit本身是不具有捆绑关系的,也并不一一对应,而离线安装的CUDA Toolkit会默认携带与之匹配的最新的驱动程序,所以就容易搞混两者的关系

补充两者之间的联系

  • nvidia-smi上方显示的CUDA Vision版本号,表示此时系统所支持的CUDA最大版本为11.4
  • nvcc -V表示此时系统中所支持的cuda版本号,是10.2
  • 一般情况下,nvcc -V的版本号是小于nvidia-smi所显示的cuda版本信息的。

补充使用文件查看查看CUDA 版本的方法

  • 在命令行使用cat命令查看CUDA的version.txt文件,可以查看CUDA版本。
cat /usr/local/cuda/version.txt

参考资料

参考资料1

参考资料2

参考资料3