ubuntu20.04安装CUDA与cudnn

news2024/9/29 10:40:02

这里写目录标题

  • 一、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.coloradmin.cn/o/2176452.html

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

相关文章

DCDC电源设计工具(软件)(二)—— DC/DC Designer(MPS)

目录 一、简介 二、主页介绍 1、芯片选择 (1)在数据库中选择芯片 (2)通过下拉列表/具体型号选择芯片 2、编辑参数 (1)输入主要规格 (2)输入可选规格 (3&…

基于Arduino的自弹尤克里里机器人

需要项目源码资料的可以私信我 基于Arduino的自弹尤克里里机器人 一、简介二、材料清单三、工具四、实现过程步骤1:实物图步骤2:3D打印部件步骤3:组装上半部分步骤4:组装下半部分步骤5:安装导轨步骤6:设置…

人工打电话的操作步骤指南

如果有一套外呼系统,那么在功能上有哪些具体如何操作 在进行人工电话沟通时 一套清晰、高效的操作流程对于实现沟通目标至关重要 以下是详细的人工打电话操作步骤 涵盖从准备到后续跟进的全过程 如果有一套外呼系统,那么在功能上有哪些具体如何操作 …

CST仿真分析:圆柱形谐振腔的模式分析

波导谐振器一般可以由波导两端短路形成,矩形和圆柱形谐振腔比较常见。矩形谐振腔模式的表示,是从波导的TEmn和TMmn变成了TEmnp和TMmnp,p是沿z方向的周期。之所以我们这里分析圆柱形,一是三个下角标更不容易理解(TEnip和…

组合优化与凸优化 学习笔记5 对偶拉格朗日函数

有的时候约束条件有点难搞,我们可以把它放到目标函数里面。 记得之前凸函数的时候的结论吗?一大堆函数,每一段都取最大的,最后会得到一个凸函数。同理,每一段都取最小的,得到的是一个凹函数。就这样&#x…

【如何学习操作系统】——学会学习的艺术

🐟作者简介:一名大三在校生,喜欢编程🪴 🐡🐙个人主页🥇:Aic山鱼 🐠WeChat:z7010cyy 🦈系列专栏:🏞️ 前端-JS基础专栏✨前…

酒店智能开关:引领未来住宿体验的新篇章

酒店智能开关作为智能化改造的关键一环,正逐步成为提升酒店服务品质、管理效率和竞争力的新引擎。本文将深入探讨酒店智能开关的特点、应用实例及其为酒店业带来的多方面变革。 一、酒店智能开关的特点 酒店智能开关是一种基于智能化技术的电力控制设备,…

Mysql(3:Mysql事务)

目录 说明 前言 事务 ACID: 并发事务的问题: 解决方案: uddo log 和redo log的区别: 先了解数据库的页概念: redo log: undo log: 区别: mvcc: 说明 本文适合刚刚学习Java的初学者,也可以当成阿岩~的随手笔记.接下来就请道友们和我一起来学习吧! 如果本文有写的不对…

SSM环卫人员管理平台—计算机毕业设计源码36412

目 录 摘要 1 绪论 1.1背景及意义 1.2国内外研究概况 1.3研究内容 1.4 ssm框架介绍 1.5论文结构与章节安排 2 环卫人员管理平台系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.2.2数据修改流程 2.2.3数据删除流程 2.3 系统功能分析 2.3.1 功能性…

如何使用 Bittly 进行串口指令调试 - 复杂参数构建与解析

在使用串口进行数据收发时, 如果数据内容比较复杂, 例如包含了时间戳或者校验码等需要计算的数据或者需要处理不同的数据类型以及大小端等,在这种情况下常见的串口调试助手可能处理起来比较麻烦, 但使用 Bittly 的话, …

大功率蓝外光激光模组能使用多长时间?

在高科技迅猛发展的今天,大功率蓝外光激光模组作为精密光学技术的重要成果,广泛应用于科研探索、工业加工及安防监控等多个领域。其强大的光束能量与独特的波长特性,为各行各业带来了前所未有的效率提升与创新可能。然而,对于这一…

量化金融中的 AI 革命:LLMs 如何重新定义交易策略

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话: 量化金融领域正在经历由大型语言模型(LLMs)引起的人工智能革命,这些模型正在改变交易策略的开发和实施方式,提高市场分析的精确度,增强情绪分析和交易信号的有效性,优化算法交易策略,并强化风…

助农小程序|助农扶贫系统|基于java的助农扶贫系统小程序设计与实现(源码+数据库+文档)

助农扶贫系统小程序 博主介绍:✌️大厂码农|毕设布道师,阿里云开发社区乘风者计划专家博主,CSDN平台Java领域优质创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。✌️ 主要项目:小程序、SpringBoot、SSM、Vue、…

Docker:安装 Memcached 对象缓存的技术指南

请关注微信公众号:拾荒的小海螺 博客地址:http://lsk-ww.cn/ 1、简述 缓存是一种提高应用程序性能的常用技术,通过在内存中存储频繁访问的数据,可以显著减少对数据库的访问次数,从而提升响应速度。Memcached是一个高…

独立站如何批量查收录?常用的3个的方法及其具体操作步骤

独立站批量查收录是SEO优化中重要的一环,它有助于了解网站在搜索引擎中的表现,从而制定更有效的优化策略。以下是几种常用的独立站批量查收录的方法及其具体操作步骤: 一、使用搜索引擎的Site指令结合自动化工具 方法描述&#xff1a…

S32K312 RTD 4.0.0 版本 OCU 例程配置流程说明

一、前言 由于 RTD 4.0.0 版本并没有 S32K312 相关例程,本文基于已有的 S32K344 OCU 例程,新建 S32K312 工程,讲解 OCU 例程的相关配置流程。 二、基本概念 OCU(Output Compare Unit – 输出比较单元)本质上是一个计…

【anki】显示 “连接超时,请更换网络后重试” 怎么办

文章目录 前言一、问题描述二、解决方案 前言 在 anki同步 时遇到的问题 一、问题描述 二、解决方案 从电信换为了移动热点,电脑手机都同步成功了

django开发流程2

一,通过视图函数访问html 1.首先导入render from django.shortcuts import render 2.在mysite下面创建一个目录 templates 3.在mysite下方的settings中修改存放模板的路径 二.添加静态文件 1.在mysite下面创建一个目录 (静态文件) :static 2.自定义静态文件路…

第十三届蓝桥杯真题Python c组A.排列字母(持续更新)

博客主页:音符犹如代码系列专栏:蓝桥杯关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 【问题描述】 小蓝要把一个字符串中的字母按其在字母表中的顺序排列。 例如&a…

AAMAS 24 | 基于深度强化学习的多智能体和自适应框架用于动态组合风险管理

AAMAS 24 | 基于深度强化学习的多智能体和自适应框架用于动态组合风险管理 原创 QuantML QuantML 2024年09月09日 18:23 上海 J.P.Morgan的python教程 Content 本文提出了一个名为MASA的多智能体和自适应框架,利用深度强化学习技术,通过两个合作的智能…