ubuntu20.04安装CUDA与cudnn

这里写目录标题

  • 一、NVIDIA显卡驱动安装
  • 二、安装CUDA
    • 官网找对应版本
    • 下载安装文件
    • 安装
    • 配置环境变量
  • 三、安装cuDNN
    • 选择版本
    • 另一种下载方式
  • 四、cuDNN与CUDA关系
    • CUDA
    • cuDNN的依赖关系
    • 与CPU的交互
    • 开发编程角度
    • 图示
  • 总结

一、NVIDIA显卡驱动安装

我这里之前就装好了
使用命令

nvidia -smi //查看驱动型号

在这里插入图片描述
还需要知道Ubuntu的版本号
我是直接使用图形化界面打开了/etc/os-release文件
在这里插入图片描述
也可以直接使用命令查看

cat /etc/os-release

准备工作做好之后,就进行CUDA的安装

二、安装CUDA

官网找对应版本

官网上找到驱动和CUDA的对应关系
链接: https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
在这里插入图片描述

下载安装文件

下载地址
链接: https://developer.nvidia.com/cuda-12-2-2-download-archive
在这里插入图片描述
顺着往下点,找到和你的系统一一对应的版本
在这里插入图片描述
有三种下载方式,根据自己系统情况选择相应选项,我三个都试了,都失败了,别人说最后一个选择runfile最不容易出问题,但是我也失败了
这里说一下遇到的问题,不敢兴趣的同学可以直接跳过:

首先使用的是deb(local)的安装,执行到第3句的时候,每次都需要70多分钟,最后99%的时候报错–段错误(核心已转储)
在这里插入图片描述
在这里插入图片描述
同样的使用runfile(local)时,出现了同样的问题,总之就是仓库包没有拉下来,报段错误(这个问题没有解决)
曲线救国–下载安装包
使用工具拉不下来,咱就自己下载安装包
仍旧选择deb(local)下载安装包到本地,然后继续执行后面的命令,直到最后一个命令,安装CUDA的时候报错
在这里插入图片描述
最后!成功的是使用本地下载的runfile文件,执行成功
在这里插入图片描述
直接复制这个地址到浏览器,就可以直接下载了https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run
在这里插入图片描述

安装

下载完成之后,还使用命令运行run文件

sudo sh cuda_12.2.2_535.104.05_linux.run

选择continue继续
在这里插入图片描述
输入accept,回车
在这里插入图片描述
使用回车取消第一个驱动,因为驱动已经安装好了了,接着移动到install安装
在这里插入图片描述
安装成功,出现下面的界面
在这里插入图片描述

配置环境变量

打开配置文件----在.bashrc文件里配置环境变量

sudo vim ~/.bashrc

在打开文件的最后一行之后追加下面内容:

export PATH=$PATH:/usr/local/cuda/bin  
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.2/lib64  
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-12.2/lib64

/usr/local/cuda-12.2/目录是CUDA的安装路径。如果你使用了不同的安装路径,需要相应地修改上述命令中的路径。
要应用上面这些更改,需要重新加载shell配置文件

source ~/.bashrc

检查 CUDA Toolkit是否安装成功

$nvcc -V 

三、安装cuDNN

选择版本

官网找到和CUDA的对应版本
链接: https://developer.nvidia.com/rdp/cudnn-archive
在这里插入图片描述
点开
在这里插入图片描述
下载压缩包,然后解压缩

tar zxvf 压缩文件名 .

将cuDNN库的文件安装或复制到指定的CUDA安装目录下,并确保这些文件对所有用户都是可读的。

sudo cp cuda/include/cudnn.h /usr/local/cuda-12.2/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-12.2/lib64
sudo chmod a+r /usr/local/cuda-11.2/include/cudnn.h 
sudo chmod a+r /usr/local/cuda-11.2/lib64/libcudnn*

到此,cudnn安装配置完成了!

命令解释:(不想了解命令的作用的可以直接跳过这一段)
首先复制cuDNN头文件:
第一条命令将cudnn.h(cuDNN的头文件)从cuda/include/目录复制到/usr/local/cuda-11.2/include/目录。cudnn.h是cuDNN库的主要头文件,包含了调用cuDNN函数所需的声明和定义。复制到CUDA安装目录下的include子目录是为了确保在编译时能够找到这些头文件。

复制cuDNN库文件:
第二条命令将cuda/lib64/目录下所有以libcudnn开头的文件(通常是cuDNN的动态链接库文件)复制到/usr/local/cuda-11.2/lib64/目录。这些库文件包含了cuDNN函数的实现,对于在运行时使用cuDNN功能是必需的。

设置cuDNN头文件为可读:
第三条命令通过修改文件权限,使得所有用户(a表示所有用户)都能读取(+r表示添加读取权限)/usr/local/cuda-11.2/include/cudnn.h文件。这是为了确保在编译时,任何用户都能够访问到这个头文件。

设置cuDNN库文件为可读:
类似于上一步,第四条命令将所有以libcudnn开头的库文件在/usr/local/cuda-11.2/lib64/目录下的权限设置为对所有用户可读。这是为了确保在运行时,任何用户都能够访问到这些库文件。

另一种下载方式

官网
在这里插入图片描述
这里没有选择和CUDA版本对应的选项,所以安装之后,运行有问题,小伙伴可以自己试试,我这里没有成功。

四、cuDNN与CUDA关系

cuDNN(NVIDIA CUDA Deep Neural Network library)是一个专门为深度学习设计的GPU加速库,它依赖于CUDA平台来执行其优化操作。

CUDA

CUDA是NVIDIA推出的一个并行计算平台和编程模型,它允许开发者利用NVIDIA GPU的并行计算能力来加速计算密集型应用程序。CUDA提供了GPU编程的接口和工具,使得开发者能够编写在GPU上运行的程序。
● 底层硬件交互:CUDA负责直接与GPU硬件进行交互,管理GPU上的计算资源、内存资源等,为上层应用提供高效的并行计算能力。

cuDNN的依赖关系

● 基于CUDA的加速:cuDNN是建立在CUDA平台之上的,它利用CUDA提供的GPU并行计算能力来加速深度学习中的各种操作,如卷积、池化、激活函数等。cuDNN通过高度优化的算法和GPU加速技术,显著提高了深度学习模型的训练速度和推理速度。
● API与函数库:cuDNN提供了一套丰富的API和函数库,这些API和函数库都是基于CUDA编写的。开发者在编写深度学习应用时,可以通过调用cuDNN的API来利用GPU加速深度学习操作。这些API背后是cuDNN在CUDA平台上实现的优化算法和并行计算逻辑。

与CPU的交互

● CPU与GPU的协同工作:虽然cuDNN主要依赖于CUDA平台来执行GPU加速操作,但在深度学习应用中,CPU和GPU通常是协同工作的。CPU负责处理一些不适合并行计算的任务,如数据预处理、模型参数更新等,而GPU则负责执行大规模并行计算任务,如神经网络的前向传播和反向传播。
● 数据传输与同步:在CPU和GPU之间,需要频繁地进行数据传输和同步操作。CUDA提供了相应的机制来支持这些操作,如内存拷贝函数(如cudaMemcpy)和同步函数(如cudaDeviceSynchronize)。cuDNN在执行深度学习操作时,也会利用这些机制来确保数据的正确传输和同步。

开发编程角度

  1. 开发人员编程:
    开发人员编写深度学习应用时,会包含cuDNN的头文件(如cudnn.h),这些头文件提供了cuDNN库的类型定义、函数声明等接口信息。
    开发人员通过调用这些接口(即cuDNN提供的函数)来执行深度学习中的操作,如卷积、池化等。
  2. cuDNN调用CUDA:
    当开发人员调用cuDNN的某个函数时,该函数内部会进一步调用CUDA的接口(API)来实现具体的GPU加速操作。
    cuDNN作为一个高级别的库,它封装了底层的CUDA调用,使得开发人员可以更加专注于深度学习算法的实现,而不需要深入了解GPU的硬件细节和CUDA的编程细节。
  3. CUDA与GPU交互:
    CUDA的接口负责与GPU硬件进行交互,管理GPU上的计算资源、内存资源等。
    CUDA通过驱动程序与GPU硬件进行通信,将计算任务分配给GPU上的不同核心(或称为CUDA核心)来并行执行。
    CUDA还提供了内存管理、同步机制等功能,以确保GPU上的计算任务能够正确、高效地执行。

图示

总结起来就是我上一篇文章( AI服务器环境搭建-总结和思考)中画的图中的下边一部分
在这里插入图片描述

总结

为了构建一个高效、灵活且功能强大的深度学习开发环境,需要安装PyTorch、Miniconda、cuDNN、CUDA四款软件,它们共同构成了一个完整的深度学习开发环境,能够支持高效的模型训练、推理和部署。今天主要写了cuDNN,CUDA的安装,过几天我再写一下关于miniconda和pytorch的安装。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1550891.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Windows11系统下Docker环境搭建教程

目录 前言Docker简介安装docker总结 前言 本文为博主在项目环境搭建时记录的Docker安装流程,希望对大家能够有所帮助,不足之处欢迎批评指正🤝🤝🤝 Docker简介 Docker 就像一个“容器”平台,可以帮你把应用…

5.模拟电子技术笔记——放大电路的分析方法

写在前面 这个是模电的第五次笔记,祝大家学习愉快! 笔记部分 1.图解法 我们这节的所有电路都默认是共射放大电路,后面如果没有特殊说明都是共射极的。 1.1 静态工作点的图解分析 我们接下来画出这个电路的直流回路 我们先考察它的输入回…

云中红队系列 | 使用 Azure FrontDoor 混淆 C2 基础设施

重定向器是充当 C2 服务器和目标网络之间中间人的服务器。其主要功能是重定向 C2 和受感染目标之间的所有通信。重定向器通常用于隐藏 C2 服务器流量的来源,使防御者更难以检测和阻止 C2 基础设施。 基于云的重定向器提供了一个很好的机会,通过内容分发…

Mixture-of-Experts (MoE): 条件计算的诞生与崛起【下篇】

将 Mixture-of-Experts 应用于 Transformers 既然我们已经研究了条件计算的早期工作,那么我们就可以看看 MoE 在变换器架构中的一些应用。 如今,基于 MoE 的 LLM 架构(如 Mixtral [13] 或 Grok)已广受欢迎,但 MoE 在语…

Python | Leetcode Python题解之第447题回旋镖的数量

题目: 题解: class Solution:def numberOfBoomerangs(self, points: List[List[int]]) -> int:ans 0for p in points:cnt defaultdict(int)for q in points:dis (p[0] - q[0]) * (p[0] - q[0]) (p[1] - q[1]) * (p[1] - q[1])cnt[dis] 1for m i…

GitHub下载MY-SITE

1、GitHub下载my-site 解压 打开项目 ApiOperation swagger日志的 七牛云-云平台 dao和model统称为pojo--实体类 删除docker 2、创建数据库 执行sql 3、链接数据库 扫描dao曾的包 46、鸡汤分析开源项目_哔哩哔哩_bilibili 修改yaml 启动 http://localhost:8089/a…

大数据开发--1.1大数据概论

目录 一.大数据的概念 什么是大数据? 二. 大数据的特点 三. 大数据应用场景 四. 大数据分析业务步骤 大数据分析的业务流程: 五.大数据职业规划 职业方向 岗位技术要求 六. 大数据学习路线 一.大数据的概念 什么是大数据? 数据 世界…

Vue3阶段前置知识

目录 1.数组元素操作 2.对象的操作 3.变量和常量 4.模版字符串 4.1模版和普通的比较 4.2优点一的对比 4.3优点二的对比 5.对象的取值 5.1两个取值方法 5.2对象的简写 6.解构赋值 6.1数组的解构 6.2对象的解构 6.3二重解构 7.箭头函数 7.1函数总结 7.2三个特性 …

数学建模--什么是数学建模?数学建模应该怎么准备?

前言 这是去年底学数学建模老哥的建模课程笔记;未来本人将陆陆续续的更新数学建模相关的一些基础算法,大家可以持续关注一下;提示:数学建模只有实战才能提升,光学算法没有啥意义,也很难学的很懂。 文章目录…

项目学习笔记

Downloads – Oracle VirtualBoxhttps://www.virtualbox.org/wiki/Downloads

初识C语言(四)

目录 前言 十一、常见关键字(补充) (1)register —寄存器 (2)typedef类型重命名 (3)static静态的 1、修饰局部变量 2、修饰全局变量 3、修饰函数 十二、#define定义常量和宏…

通过人工智能AI大模型定制的完美旅游行程

人工智能在购票与乘车体验优化方面发挥着重要作用,通过智能技术的应用,不仅提升了购票效率,还改善了乘车体验。以下是人工智能赋能购票与乘车体验优化的具体表现: 一、购票体验优化 智能推荐系统: 购票平台如12306利…

《深度学习》OpenCV 指纹验证、识别

目录 一、指纹验证 1、什么是指纹验证 2、步骤 1)图像采集 2)图像预处理 3)特征提取 4)特征匹配 5)相似度比较 6)结果输出 二、案例实现 1、完整代码 2、实现结果 调试模式: 三、…

06.C/C++内存管理

在这里C的内存管理相较于C作出了许多升级,下面我们就来了解一下。 1.C/C内存分布 我们先来看一下下面的问题,温习一下C的内存分布 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1…

Matlab进阶绘图第70期—正负面积图

正负面积图是指通过一条水平线将一条曲线分割为上下两部分,并分别填充不同的颜色,用以表示不同的类别属性。 由于Matlab中未收录的正负面积图的绘制方法,因此需要大家自行解决。 本文利用自己制作的PNarea工具,进行正负面积图的…

《程序猿之Redis缓存实战 · Redis 与数据库一致性》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

【Android 源码分析】Activity短暂的一生 -- 目录篇 (持续更新)

1. 前言 忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。                                                                                  …

springboot厨房达人美食分享平台(源码+文档+调试+答疑)

文章目录 前言一、主要技术?二、项目内容1.整体介绍(示范)2.运行截图3.部分代码介绍 总结更多项目 前言 厨房达人美食分享平台的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品&#xff0c…

【车载开发系列】ParaSoft单元测试环境配置(四)

【车载开发系列】ParaSoft单元测试环境配置(四) 【车载开发系列】ParaSoft单元测试环境配置(四) 【车载开发系列】ParaSoft单元测试环境配置(四)一. 如何设置过滤二. 如何设置静态扫描的规则三. 如何设置单…

Linux操作系统中Redis

1、什么是Redis Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 可以理解成一个大容量的map。…