ubuntu20.4安装NVIDIA驱动,cuda

2023-05-16

安装NVIDIA驱动准备工作

下载NVIDIA地址:https://www.nvidia.cn/Download/index.aspx?lang=cn

查看是否安装好驱动命令:

nvidia-smi         

查看NAVIDIA的型号:

lspci |grep -i nvidia

查看NVIDIA驱动版本:

sudo dpkg --list | grep nvidia-*

检查适合系统的NAVIDIA版本:

nvidia-detector 

:/usr/bin/nvidia-smi: 没有那个文件或目录

完全卸载NAVIDIA驱动
如果想卸载NAVIDIA驱动,使用附加驱动的方式只能切换驱动,但卸载不了驱动,只能通过命令的方式卸载:

sudo apt-get --purge remove nvidia*
sudo apt-get --purge remove "*nvidia*"
sudo apt-get --purge remove "*cublas*" 
sudo apt-get --purge remove "cuda*"

sudo apt-get purge nvidia*

sudo update-initramfs -u

安装依赖:

sudo apt-get install gcc g++ make  //有的话执行这个没关系,安全起见下载好依赖的包,一般系统会有的。

禁用自带的nouveau驱动:

sudo  gedit  /etc/modprobe.d/blacklist-nouveau.conf

在打开的文件末尾加入:

blacklist nouveau
options nouveau modeset=0

然后保存关闭文本

再更新一下:

sudo update-initramfs -u

如果更新失败 fault的话,在上一步打开的文本中写入并保存(一般都会成功的!):

blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

重启(必须)

reboot

重启成功后打开终端输入:

lsmod | grep nouveau

没有输出任何东西,说明nouveau禁用成功

配置国内ubuntu源

编辑/etc/apt/sources.list文件, 在文件最前面添加以下条目(操作前做好相应备份)

cd /etc/apt
sudo cp sources.list sources.list.bak
sudo vim sources.list
#增加阿里云,在source.list文件开头增加如下内容
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
#保存并更新
sudo apt update
sudo apt upgrade

安装多版本gcc并配置默认版本

安装 gcc-9、gcc-10并在系统中并存:

1、安装gcc-8、gcc-9、gcc-10

sudo apt install gcc-8 g++-8 gcc-9 g++-9 gcc-10 g++-10

2、以下命令为每个版本配置替代版本,并将优先级与之关联。默认版本是优先级最高的版本,在本例中为gcc-10。

   sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10 --slave /usr/bin/gcov gcov /usr/bin/gcov-10
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9 --slave /usr/bin/gcov gcov /usr/bin/gcov-9
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80 --slave /usr/bin/g++ g++ /usr/bin/g++-8 --slave /usr/bin/gcov gcov /usr/bin/gcov-8

3、切换gcc版本

sudo update-alternatives --config gcc
选中下面编号就可以跟换gcc版本

4、分别查看内核、gcc、glibc版本

 uname -a
    gcc --version
    ldd --version

安装图形界面

首先需要安装lightdm,主要是用来关闭启动图形界面用,主要管理登录界面,ubuntu20.04需要自行安装,然后选择lightdm即可

sudo apt-get install lightdm

安装NVIDIA过程

同时按键Ctrl、Alt和F2 键,在这个界面进入root权限
如要回到图形化界面输入

sudo telinit 5

输入你的用户名和密码登录。

进入root权限

sudo -s #进入root权限

init 3  #进入了root权限后,进入3界面中进行安装

如不能进入root权限,就会出现报错:下面报错经历中第一个内容

找到NVIDIA-Linux-x86_64-295.53.run所在的文件夹

sudo chmod 777 NVIDIAxxxx.run

sudo ./NVIDIA-Linux.......run –no-opengl-files

–no-opengl-files: 只安装驱动文件,不安装OpenGL文件。这个参数最重要,不加很有可能出现循环登录,也就是loop login。

安装过程中,提示的问题该怎么选。

1:Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later? 选择 No 继续。
在这里插入图片描述

2:Install nvidia’s 32-bit compatibility libraries? No
在这里插入图片描述这个选择NO,如果选择yes会出现安装报错,下面报错经历第2个

3:Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? Any pre-existing x confile will be backed up. 选择 Yes 继续

在这里插入图片描述

然后,进入图形环境。
打开终端输入

sudo init 5
sudo reroot #进行重启
nvidia-smi  #查看是否安装成功

切换首选显卡,附加配置

编辑 AMD 显卡的配置文件

编辑 amdgpu 的X11配置文件. 文件路径 /usr/share/X11/sorg.conf.d/

   sudo gediti /usr/share/X11/xorg.conf.d/10-amdgpu.conf

修改内容如下:

Section "OutputClass"
    Identifier "AMDgpu"
    MatchDriver "amdgpu"
    Driver "amdgpu"
    Option "PrimaryGPU" "no"
EndSection

编辑 Nvidia 的配置文件

修改Nvidia显卡配置

   sudo gedit /usr/share/X11/xorg.conf.d/10-nvidia.conf

内容如下:

Section "OutputClass"
	Identifier "nvidia"
	MatchDriver "nvidia-drm"
	Driver "nvidia"
	Option "AllowEmptyInitialConfiguration"
	Option "PrimaryGPU" "yes"
	ModulePath "/usr/lib/x86_64-linux-gnu/nvidia/xorg"
EndSection

安装cuda

下载cuda:https://developer.nvidia.com/cuda-toolkit-archive
安装11.40命令:

wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda_11.4.0_470.42.01_linux.run
如果程序没有创建文件夹在请在:sudo mkdir /usr/local/cuda
sudo sh cuda_11.4.0_470.42.01_linux.run
--tmpdir=

在这里插入图片描述
打x的是选中,没有x的是没有选中,要把没用的程序用回车键去掉
在这里插入图片描述如下已经完成安装
在这里插入图片描述

然后配置环境:

sudo gedit ~/.bashrc 或 sudo gedit ~/.bashrc

打开后在最后面添加如下代码(关于这里环境添加的路径写法问题,并不止这一种,网上可以搜得多种,此处我也只是照搬其中一种写法):

 # <<< conda initialize <<<
export CUDA_HOME=/usr/local/cuda-11.6
export PATH=$PATH:/usr/local/cuda-11.6/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.6/lib64

然后更新环境:

source ~/.bashrc

这里的cuda链接cuda10.1,方法均是参考其它博客,我目前没有发现什么错误之处,再可查看cuda:

nvcc --version或者nvcc -V

然后测试cuda:

cd /usr/local/cuda-10.1/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

安装cudnn

安装cudnn:https://developer.nvidia.cn/rdp/cudnn-archive

下载完成后按照以下顺序安装

安装:

sudo dpkg -i libcudnn8_8.2.2.26-1+cuda11.4_amd64.deb
sudo dpkg -i libcudnn8-dev_8.2.2.26-1+cuda11.4_amd64.deb
sudo dpkg -i libcudnn8-samples_8.2.2.26-1+cuda11.4_amd64.deb

测试安装效果:

#复制cuDNN samples到home目录下
cp -r /usr/src/cudnn_samples_v8 /$HOME
#进入home目录
cd $HOME/cudnn_samples_v8/mnistCUDNN/
#编译mnistCUDNN
sudo make clean
sudo make
#运行mnistCUDNN
sudo ./mnistCUDNN

显示test passed说明安装成功。

如果测试遇到问题参考下面方法

编译mnistCUDNN时出错:fatal error: FreeImage.h: No such file or directory

  1. 执行“sudo make”时候可能会报以下编译错误 fatal error: FreeImage.h
mnistCUDNN  sudo make
CUDA_VERSION is 11010
Linking agains cublasLt = true
CUDA VERSION: 11010
TARGET ARCH: x86_64
HOST_ARCH: x86_64
TARGET OS: linux
SMS: 35 50 53 60 61 62 70 72 75 80 86
test.c:1:10: fatal error: FreeImage.h: No such file or directory
    1 | #include "FreeImage.h"
      |          ^~~~~~~~~~~~~
compilation terminated.
  1. 执行
sudo apt-get install libfreeimage3 libfreeimage-dev
  1. 重新编译后,运行
./mnistCUDNN

错误历程:

1:没有进入root权限会报下面错误,解决就是sudo -s进入root权限
在这里插入图片描述
2:Install nvidia’s 32-bit compatibility libraries? 选择yes会出现下面报错,解决选择NO在这里插入图片描述

查看进程:用这个命令查看一下apt-get的相关进程:

ps -e | grep apt

sudo kill 95573 #后面数字可以更改想要杀死的进程

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu20.4安装NVIDIA驱动,cuda 的相关文章

  • CUDA - 为什么基于扭曲的并行减少速度较慢?

    我有关于基于扭曲的并行减少的想法 因为根据定义 扭曲的所有线程都是同步的 因此 我们的想法是输入数据可以减少 64 倍 每个线程减少两个元素 而无需任何同步 与 Mark Harris 的原始实现相同 减少应用于块级 数据位于共享内存上 h
  • 在 Windows 上的 Qt Creator 中编译 Cuda 代码

    几天来我一直在尝试获取在 32 位 Windows 7 系统上运行的 Qt 项目文件 我希望 需要在其中包含 Cuda 代码 这种组合要么非常简单 以至于没有人愿意在网上放一个例子 要么非常困难 似乎没有人成功 不管怎样 我发现的唯一有用的
  • 优化三角矩阵计算的 CUDA 内核的执行

    我正在开发我的第一个 Cuda 应用程序 并且我的内核 吞吐量低于预期 这似乎是目前最大的瓶颈 内核的任务是计算一个 N N 大小的矩阵 DD 包含数据矩阵上所有元素之间的平方距离 数据矩阵 Y 的大小为 N D 以支持多维数据 并存储为行
  • 如何在 gitlab-ci docker 执行器中使用 cuda

    我们正在使用 gitlab 持续集成来构建和测试我们的项目 最近 其中一个项目添加了 CUDA 的要求以启用 GPU 加速 我不想改变我们的管道 docker 和 gitlab ci 对我们来说运行良好 所以我想以某种方式让 docker
  • 为什么GK110有192个核心和4个扭曲?

    我想感受一下开普勒的架构 但这对我来说没有意义 如果一个 warp 有 32 个线程 其中 4 个被调度 执行 则意味着 128 个核心正在使用 64 个核心处于空闲状态 白皮书中提到了独立指令 那么64核是为这些指令保留的吗 如果是这样
  • 是否可以在设备函数中调用cufft库调用?

    我在主机代码中使用 cuFFT 库调用 它们工作正常 但我想从内核调用 cuFFT 库 早期版本的 CUDA 没有这种支持 但是有了动态并行性 这可能吗 如果有任何关于如何实现这一目标的示例 那就太好了 尽管在 Kepler cc 3 5
  • CUDA:如何检查计算能力是否正确?

    使用较高计算能力编译的 CUDA 代码将在计算能力较低的设备上完美执行很长一段时间 然后有一天在某些内核中默默地失败 我花了半天时间追寻一个难以捉摸的错误 结果发现构建规则已经sm 21而该设备 Tesla C2050 是2 0 是否有任何
  • 在新线程中调用支持 CUDA 的库

    我编写了一些代码并将其放入它自己的库中 该库使用 CUDA 在 GPU 上进行一些处理 我正在使用 Qt 构建 GUI 前端 作为加载 GUI 的一部分 我调用 CUresult res CUdevice dev CUcontext ctx
  • Golang调用CUDA库

    我正在尝试从 Go 代码中调用 CUDA 函数 我有以下三个文件 test h int test add void test cu global void add int a int b int c c a b int test add v
  • Cuda Bayer/CFA 去马赛克示例

    我编写了一个 CUDA4 Bayer 去马赛克例程 但它比在 16 核 GTS250 上运行的单线程 CPU 代码慢 块大小是 16 16 图像暗淡是 16 的倍数 但更改此值并不会改善它 我做了什么明显愚蠢的事情吗 calling rou
  • 使用 QuasirandomGenerator (对于傻瓜来说)

    我是 CUDA 的新手 我正在努力在内核中生成随机数 我知道有不同的实现 而且 在 SDK 4 1 中有一个 Niederreiter 拟随机序列生成器的示例 我不知道从哪里开始 我有点悲伤 感觉自己像个傻瓜 有人可以制作一个使用 Nied
  • 寻找 CUDA 中的最大值

    我正在尝试在 CUDA 中编写代码来查找最大值 对于给定的一组数字 假设您有 20 个数字 并且内核在 2 个块 每块 5 个线程 上运行 现在假设 10 个线程同时比较前 10 个值 并且thread 2找到最大值 因此线程 2 正在更新
  • Nvidia Theano docker 镜像不可用

    尝试运行 docker 命令 nvidia docker run d p 8888 8888 e PASSWORD 123abcChangeThis theano secure start notebook sh Then open you
  • CUDA素数生成

    当数据大小增加超过 260k 时 我的 CUDA 程序停止工作 它不打印任何内容 有人能告诉我为什么会发生这种情况吗 这是我的第一个 CUDA 程序 如果我想要更大的素数 如何在 CUDA 上使用大于 long long int 的数据类型
  • 传递给 CUDA 的结构中的指针

    我已经搞砸了一段时间了 但似乎无法正确处理 我正在尝试将包含数组的对象复制到 CUDA 设备内存中 然后再复制回来 但当我遇到它时我会跨过那座桥 struct MyData float data int dataLen void copyT
  • CUDA Thrust 和 sort_by_key

    我正在寻找 CUDA 上的排序算法 它可以对元素数组 A 双精度 进行排序 并返回该数组 A 的键 B 数组 我知道sort by keyThrust 库中的函数 但我希望元素数组 A 保持不变 我能做些什么 我的代码是 void sort
  • 仅使用 CUDA 进行奇异值计算

    我正在尝试使用新的cusolverDnSgesvdCUDA 7 0 用于计算奇异值的例程 完整代码如下 include cuda runtime h include device launch parameters h include
  • CUDA 估计 2D 网格数据的每块线程数和块数

    首先我要说的是 我已经仔细阅读了所有类似的问题 确定每个块的线程和每个网格的块 https stackoverflow com questions 4391162 cuda determining threads per block blo
  • 如何在 CUDA 中执行多个矩阵乘法?

    我有一个方阵数组int M 10 以便M i 定位第一个元素i th 矩阵 我想将所有矩阵相乘M i 通过另一个矩阵N 这样我就收到了方阵数组int P 10 作为输出 我看到有不同的可能性 分配不同元素的计算M i 到不同的线程 例如 我
  • 如何在cmake中添加cuda源代码的定义

    我使用的是 Visual Studio 2013 Windows 10 CMake 3 5 1 一切都可以使用标准 C 正确编译 例如 CMakeLists txt project Test add definitions D WINDOW

随机推荐