Ubuntu安装CUDA和CUDNN教程

2023-05-16

一、NVIDIA显卡驱动的安装

首先安装Linux系统的NVIDIA驱动,有两种方法,我们先说第一种方法

方法一:从官网上下载NVIDIA驱动程序进行安装

1.禁用nouveau驱动

nouveau,是一个自由及开放源代码显卡驱动程序,是为Nvidia的显示卡所编写,也可用于属于系统芯片的NVIDIA Tegra系列,此驱动程序是由一群独立的软件工程师所编写。但是nouveau开源驱动基本上是不能正常使用的,性能极低。

首先编辑文件 blacklist.conf:

sudo nano /etc/modprobe.d/blacklist.conf

移动光标,在最后一行添加以下代码:

blacklist nouveau
options nouveau modeset=0

然后ctrl + O保存文件

2.更新内核文件(注意备份文件)

注意备份文件,还需要注意自己系统的内核文件,不同版本的ubuntu不一样

sudo cp /boot/initrd.img-4.18.0-10-generic /boot/initrd.img-4.18.0-10-generic.bak
sudo update-initramfs -u

重启电脑

sudo shutdown -r now

3.进入BIOS设置,关闭Secure boot 设置

进入 Secure Boot Menu,将Secure Boot Control 设置为disabled
图片1
图片2

4.从NVIDIA官网下载对应的run文件

NVIDIA显卡驱动官网链接
比如说我的笔记本上的显卡是1060GTX,然后选择对应的显卡驱动软件
NVIDIA程序驱动下载图片
然后进行安装

sudo bash NVIDIA-Linux-x86_64-410.93.run -no-x-check -no-nouveau-check -no-opengl-files

参数的含义如下:
-no-x-check:安装驱动时关闭X服务
-no-nouveau-check:安装驱动时禁用nouveau
-no-opengl-files:只安装驱动文件,不安装OpenGL文件
这样再reboot,就不会出现循环登录的问题。

方法二:使用ubuntu ppa源上的仓库软件安装驱动程序

首先禁用nouveau,然后更新内核文件,关闭Secure Boot设置,操作与上面一致。用ppa源上的仓库软件进行安装的不同之处在于下一步。
首先我们列举出可用显卡信息

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update #更新一下源
ubuntu-drivers devices

它会列举出显卡驱动的信息,选择你想要安装的显卡驱动信息,例如安装以下显卡驱动信息:

sudo apt-get install nvidia-driver-418

或者安装对于ubuntu系统的显卡驱动,自动安装驱动程序:

sudo ubuntu-drivers autoinstall

重启电脑,即可以安装成功

检查NVIDIA显卡驱动程序是否安装成功

启动nvidia-settings 进行查看
图片3
启动nvidia-smi检查驱动程序是否安装成功
图片4

二、CUDA安装方法

1.GCC降级安装

因为编译cuda程序需要GCC版本低一点的编译器,否则会有以下的一些错误:

Error: unsupported compiler: 8.2.0. Use --override to override this check.

所以我们这里使用GCC4.8版本的编译器

sudo apt-get install gcc-4.8
sudo apt-get install g++-4.8

查看是否安装成功

cd /usr/bin
ls -l gcc*
ls -l g++*

在ubuntu19.04系统上,链接在对应系统的gcc-8版本,其他系统可能会在比gcc-4.8版本更高的版本上,所以需要改为链接到gcc-4.8上:

sudo mv gcc gcc.bak
sudo ln -s gcc-4.8 gcc
sudo mv g++ g++.bak
sudo ln -s g++-4.8 g++

查看版本号

gcc -v
g++ -v

2.安装CUDA

下载CUDA run文件,CUDA下载链接,
图片5

选择对应的文件进行下载

wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
sudo bash cuda_10.2.89_440.33.01_linux.run

注意!!!!安装时候会提示安装它提示安装的显卡驱动,一定要选择no,否则会出现显卡驱动冲突,无法进入桌面环境。
若在安装过程中缺少一些库文件,例如libGL.so等等文件,可能会出现有些库文件出错,如下错误:

Missing recommended library: libGLU.so
Missing recommended library: libX11.so
Missing recommended library: libXi.so
Missing recommended library: libXmu.so
Missing recommended library: libGL.so

无法安装cuda,解决方法如下,安装对应的库文件:

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev libgles2-mesa-dev

配置CUDA对应的环境变量,编辑文件bashrc

nano ~/.bashrc

并添加以下内容

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

使得文件生效

source ~/.bashrc

查看cuda 是否安装成功以及是否添加到环境变量当中

nvcc -V

3.安装cudnn

官网下载cudnn文件,并解压,注意对应版本的cuda的cudnn,这里是cuda10.0对应的文件

tar -xzvf cudnn-10.0-linux-x64-v7.4.1.5.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

查看cuda是否安装成功以及是否添加到环境变量当中,cudnn是否安装成功

cat  /usr/local/cuda/version.txt
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

至此,CUDA即可安装到系统当中。
在使用过程中会出现一下的问题:

/sbin/ldconfig.real: /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn.so.7 is not a symbolic link

首先打开libcudnn.so.7所在的目录.

cd cd /usr/local/cuda-9.0/lib64/

这里会发现发现libcudnn.so.7 和libcudnn.so.7.6.5 两个文件,但 理论上只有一个libcudnn.so.7.6.5.

解决方法是创建一个软连接方式:

sudo mv libcudnn.so.7 libcudnn.so.7.bak
sudo ln -sf /usr/local/cuda-10.2/lib64/libcudnn.so.7.6.5 /usr/local/cuda-10.2/lib64/libcudnn.so.7
sudo ldconfig #更新软件源

遇到的问题

在安装CUDNN的时候会遇到cudnn_version.h找不到的情况,这需要在第3小结修改以下的复制命令

sudo cp cuda/include/cudnn*.h /usr/local/cuda/include

这样就会有对应的文件了。

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

Ubuntu安装CUDA和CUDNN教程 的相关文章

  • Native TF 与 Keras TF 性能比较

    我使用本机和后端张量流创建了完全相同的网络 但在使用多个不同参数进行了多个小时的测试后 仍然无法弄清楚为什么 keras 优于本机张量流并产生更好 稍微但更好 的结果 Keras 是否实现了不同的权重初始化方法 或者执行除 tf train
  • 如何查明 Ubuntu 上安装了哪个版本的 GTK+?

    我需要确定 Ubuntu 上安装了哪个版本的 GTK 男人似乎不帮忙 这个建议 https stackoverflow com a 126145 会告诉您安装了哪个 2 0 的次要版本 不同的主要版本将具有不同的包名称 因为它们可以在系统上
  • 未找到命令“ember”

    看来我搞砸了 ember cli 安装 我已经使用 sudo 安装了 npm 但是在阅读了 npm 上 ember cli 和 sudo 的一些问题后 我按照此处的说明卸载并重新安装https gist github com isaacs
  • VS 程序在调试模式下崩溃,但在发布模式下不崩溃?

    我正在 VS 2012 中运行以下程序来尝试 Thrust 函数查找 include cuda runtime h include device launch parameters h include
  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复
  • Jenkins中找不到环境变量

    我想在詹金斯中设置很多变量 我试过把它们放进去 bashrc bash profile and profile of the jenkins用户 但 Jenkins 在构建发生时找不到它们 唯一有效的方法是将所有环境变量放入Jenkinsf
  • apt-get 无法在 ubuntu dockerfile 中工作

    我对 docker 相当陌生 正在尝试通过编写自己的镜像来学习 并且目前正在阅读 Docker 的实际操作 ISBN 1633430235 在我自己的代码和书中的示例 第 146 页 中 我想通过 dockerfile 安装 git My
  • 如何在ubuntu的conda环境中更改Rstudio中的R版本

    我在基本系统中安装了 R 4 3 和 Rstudio 在 conda 环境中安装了旧版本的 R 4 2 3 命令which R返回环境中安装的 R 的目录 home 用户 miniconda3 envs anndata2ri pip bin
  • PostgreSQL - 致命:用户“myuser”身份验证失败[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我刚刚在我的 Ubuntu Box 中安装了 PostGreSQL 我想做的第一件事就是创建一个数据库 我读了文档 http www postgres
  • 将 nvidia 运行时添加到 docker 运行时

    我正在运行虚拟机GCP配备特斯拉 GPU 并尝试部署一个PyTorch基于应用程序使用 GPU 加速 我想让 docker 使用这个 GPU 可以从容器访问它 我设法在主机上安装了所有驱动程序 并且该应用程序在那里运行良好 但是当我尝试在
  • 最小化 MC 模拟期间存储的 cuRAND 状态数量

    我目前正在 CUDA 中编写蒙特卡罗模拟 因此 我需要生成lots使用随机数cuRAND图书馆 每个线程处理一个巨大的元素floatarray 示例中省略 并在每次内核调用时生成 1 或 2 个随机数 通常的方法 参见下面的示例 似乎是为每
  • Tomcat 6找不到mysql驱动

    这里有一个类似的问题 但关于类路径 ClassNotFoundException com mysql jdbc Driver https stackoverflow com questions 1585811 classnotfoundex
  • PHP 无法打开流:是一个目录

    非常简单的 PHP 脚本 我在我亲自设置的 Ubuntu Web 服务器上的 EE 模板中运行 我知道这与权限有关 并且我已经将我尝试写入的目录的所有者更改为 Apache 用户 我得到的错误是 遇到 PHP 错误 严重性 警告 消息 fi
  • 具有 Cuda Thrust 的多个 GPU?

    如何将 Thrust 与多个 GPU 一起使用 这只是使用 cudaSetDevice deviceId 的问题吗 然后运行相关的 Thrust 代码 使用 CUDA 4 0 或更高版本 cudaSetDevice deviceId 接下来
  • cuda 文件组织的有效方式:.cpp .h .cu .cuh .curnel 文件

    cuda最容易理解 最高效的代码组织是什么 经过一番调查后 我发现 cuda 函数声明应位于 cuh 文件中 实现位于 cu 文件中 内核函数实现位于 curnel 文件中 其他 C 内容通常在 cpp 和 h 文件中 最近我发布了一个问题
  • Ubuntu systemd 自定义服务因 python 脚本而失败

    希望获得有关 Ubuntu 中的 systemd 守护进程服务的一些帮助 我写了一个 python 脚本来禁用 Dell XPS 上的触摸屏 这更像是一个问题 而不是一个有用的功能 该脚本可以工作 但我不想一直启动它 这就是为什么我想到编写
  • CUDA 5.0错误LNK2001:cuda方法无法解析的外部符号

    我的链接器有错误 1 gt ManifestResourceCompile 1 gt All outputs are up to date 1 gt kernel cu obj error LNK2001 unresolved extern
  • Python 应用程序需要 init.d 脚本

    我有一个基于 python 的应用程序 它的工作方式类似于 feed 聚合器 并且需要成为 init d 脚本的一部分 以便我可以使用启动 停止 重新启动选项来控制执行 另外 我希望将 init d 脚本设置为 cron 作业 我在这里有示
  • PyInstaller 是否包含 CUDA

    我正在开发一个Python脚本 我使用Python 3 7 3 它使用tensorflow gpu 1 14 0 并使用PyInstaller 3 5将此脚本转换为可执行文件 我使用的是 CUDA 10 0 和 cuDNN 7 6 1 我的
  • 有条件减少 CUDA

    我需要总结一下100000值存储在数组中 但带有条件 有没有办法在 CUDA 中做到这一点以快速产生结果 任何人都可以发布一个小代码来做到这一点吗 我认为 要执行条件约简 您可以直接将条件引入为乘法0 假 或1 真 加数 换句话说 假设您希

随机推荐