CUDA驱动版本与运行版本不匹配问题详解

报错内容:CUDA driver version is insufficient for CUDA runtime version

1 如何查看自己的cuda驱动版本和cuda运行版本

1.1 查看CUDA驱动版本

命令行输入:nvidia-smi

以我的电脑为例,输出中显示Driver Version: 430.34,此为驱动版本。

1.2 查看CUDA运行版本

命令行输入:nvcc -V


我的电脑输出10.2.89版本。

在网上查到很多文章说利用conda list或者pip list查看cudatoolkit和cudnn程序包版本,但是我用这两个查看的结果发现我的电脑并没有这两个包。

2 为什么会分驱动版本和运行版本?

2.1 驱动版本

在讲驱动版本之前,先来明晰几个概念:GPU、显卡和显卡驱动。

这里大家最熟悉的可能就是显卡。显卡顾名思义,就是用来“显示”的卡,在计算机中主要承担的是显示图形的任务。显卡越好,显示的效果就越好,所以爱打游戏的人和从事专业图形设计的人对显卡就额外重视。

而我们常说的GPU(Graphics Processing Unit),中文全称图形处理器,你听这个名字,就是用来处理图形的东西,所以 GPU也是显卡的主要处理单元。GPU和显卡,都能归在硬件的范畴之中。

显卡驱动则是一个软件,顾名思义,用于“驱动”显卡,就好像一辆车(GPU),需要一个司机(显卡驱动)来发动它,一个硬件能够正常运行,也需要程序去“驱动”它。因此,显卡驱动的版本是与GPU硬件有关的,根据硬件的不同,下载的显卡驱动也不同。

我们刚刚用来查看自己的驱动版本的命令行nvidia-smi中的smi是System Management Interface的缩写,用于管理GPU设备。所以这个命令行输出的信息与其管理的硬件有关。再回看上面的输出:

可以得到,我们的驱动版本是430.34,其能兼容的最高CUDA版本也贴心地写在一旁:10.1。

2.2 运行版本

要说运行版本,我们就要先从CUDA说起。

CUDA的全称是Compute Unified Device Architecture,按照NVIDIA官方的说法,CUDA是一个并行计算平台和编程模型,能够使得使用GPU进行通用计算变得简单和优雅

翻译一下也就是说,CUDA是NVIDIA为了帮助大家更好地使用他们生产的GPU而开发的一个辅助工具。好像汽车厂商(NVIDIA)卖给你了车(GPU),帮你请了司机(显卡驱动),又负责教司机如何开车开得简单又优雅(CUDA)。这里的CUDA,一般指的是CUDA Toolkit,也就是我们的运行版本。

2.3 问题成因

但是呢,问题就在这儿了。有好老师(CUDA Toolkit)不一定能教出好学生(驱动)。

官网上有一张CUDA工具包和其最低可兼容驱动版本的表格

如图所示,像我们的这个驱动430.34,它只能学会使用CUDA10.1以下的工具包。更高级的CUDA工具包只有更高级别的驱动才会用,所以才导致了这个问题。就像报错信息说的那样:CUDA driver version is insufficient for CUDA runtime version. 我们的问题就是:对于我们的CUDA运行版本来说,驱动版本太低了!

那么要解决这个问题,有两种方法:

  1. 升级驱动
  2. 降级CUDA工具包

因为我用的是学校的电脑,没(懒)办(得)法升级驱动了,所以这里我只降级了CUDA工具包。有(勤)条(劳)件的小伙伴可以升级一下自己的驱动。

3 解决方法:降级CUDA工具包

由于我这个新建的虚拟环境没有CUDA Toolkit,所以直接conda install cudatoolkit=10.1就行了。本来就有安装toolkit的小伙伴可以uninstall一下再装更低版本。

有的时候可能会报错The following packages are not available from current channels,说明你这个源里现在没有这个版本的toolkit了。这里贴一个网址,大家可以把包下到本地,再走本地路径安装,例如conda install C:/xxxxx

由于我这边的电脑是无图形化界面windows,所以只能提供这两种命令行能实现的解法。如果大家是在自己的电脑上跑,有图形化界面的话,感觉还是升级驱动比较快哦。

CUDA工具包降级了之后再次运行代码,报错消失了,但又报了别的错,修bug真是条漫漫长路(远目

参考

  1. 显卡百度百科
  2. GPU百度百科
  3. 显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么?
  4. 关于cuda驱动版本以及cuda运行版本不匹配的问题

CUDA驱动版本与运行版本不匹配问题详解相关推荐

  1. python硬件交互_对Python的交互模式和直接运行.py文件的区别详解

    对Python的交互模式和直接运行.py文件的区别详解 看到类似C:\>是在Windows提供的命令行模式,看到>>>是在Python交互式环境下. 在命令行模式下,可以执行p ...

  2. java编译不报错但运行啥都没_java编译时与运行时概念与实例详解

    java编译时与运行时概念与实例详解 发布于 2020-7-29| 复制链接 本篇文章通过实例对 java程序编译时与运行时进行了详解,需要的朋友可以参考下 Java编译时与运行时很重要的概念,但是一 ...

  3. 抢先服服务器维修什么时候玩,王者荣耀抢先服能和那些服务器匹配?匹配开放时间详解介绍...

    王者荣耀抢先服能和那些服务器匹配?很多小伙伴们目前在抢先服玩的时候,都想知道能否和正式服数据互通,那么对正式服的玩家们是不是不公平,还是说室友固定匹配时间的?下面是小编带来的具体解答分享,感兴趣的一起 ...

  4. Nginx正则表达式之匹配操作符详解

    2019独角兽企业重金招聘Python工程师标准>>> Nginx正则表达式之匹配操作符详解 nginx可以在配置文件中对某些内置变量进行判断,从而实现某些功能.例如:防止rewri ...

  5. java switch 值_Java switch多值匹配操作详解

    这篇文章主要介绍了Java switch多值匹配操作详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 我们都知道 switch 用来走流程分支,大 ...

  6. python实现括号匹配算法_Python实现括号匹配方法详解

    这篇文章主要简介了python实现括号匹配方法详解,文中通过示例代码简介的非常具体,对大家的学习或者工作具有一定的参考学习网上卖,需要的朋友可以学习下 1.用一个栈[python中可以用List]就可 ...

  7. java正则匹配多个斜杠_正则表达式中两个反斜杠的匹配规则详解

    关于正则表达式raw的\匹配规则 这是我在学习中获得到的一个例子,第一表达式中匹配到的是none.于是乎我就在思考,为什么会匹配不到,假设\t被转义成一个\t,那么也应该匹配到\tsanle,而不是n ...

  8. java case 多个值_Java switch多值匹配操作详解

    这篇文章主要介绍了Java switch多值匹配操作详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 我们都知道 switch 用来走流程分支,大 ...

  9. kubernetes运行应用2之DaemonSet详解

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  10. 第43课: Spark 1.6 RPC内幕解密:运行机制、源码详解、Netty与Akka等

    第43课: Spark 1.6 RPC内幕解密:运行机制.源码详解.Netty与Akka等 Spark 1.6推出了以RpcEnv.RPCEndpoint.RPCEndpointRef为核心的新型架构 ...

最新文章

  1. android中方法调用super(..)的相关知识
  2. 全球半导体产业迁移 中国的机遇与挑战
  3. [Flex]关于国内Flex开发者/从业者的调查问卷
  4. Winform中设置ZedGraph鼠标双击获取距离最近曲线上的点的坐标值
  5. C语言Cruskal算法查找最小生成树(附完整源码)
  6. SAP UI5和微信小程序框架里的全局变量
  7. 51nod1040 最大公约数之和,欧拉函数或积性函数
  8. 证券期货行业监管大数据治理方案研究
  9. PHP配置限制文件大小上传
  10. Spring源码解析一 (IOC容器初始化深度解析)
  11. java 语音传输_java – 通过tcp流式传输语音
  12. 垂直广告是什么意思_广告新趋势——内容为王 垂直细分
  13. playbook_黑莓PlayBook的第一波Union游戏揭晓!
  14. android ui 扁平化,为何UI集体变风格 扁平化是未来主流吗?
  15. 折线图css,echarts实现折线图的代码(附图)
  16. 解决[Vue warn]: Unknown custom element: <ag> - did you register the component correctly? For recursive
  17. 简单的猜数字游戏--入门
  18. Go 语言开发工具 LiteIDE X36 发布
  19. mysql zombodb_zombodb安装试用
  20. Linux 存储 Stack详解

热门文章

  1. java二叉树删除节点
  2. ad自动布线过孔_AD15布线方法汇总
  3. [CTBS]许可证过期之激活
  4. Android开发眼镜店管理系统,智能眼镜店管理系统(基于BS架构互联网版)下载_智能眼镜店管理系统(基于BS架构互联网版)官方下载-太平洋下载中心...
  5. hydra暴力破解win10用户名和密码
  6. php值班系统,php简单的值日值班处理方法
  7. 自己对war包解压的误区
  8. 在eclipse上通过egit插件将代码发布到码云(https://gitee.com/)
  9. CAN FD安全通信
  10. 在win11和win10的edge浏览器运行flash网址设置详解