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

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设备。所以这个命令行输出的信息与其管理的硬件有关。再回看上面的输出:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NPZvRwys-1615461653538)(C:\Users\ersan\AppData\Roaming\Typora\typora-user-images\image-20210311093820498.png)]

可以得到,我们的驱动版本是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工具包和其最低可兼容驱动版本的表格

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WQRFQUfq-1615461653540)(C:\Users\ersan\AppData\Roaming\Typora\typora-user-images\image-20210311110318952.png)]

如图所示,像我们的这个驱动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运行版本不匹配的问题
  • 36
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MATLAB版本问题可以涉及多种情况,以下是一些常见问题和解决策略: 函数兼容性: MATLAB的更新可能会影响到一些自定义函数或工具箱的可用性。例如,在升级到新版本后,某些旧版MATLAB特有的函数(如tight_subplot)可能已被弃用或替换为新的功能。如果遇到这种情况,需要查找MATLAB官方文档了解替代方法或对代码进行相应更新。 仿真模型和文件兼容性: 不同版本之间的仿真模型文件(.mdl、.slx等)可能存在不兼容的问题。在新版本中打开老版本创建的模型时,可能无法正常加载或运行。这时,MATLAB通常会提供一个转换工具帮助用户将旧格式模型转换成新版本支持的格式。 编码和乱码问题: 在不同版本MATLAB之间切换时,可能会遇到文本文件(如.m脚本)中的非ASCII字符(比如中文字符)显示乱码的问题。这通常是由于文件编码设置不一致导致的,确保所有MATLAB环境都使用正确的文件编码(如UTF-8)来读写文件可以解决这个问题GPU计算兼容性: MATLAB与CUDA库的版本匹配至关重要,若GPU设备驱动CUDA Toolkit版本过低或过高,可能导致MATLAB无法找到或无法有效利用GPU资源。在这种情况下,可能需要更新相应的硬件驱动程序或CUDA版本,或者在MATLAB内部启用CUDA向前兼容性模式。 许可证问题: 使用非法或不受支持的MATLAB版本可能会导致各种功能限制或错误,包括无法正常使用GPU功能。确保使用合法授权并得到官方支持的MATLAB版本是避免此类问题的关键。 API和工具箱更改: 随着MATLAB版本更新,其内置函数接口或整个工具箱的功能可能发生改变,从而影响基于旧版本开发的代码。在升级前应查阅MATLAB发行说明以了解潜在的不兼容性,并做好必要的代码调整。 总之,针对MATLAB版本问题,建议始终查阅MathWorks官网的最新文档,以及每次更新的Release Notes,以获取最准确的支持信息和解决方案。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值