解决Ubuntu20.04安装CUDA-11.2报256错误的问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、报错的原因是什么?
  • 二、安装cuda-11.2
  • 三、安装nvidia-driver-455
  • 四、再装cuda-11.2
  • 总结


前言

最近在给一台Ubuntu20.04的电脑装cuda-11.2版本的时候遇到了些错,经过一些列研究终于解决了这个问题。我记录了下来,希望情况和我一样的小伙伴可以解决这个问题。


一、报错的原因是什么?

报错的原因可以说是内核,也可以说是cuda的问题,我的系统内核是5.15的,如果你是5.4的内核,那么你应该不会遇到这个错误。如果遇到了,这个教程可能并不适用于你的情况,请继续往下看。

二、安装cuda-11.2

我从官网下载了适用于Ubuntu20.04的cuda-11.2,文件名叫cuda_11.2.0_460.27.04_linux.run,我一开始准备用这个包同时把driver装上去,我在Ubuntu18.04上就是这么做的,而且没有遇到过问题。先看看报了什么错,然后一步步分析

解决Ubuntu20.04安装CUDA-11.2报256错误的问题_第1张图片
以前遇到过gcc版本不对的问题,现在看来问题出现在安装驱动上。其实还有一个安装日志nvidia-installer.log,只不过报错页面上没提到这个文件,这个文件的位置在/var/log/nvidia-installer.log,我们cat下看看就知道问题在哪里了。

解决Ubuntu20.04安装CUDA-11.2报256错误的问题_第2张图片
说的很清楚,少了一个,我们去/usr/include里面找发现,根本没有asm这个文件夹。只有一个asm-generic文件夹,我到这个里面看了下发现根本没有这个头文件。于是我查了下内核版本,发现有点过于新,其实对于我这个老爷机来说,根本不需要这么新的内核版本,Ubuntu20.04默认的版本应该是5.4的版本,应该是自动升级了,我没注意到。有一些资料说如果切换到5.4的版本就不会有这个问题了,我没有尝试过,感兴趣的可以去试试。以下是我的内核版本:

Linux anold-Lenovo-TianYi-100-14IBD 5.15.0-46-generic #49~20.04.1-Ubuntu SMP Thu Aug 4 19:15:44 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

解决Ubuntu20.04安装CUDA-11.2报256错误的问题_第3张图片
上面Nvidia的论坛有个哥们说降级到5.4,他解决了这个问题,我不想折腾内核了,说不定哪天又升上来了。

以下是我已安装的所有内核版本:

解决Ubuntu20.04安装CUDA-11.2报256错误的问题_第4张图片
确实是两个内核版本,5.4是装机自带的,5.15是升级上来的。切换内核版本的教程这里不给了,很简单的,网上一大堆,这里说怎么在5.15版本上解决这个问题。我在逛老外一个论坛的时候偶然间发现了解决方案:

解决Ubuntu20.04安装CUDA-11.2报256错误的问题_第5张图片
这里简单翻译下,通过apt安装driver,然后通过.run安装cuda-11.2能够解决这个报错,然后在任何内核上都不会失败。现在我们试一下。

三、安装nvidia-driver-455

安装之前先禁止nouveau,这一步很关键,方法大家自行搜索下吧,网上一大堆。

sudo apt-get purge nvidia-*

先删除之前安装的,如果是新机器这一步可以忽略。

sudo add-apt-repository ppa:graphics-drivers/ppa 

增加nvidia驱动的源,会自动update,如果没有就手动update下。

sudo apt-get install nvidia-driver-455

根据个人需要安装

注意:driver和cuda版本有对应关系,这个在cuda介绍页面有描述,大家可以去查阅下

sudo reboot  

安装成功后reboot才会生效,重启后执行

nvidia-smi

会看到描述信息,如果不报错就是成功了

解决Ubuntu20.04安装CUDA-11.2报256错误的问题_第6张图片

四、再装cuda-11.2

安装方法和前面一样,使用.run文件,注意:一定要勾掉driver,其它的根据需求勾选,这个时候就可以安装了,加下环境变量就行了。

nvcc -V

解决Ubuntu20.04安装CUDA-11.2报256错误的问题_第7张图片

不报错就是成功了,接下来上sample测试就可以了。


总结

由于这个方法受内核的影响,所以不同的内核可能会不一样,大家如果和我一个内核应该是没有问题了。
有问题欢迎留言,我测试可以正常使用,没遇到兼容问题。

你可能感兴趣的:(linux,ubuntu,C++,ubuntu,linux,运维,c++,人工智能)