Nvidia显卡驱动与Cuda关系,Cuda的driver API 和runtime API

Total

从今年年初反复安装多次Ubuntu+Win双系统,并配置深度学习环境,对Nvidia显卡驱动与Cuda关系认识应该更加清晰。

在配置好的环境中使用nvidia-smi和nvcc -V两个命令都可以查看所谓的cuda版本,但是经常是可以发现二者是不同的。比如我目前的版本, nvidia-smi显示cuda version-11.5,nvcc -V显示cuda version-11.0。

Nvidia显卡驱动与Cuda关系

首先还是先说,Nvidia显卡驱动与Cuda关系。

总的来讲,Cuda是NVIDIA推出的用于自家GPU的并行计算框架,也就是说CUDA只能在NVIDIA的GPU上运行,我们安装Cuda时有两种安装方式,在线安装和离线安装,我一般使用在线安装deb(network),两种安装方式在形式上区别之外,离线安装的CUDA工具包会默认携带与之匹配特定的驱动程序,也就是大家经常看到博客,Cuda安装时自动安装了显卡驱动。

但是Nvidia显卡驱动与Cuda并不是一对一对应的关系,所以我们在一个系统中可以下载多个版本的Cuda,比如Cuda9.0、Cuda10.0、Cuda11.0,安装足够新版本的Nvidia显卡驱动向下兼容Cuda版本即可。事实上我当前nvidia 驱动版本495.29.05是当前比较新的,我中间电脑显卡出现故障,通过重装多个版本的显卡驱动来排除故障原因,所以Nvidia显卡驱动与Cuda并不是一对一对应的关系,Nvidia显卡驱动只要满足Cuda版本的最低要求即可。

而关于多个版本的Cuda,简单的就是当前版本使用的Cuda有一个显示指针,可以通过指针显示只想不同版本的Cuda,就可使用不同版本的Cuda。现在,这些新版Cuda,比如Cuda11.0安装会自动配置环境变量,我们需要修改的就是环境变量的中指向的Cuda版本。(其实我不能确定,现在安装低版本的Cuda,比如Cuda10.0,会不会配置环境变量了,即不能确定自动配置环境变量是和Cuda新版本绑定的,还是整个安装方式的更新,但是多个Cuda版本使用转换,修改Cuda环境变量即可)。

Cuda的driver API 和runtime API

关于为什么nvidia-smi和nvcc -V两个命令查看Cuda版本不一致呢?

CUDA有两个主要的API,driver API(nivdia-smi中显示的cuda)和runtime API(nvcc -V 显示的cuda),两者都有相应的版本。driver API由显卡驱动安装程序安装,runtime API由CUDA toolkit工具包安装程序安装。所以,可能产生nvidia-smi —>driver API 和nvcc -V —>runtime API,简单的就是,当使用的Nvidia显卡驱动版本高于Cuda版本的最低要求,两个版本就不一致了,但是我们日常使用Cuda时,总是发现,实际版本nvcc -V —>runtime API一致的,即CUDA toolkit工具包安装的。我想是因为我们使用Cuda基于toolkit,所以cuda实际使用版本以nvcc -V中的cuda版本为准。

Reference

  1. tensorflow各个版本的CUDA以及Cudnn版本对应关系
  2. cuda版本在nvcc -V和nvidia-smi中显示不同
  • 10
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值