安装cuda

news/2024/11/29 15:55:26/文章来源:https://www.cnblogs.com/kakafa/p/18574408

(1)介绍


CUDA(Compute Unified Device Architecture)

  • 是 NVIDIA 推出的一种并行计算平台和编程模型。它允许开发者利用 NVIDIA GPU(图形处理器)的强大计算能力进行通用计算,而不仅仅局限于图形渲染。eg:大量的矩阵运算等计算密集型任务

  • CUDA 提供了一套完整的开发工具,包括编译器、调试器等,使程序员能够编写在 GPU 上运行的代码。这些代码可以用 C/C++ 等编程语言编写,并通过 CUDA 的特定扩展语法来调用 GPU 的功能。例如,通过 CUDA 可以将数据从 CPU 内存传输到 GPU 内存,然后在 GPU 上启动大量的线程来并行处理数据


cuDNN(CUDA Deep Neural Network library)

  • cuDNN 是 NVIDIA 专门为深度学习任务设计的,它构建在 CUDA 之上

  • 它提供了高度优化的深度学习原语,如卷积、池化、归一化等操作的实现。以卷积神经网络(CNN)为例,卷积操作是其核心操作之一,cuDNN 对卷积操作进行了专门的优化,能够极大地提高卷积计算的速度

  • 例如,它可以根据 GPU 的架构特点(如不同的流处理器数量、内存带宽等)来调整计算策略,以达到最佳性能


  • CUDA 提供了通用的 GPU 计算功能,是一个比较基础的平台。而 cuDNN 是在 CUDA 的基础上,针对深度学习领域进行了更高层次的抽象和优化。



(2)一些疑问


问1:cuDNN是python库吗?

答1:cuDNN不是Python库。cuDNN 本质上是一个用 C/C++ 编写的库。

  • 虽然 cuDNN 本身不是 Python 库,但是在 Python 的深度学习框架(如 TensorFlow、PyTorch 等)中提供了 Python 接口来调用 cuDNN

  • 例如,当安装了支持 cuDNN 的 PyTorch 版本并且系统正确安装了 cuDNN 和 CUDA 后,PyTorch 会在底层自动利用 cuDNN 来加速深度学习操作。具体来说,在执行卷积神经网络的训练或推理过程中,像卷积层的前向传播和反向传播等操作会调用 cuDNN 中经过优化的卷积函数来提高计算速度。



问2:安装 CUDA 时会自带安装 cuDNN 吗?

答2:安装 CUDA 时并不会自带安装 cuDNN,二者需要分别进行安装

  • 只有在系统中先安装好 CUDA 后,才能安装和使用 cuDNN

  • 下载时需要根据已安装的 CUDA 版本选择对应的 cuDNN 版本,然后将下载的文件解压并复制到 CUDA 的安装目录下相应的文件夹中,还需要进行一些环境变量的配置等操作才能使用




(3)在ubuntu上安装cuda/cuDNN



如图所示,本机已经有cuda11.5和cuda12.4两个版本。

现在由于实验环境需要,要下载 cuda11.8 版本以及其配套的 cuDNN


1.查看本机的一些信息


查看系统架构:uname -m命令或arch命令

系统架构是指一个系统的基本结构和组织方式,它描述了系统的各个组成部分以及这些部分之间如何相互关联和交互。

  1. 硬件架构
    • x86架构
      • 这是一种常见的计算机微处理器架构,由英特尔(Intel)开发。x86架构有32位(如i686)和64位(如x86_64)版本。它广泛应用于个人计算机、服务器等。其特点是具有强大的计算能力和丰富的软件生态系统。
    • ARM架构
      • ARM架构最初由ARM公司设计,常用于移动设备(如智能手机、平板电脑)和嵌入式系统。ARM架构有多种变体,如arm64 - sbsa(基于服务器的标准引导架构)和aarch64 - jetson(NVIDIA Jetson系列开发板使用的架构)。ARM架构的优点是功耗低,适合电池供电设备。
  2. 软件架构
    • 包括操作系统架构(如Linux内核架构、Windows NT架构)和应用程序架构(如三层架构、微服务架构)。
      • 例如,Linux内核采用了模块化的架构,它由进程管理、内存管理、文件系统、设备驱动等模块组成,各个模块之间通过系统调用等机制相互通信和协作。

系统架构的设计需要考虑性能、可靠性、可扩展性、安全性等多个因素,不同的架构适用于不同的应用场景。例如,对于高性能计算场景,可能会选择x86架构的服务器;而对于物联网设备,通常会选择低功耗的ARM架构。


2.下载cuda安装包并安装


官网链接:https://developer.nvidia.com/cuda-11-8-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=runfile_local

根据官网给出的命令下载cuda11.8安装包:

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run

wget 命令在尝试下载 CUDA 安装包时遇到了“Permission denied”(权限被拒绝)的错误。
可以在 wget 命令前加上 sudo,这样你就可以以超级用户权限下载文件:

sudo wget https://developer.download.nvidia.cn/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run

安装包下载成功后,开始安装:

sudo sh cuda_11.8.0_520.61.05_linux.run

之后,又遇到提示“A symlink already exists at /usr/local/cuda. Update to this installation?”
因为在 /usr/local 目录下已经存在一个指向 CUDA 安装目录的符号链接(symlink)。这个符号链接通常指向你之前安装的 CUDA 版本,选择yes会将现有的符号链接更新为指向新安装的 CUDA 版本。

安装好后,检查确认环境变量配置确实连接到了cuda11.8版本:使用命令nvcc --version查看cuda版本是否是11.8版本


3.下载安装对应版本的cuDNN


cuDNN安装方式
  1. 官网下载

    • 优势:官网提供的cuDNN版本齐全,且能够确保下载到的是正版、未经篡改的软件,与NVIDIA的CUDA等相关技术具有最佳的兼容性,适合追求稳定性和兼容性的用户.
    • 劣势:下载速度可能较慢,且注册和问卷调查等流程相对繁琐.
  2. pip工具下载

    • 命令示例:在Windows系统中,要安装对应CUDA 12的cuDNN,可以在命令行中输入 py -m pip install nvidia-cudnn-cu12;如果要安装对应CUDA 11的cuDNN,则输入 py -m pip install nvidia-cudnn-cu11 。若要安装指定版本的cuDNN,如cuDNN 9.x.y.z for CUDA 12,则运行 py -m pip install nvidia-cudnn-cu12==9.x.y.z ;安装cuDNN 9.x.y.z for CUDA 11,则运行 py -m pip install nvidia-cudnn-cu11==9.x.y.z.
    • 优势:使用pip下载cuDNN较为便捷,无需手动查找和下载对应的安装包,再进行复杂的配置和安装,能够自动处理依赖关系,简化了安装过程,适合希望快速安装和使用cuDNN的用户.
    • 劣势:可选择的cuDNN版本相对有限,且可能存在与系统中已安装的其他软件或库的版本冲突问题,需要用户自行解决。

cuDNN安装路径:
  • 官网下载:安装有默认的目录,但是也可以自定义安装目录,只要配置好对应的系统变量即可正确调用。

  • pip工具下载:在 Linux 系统中,如果是在虚拟环境下使用 pip 安装 cuDNN,文件通常会被安装到虚拟环境中的lib/python[版本号]/site-packages目录。对于配置问题有以下两种情况:

    • Python深度学习框架场景下:
      • 在很多情况下,如果仅在Python虚拟环境中使用cuDNN,并且是结合如TensorFlow、PyTorch等深度学习框架使用,这些框架在设计上通常会自动检测虚拟环境中cuDNN的安装路径。
      • 例如,当在虚拟环境中正确安装了TensorFlow - GPU版本(其依赖cuDNN),在导入TensorFlow库时,它会尝试在虚拟环境下查找cuDNN相关的库文件和头文件路径。如果安装过程没有出现异常,且遵循了正常的pip安装流程,框架自身可以处理好路径查找的问题,此时可能不需要手动配置环境变量
    • 非深度学习框架相关的C/C++等语言场景下:
      • 即使是在虚拟环境中,如果要在C/C++程序中使用cuDNN,还是可能需要配置环境变量
      • 因为在编译C/C++程序时,编译器需要知道cuDNN头文件的位置,通过-I(指定头文件路径)和-L(指定库文件路径)选项来编译。例如,在Linux系统下,虚拟环境中安装的cuDNN头文件可能在/home/user/venv/lib/python[版本号]/site-packages/cudnn/include,库文件可能在/home/user/venv/lib/python[版本号]/site-packages/cudnn/lib,在编译程序时需要将这些路径通过-I-L选项告知编译器,这类似于手动配置了一种临时的“编译环境变量”。
      • 在运行C/C++程序时,在Linux系统下还需要确保LD_LIBRARY_PATH环境变量包含了库文件所在目录,否则程序可能无法找到库文件而导致运行错误。在Windows系统下,需要确保PATH环境变量包含库文件所在目录,以便正确加载动态链接库。

使用pip工具下载cuDNN

CUDA 11.8 兼容的 cuDNN 版本主要有 cuDNN 8.x 系列,eg:cuDNN 8.9 cuDNN 8.8,由于实验的需要,这里使用8.7版本


先激活虚拟环境,再使用pip工具下载对应的包即可nvidia-cudnn-cu11==8.7.0.84具体版本根据实验和本机的cuda版本来确定

(具体安装特定版本遇到的问题可参考:https://www.cnblogs.com/kakafa/p/18576875 里的内容)


另外,还可以用一种更简便的方法,如果硬件环境操作系统等都一致,可以直接用conda虚拟环境打包的功能,把整个环境复制到另一台机子上。具体操作课查询chatgpt













参考链接:https://blog.csdn.net/weixin_44573410/article/details/119735565


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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PbootCMS缩略图上传图片被截取变模糊的解决方法

在使用PbootCMS设置缩略图的时候,发现被自动截取了,缩略图没匹配到后台,而是在程序里设置的。具体方法:打开/config/config.php文件,在第40行// 缩略图配置 ico => array(max_width => 2000,max_height => 1000 ), 此两个参数为最大宽度和最大高度,max_height为空…

PbootCMS授权中文域名方法

中文域名需要转码后才能获取授权码 转码步骤:访问转码工具:https://tool.chinaz.com/urlencode 输入中文域名,选择“转成Punycode” 使用转码后的域名进行授权扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javas…

浅谈随机化算法

用处 在很多情况下,我们很难想到一道题目的正解,这时候,,我们不应什么都不干,我们可以骗分! 随机化——一种最常用的骗分方式,而且它在大部分情况下只要使用方式正确,就能获得非常高的部分分,有时甚至能骗过整道题 分类 我所知道的随机化算法大致分三种,分别是纯随机…

高效安全迁移:PG高可用集群实战方案深度解析

PostgreSQL是一个开源的数据库管理系统,相比于其他开源数据库系统,PostgreSQL有更加丰富的数据类型和可扩展性,并因此被广泛采用。在实际工作中,若企业业务需求变动,则有可能面临PG高可用集群迁移的情况。 云掣具备丰富的帮助企业迁移数据平台的实战经验,提供专业的数据库…

pip 下载包失败(特定版本eg: torch==2.2.1+cu118)

背景介绍: 有时候要复现其项目的实验时,环境需要尽量与原作者实验的环境靠近,这样结果浮现的也更加准确。 这里当需要安装torch==2.2.1+cu118等特定版本的时,出现了报错:解决办法: 根据 PyTorch 官方推荐,可以使用以下命令来安装 torch 2.2.1+cu118 版本 pip install to…

智慧工地算法视频分析服务器物料堆放识别算法:提升建筑工地环境保护与效率的关键技术

随着经济的发展和城市化进程的加速,建筑工地数量急剧增加,物料堆放管理成为工地管理中至关重要的一环。裸露的物料堆不仅会造成扬尘污染,影响空气质量,还可能引发一系列环境问题。为了解决这一难题,视频分析服务器的物料堆放识别算法成为了一项关键技术。物料堆放识别算法…

【NLP高频面题 - LLM架构篇】大模型为何使用RMSNorm代替LayerNorm?

【NLP高频面题 - LLM架构篇】大模型为何使用RMSNorm代替LayerNorm? 重要性:★【NLP高频面题 - LLM架构篇】大模型为何使用RMSNorm代替LayerNorm? 重要性:★★★ 💯NLP Github 项目:NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、…

LLM大模型: CV领域常见attention思路变种及其作用(一)

多年前做传统的机器学习,主要用的是LR、SVM、bayes、浅层nerual network、decision tree、random forest、GBDT等,这些分类或回归模型要想AUC、ROC等指标高,最核心的就是构造特征了!为此还专门诞生了一个细分领域:feather enginering,专门研究怎么构造好的feather!就实战…

[Vue] Vue optimization

Table of contentUse key Feeze object Use composition function (Vue2) Use computed lazy v-model v-model 保持对象引用稳定 Use v-show instead of v-if defer keep-alive 长列表优化 打包体积优化Use key Normally use key when you have v-for, and this keyshould be u…

启动第三方程序并嵌入到指定容器中

通过调用API 方法实现嵌入第三方程序窗口到指定容器 Code using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Win…

centos7定时备份mysql发送邮件

前几天搞服务器备份发邮件的功能,搞了好长时间都没调通,想必有很多人和我遇到过一样的问题,今天分享出来帮大家解决燃眉之急。我不允许还有不会的童鞋出现。安装mailx(邮件服务) yum install mailx -y编辑配置文件 vim /etc/mail.rcset from=xxx@qq.com #发信人地址 set s…

RSA2048生成及使用

RSA2048 小编最近裸辞了,以前工作中涉及到的RSA加密使用方法一直没有总结。 所以把RSA2048的密钥生成和使用方法写一写免得以后忘记(而且网上好多碎片化信息没有总结成一套)。 我选择的开源代码是包含了除N,P,Q,E,D之外还需要E1,E2,C的处理方式。其实大差不差,因为按照我的…