Ubuntu系统配置深度学习环境之nvidia显卡驱动和cuda安装

2023-12-05

前言

NVIDIA 显卡驱动是为了确保 NVIDIA 显卡能够正确运行而开发的软件。显卡驱动负责与操作系统通信,管理显卡的各种功能,并提供性能优化和兼容性保证。安装适用于特定显卡型号和操作系统版本的最新驱动程序是确保显卡能够正常工作的重要步骤。

CUDA 是 NVIDIA 推出的一种并行计算平台和编程模型。它充分利用 NVIDIA 显卡的并行处理能力,使开发人员能够通过编写并行计算任务来加速各种计算工作。CUDA 提供了一组编程接口和工具,使开发人员能够使用标准编程语言(如C/C++、Python)来开发并行计算应用程序。

CUDA 依赖于 NVIDIA 显卡驱动的支持。安装正确的显卡驱动是为了确保 CUDA 开发平台能够顺利工作。通过 CUDA,开发人员可以利用 NVIDIA 显卡的强大算力来加速计算任务,从而提高性能和效率。

因此,NVIDIA 显卡驱动和 CUDA 是相辅相成的,只有在正确安装并配置了适用的显卡驱动程序后,才能利用 CUDA 进行并行计算任务的开发和加速。

1、显卡驱动的安装及卸载

查看独立显卡驱动支持及其支持的最高 cuda版本

nvidia-smi

若无输出表示驱动未安装,查询可用的驱动:

ubuntu-drivers devices

上述命令很可能什么都不显示,添加官方 ppa 的源,更新源后即可查询可用驱动:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
ubuntu-drivers devices

安装

第一种安装显卡驱动的方式(通过命令行安装)

自动安装推荐的驱动:

sudo ubuntu-drivers autoinstall

指定版本安装:

sudo apt install nvidia-driver-515  #指定安装515版本
第二种安装显卡驱动的方式(通过界面安装)

在ubuntu20.04 安装NVIDIA驱动比较简单,打开系统设置->软件和更新->附加驱动->选择NVIDIA驱动->应用更改,该界面会自动根据电脑上的GPU显示推荐的NVIDIA显卡驱动,选择需要的版本安装即可。

卸载

查看当前驱动、卸载驱动:

dpkg -l | grep nvidia           #查看当前驱动
sudo apt-get purge nvidia*      #卸载当前驱动   
sudo apt autoremove             #清理链接

2、安装Cuda

查看是否安装了cuda:

nvcc -V

输入nvcc-V后,若显示:Command 'nvcc' not found, but can be installed with:sudo apt install nvidia-cuda-toolkit, 注意:千万不能使用sudo apt install nvidia-cuda-toolkit。

查看CUDA的位置:cd /usr/local,如果该目录下有CUDA文件夹或软链,表示已经安装了cuda,只需要添加cuda相关的环境变量即可。

打开、编辑环境变量的配置文件:

vim ~/.bashrc 

在文件末尾添加:

# cuda
export LD_LIBRARY_PATH=/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin

然后按:wq保存退出编辑模式。

刷新~/.bashrc文件使其生效:

source ~/.bashrc

重新使用nvcc命令查看CUDA版本:nvcc -V。

安装cuda的步骤

点击网址 https://developer.nvidia.com/cuda-toolkit-archive ,选择需要的CUDA下载。选择runfile(local),并使用生成的指令进行下载和安装。

wget https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda_11.1.1_455.32.00_linux.run
sudo sh cuda_11.1.1_455.32.00_linux.run

若第1步提示Existing package manager installation of the driver found. It is strongly recommended that you remove this before continuing.选择continue,在下一步中点击回车键去除driver项,之后选择install。

安装完成后,显示如下:

在~/.bashrc文件中添加如下环境变量:

export PATH=/usr/local/cuda-11.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

验证是否安装成功:

nvcc -V

完毕!!!

文章到此就结束了,下篇文章将的的如何安装cuda对应版本的cudnn,因为安装cudnn适合99%的linux系统,所以单独拿出来讲解,cudnn详细安装讲解请看下篇文章: Linux系统配置深度学习环境之cudnn安装

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

Ubuntu系统配置深度学习环境之nvidia显卡驱动和cuda安装 的相关文章

  • Linux 中的无缓冲 I/O

    我正在写入大量的数据 这些数据数周内都不会再次读取 由于我的程序运行 机器上的可用内存量 显示为 空闲 或 顶部 很快下降 我的内存量应用程序使用量不会增加 其他进程使用的内存量也不会增加 这让我相信内存正在被文件系统缓存消耗 因为我不打算
  • 如何通过替换为空页映射来取消映射 mmap 文件

    Linux 用户空间有没有办法用空页面 映射自 dev null 或者可能是一个空页面 重复映射到从文件映射的页面的顶部 对于上下文 我想找到这个 JDK bug 的修复 https bugs openjdk java net browse
  • 跟踪 Linux 程序中活跃使用的内存

    我想跟踪各种程序在特定状态下接触了多少内存 例如 假设我有一个图形程序 最小化时 它可能会使用更少的内存 因为它不会重新绘制窗口 这需要读取图像和字体并执行大量库函数 这些对象仍然可以在内存中访问 但实际上并没有被使用 类似的工具top它们
  • 带有 CUDA 的 Tensorflow:导入错误

    我已经按照 NVIDIA 教程中的说明一步步安装了 TensorFlow Ubuntu 16 04 桌面版 GTX 970 http www nvidia com object gpu accelerated applications te
  • 使用 grep 查找包含所有搜索字符串的行

    我有一个文件 其中包含很多与此类似的行 id 2796 some model Profile message type MODEL SAVE fields account 14 address null modification times
  • 从 csv 文件中删除特定列,保持输出上的相同结构[重复]

    这个问题在这里已经有答案了 我想删除第 3 列并在输出文件中保留相同的结构 输入文件 12 10 10 10 10 1 12 23 1 45 6 7 11 2 33 45 1 2 1 2 34 5 6 I tried awk F 3 fil
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • 为什么 Linux perf 使用事件 l1d.replacement 来处理 x86 上的“L1 dcache misses”?

    在英特尔 x86 上 Linux用途 https stackoverflow com a 52172985 149138事件l1d replacements来实施其L1 dcache load misses event 该事件定义如下 计数
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • apt-get 无法在 ubuntu dockerfile 中工作

    我对 docker 相当陌生 正在尝试通过编写自己的镜像来学习 并且目前正在阅读 Docker 的实际操作 ISBN 1633430235 在我自己的代码和书中的示例 第 146 页 中 我想通过 dockerfile 安装 git My
  • 为什么内核需要虚拟寻址?

    在Linux中 每个进程都有其虚拟地址空间 例如 32位系统为4GB 其中3GB为进程保留 1GB为内核保留 这种虚拟寻址机制有助于隔离每个进程的地址空间 对于流程来说这是可以理解的 因为有很多流程 但既然我们只有 1 个内核 那么为什么我
  • 如何在 Ubuntu VirtualBox 中运行 Meteor 应用程序并使用 Windows 主机上的编辑器进行编辑?

    我希望在运行 Ubuntu 的 virtualbox 来宾中运行一个用于开发目的的流星服务器 该项目将位于主机上的一个文件夹内 该文件夹将共享给来宾 该文件夹本身位于 Dropbox 文件夹内 这样我可以在多个虚拟机和工作站之间共享开发 但
  • 在哪里可以找到并安装 pygame 的依赖项?

    我对 Linux 比较陌生 正在尝试安装 python 的 pygame 开发环境 当我运行 setup py 时 它说我需要安装以下依赖项 我找到并安装了其中之一 SDL 然而 其他人则更加难以捉摸 Hunting dependencie
  • Linux 中的动态环境变量?

    Linux 中是否可以通过某种方式拥有动态环境变量 我有一个网络服务器 网站遵循以下布局 site qa production 我想要一个环境变量 例如 APPLICATION ENV 当我在 qa 目录中时设置为 qa 当我在生产目录中时
  • 在 Ubuntu 中使用 Gstreamer 通过 RTP 协议流式传输 Mp4 视频

    我正在尝试从本地目录获取视频文件 启用来自服务器的流并从客户端捕获这些帧 我使用了以下管道 服务器端 gst launch v filesrc location home gokul Videos Econ TestVideo radioa
  • Linux 内核标识符中前导和尾随下划线的含义是什么?

    我不断遇到一些小约定 比如 KERNEL Are the 在这种情况下 是内核开发人员使用的命名约定 还是以这种方式命名宏的语法特定原因 整个代码中有很多这样的例子 例如 某些函数和变量以 甚至 这有什么具体原因吗 它似乎被广泛使用 我只需
  • Linux:如何从特定端口发送TCP数据包?

    如何打开原始套接字以从特定 TCP 端口发送 我希望所有连接始终来自临时端口以下的一系列端口 如果您正在使用raw套接字 然后只需在数据包标头中填写正确的 TCP 源端口即可 相反 如果您使用 TCP 套接字接口 socket connec
  • 如何在shell中输出返回码?

    我正在尝试通过调用自定义 shell 脚本sh bin sh c myscript sh gt log txt 2 gt 1 echo 该命令的输出是创建的后台进程的 PID 我想指导 bin sh保存返回码myscript sh到某个文件
  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的
  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp

随机推荐