Windows 环境搭建 CUDA 和 cuDNN 详细教程

news2024/11/28 11:37:04

CUDA

  1. CUDA(Compute Unified Device Architecture)是由NVIDIA公司推出的一个并行计算平台和编程模型,它允许开发者使用NVIDIA GPU进行通用计算(即GPGPU),从而加速各种计算密集型任务。CUDA提供了一套基于C/C++的编程语言扩展,使得开发者能够编写在GPU上运行的代码,利用GPU的并行处理能力来提升程序性能。

  2. CUDA的架构包括多个核心概念,如线程、线程块、网格以及内存模型。线程是CUDA中最小的执行单位,线程块是一组线程的集合,它们可以共享数据和同步操作。网格则是由多个线程块组成,用于执行大规模的并行计算任务。CUDA的内存模型包括全局内存、共享内存、常量内存和纹理内存,它们各自有不同的访问速度和用途。

  3. NVIDIA发布的CUDA Toolkit 12.0,这是多年来的第一个主要版本,它支持NVIDIA Hopper和Ada
    Lovelace架构的新功能,并提供了新的编程模型和性能优化。此外,CUDA Toolkit 12.2也已发布,引入了对NVIDIA Hopper(H100)GPU的支持,以及异构内存管理(HMM)等新特性。

  4. CUDA技术在科学计算、大数据分析、机器学习和图形处理等领域有广泛应用。例如,在深度学习领域,CUDA与TensorFlow、PyTorch等深度学习框架深度整合,提供了高效的计算加速。

CUDA安装步骤

  1. 查看本机设备NVIDIA显卡对应的驱动版本和CUDA版本,PowerShell中输入命令 nvidia-smi;可以看到驱动Driver和CUDA的版本;或者利用NVIDIA控制面板按照系统信息->组件->NVCUDA64.DLL查看详细CUDA版本;
    在这里插入图片描述
    在这里插入图片描述

  2. 确定本机设备显卡的算力:https://developer.nvidia.com/cuda-gpus;可以看到本机设备显卡3060的计算算力为8.6;
    在这里插入图片描述
    在这里插入图片描述

  3. 安装CUDA Toolkit:https://developer.nvidia.com/cuda-toolkit-archive;选择本机设备显卡需要的CUDA Toolkit版本下载;
    在这里插入图片描述

  4. 按照下图的1-2-3-4-5的顺序点击,进行下载;
    在这里插入图片描述

  5. 点击下载好的的 exe 进行安装;
    在这里插入图片描述

  6. 默认路径即可,此时是临时数据;
    在这里插入图片描述
    在这里插入图片描述

  7. 进入安装界面,选择继续;
    在这里插入图片描述
    在这里插入图片描述

  8. 选择自定义安装,全选;

在这里插入图片描述
在这里插入图片描述

  1. 确定安装路径,进行安装;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 安装结束;
    在这里插入图片描述
  2. 验证是否安装成功,PowerShell输入命令:nvcc -V,返回如下即表示安装成功。
    在这里插入图片描述

cuDNN

cuDNN(CUDA Deep Neural Network library)是NVIDIA推出的一个深度学习加速库,它为深度神经网络提供了高度优化的GPU加速原语。cuDNN特别针对深度学习中常见的操作进行了优化,如前向和后向卷积、池化层、归一化和激活层等,从而大幅提升了深度学习模型训练和推理的性能。
cuDNN的主要特点包括:

  1. Tensor Core加速:支持多种卷积操作的Tensor Core加速,包括2D卷积、3D卷积、分组卷积、深度可分离卷积等。
  2. 运行时融合:通过新的运算符、启发式算法和融合迅速编译内核,提高了内存和计算效率。
  3. 多精度支持:支持FP32、FP16、BF16和TF32浮点格式以及INT8和UINT8整数格式,允许开发者根据需要选择不同的精度和性能平衡。
  4. 灵活的API:提供了C API和开源的C++前端API,方便用户使用。
  5. 广泛的框架支持:与多个流行的深度学习框架集成,如TensorFlow、PyTorch、Caffe等。

cuDNN安装步骤

  1. 下载官网:https://developer.nvidia.com/cudnn-downloads
    在这里插入图片描述
  2. 按照 1-2-3-4-5 的步骤点击选择,进行下载;
    在这里插入图片描述
  3. 解压下载下来的压缩包,里面有includelibbin三个文件夹和LICENSE文件;

在这里插入图片描述

  1. 将下载文件解压后放换到NVIDIA GPU TookitC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3)里对应的目录binincludelib中。
    (1)将下载下来的cudnn中bin文件拷贝到NVIDIA GPU Tookit的bin中。
    在这里插入图片描述
    在这里插入图片描述

(2)将下载下来的cudnn中include文件拷贝到NVIDIA GPU Tookit的include中。
在这里插入图片描述
在这里插入图片描述

(3)将下载下来的cudnn中lib\x64中文件拷贝到NVIDIA GPU Tookit目录x64\lib中。

在这里插入图片描述
在这里插入图片描述

  1. 验证安装是否成功:“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\extras\demo_suite>”,然后分别运行里的 bandwidthTest.exedeviceQuery.exe,有PASS即代表成功。
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

linux文件编程_线程

1. 基本概念 1.1. 进程与线程的概念 典型的UNIX/linux进程可以看成是只有一个控制线程,一个进程在同一时刻只做一件事情,有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。…

Web安全 - 文件上传漏洞(File Upload Vulnerability)

文章目录 OWASP 2023 TOP 10导图定义攻击场景1. 上传恶意脚本2. 目录遍历3. 覆盖现有文件4. 文件上传结合社会工程攻击 防御措施1. 文件类型验证2. 文件名限制3. 文件存储位置4. 文件权限设置5. 文件内容检测6. 访问控制7. 服务器配置 文件类型验证实现Hutool的FileTypeUtil使用…

STM32使用Keil5 在运行过程中不复位进入调试模式

一、选择Options for Target进入设置 二、选择所使用的调试器,这里以ST-Link为例。取消勾选Load Application at Startup 可以在进入调试模式的时候不会从新加载程序!从而不破坏现场 三、点击Setting进入 四、取消勾选Reset after Connect 使得调试器连接…

探索 aMQTT:Python中的AI驱动MQTT库

文章目录 探索 aMQTT:Python中的AI驱动MQTT库背景介绍aMQTT是什么?如何安装aMQTT?简单库函数使用方法场景应用常见问题及解决方案总结 探索 aMQTT:Python中的AI驱动MQTT库 背景介绍 在物联网和微服务架构的浪潮中,MQ…

Redis:string类型

Redis:string类型 string命令设置与读取SETGETMSETMGET 数字操作INCRINCRBYDECRDECRBYINCRBYFLOAT 字符串操作APPENDSTRLENGETRANGESETRANGE 内部编码intembstrraw 在Redis中,字符串string存储的是二进制,以byte为单位,输入的二进…

ICPC-day1(NTT)

NTT经典例题 CCPC-Winter-Camp-day6-A——NTT经典例题 对于上面格式,如果想求出每个i的值可以使用卷积求出,因为阶乘j和阶乘i-j相乘的值为(i(i-j))i 补充一个二次剩余定理 P5491 【模板】二次剩余 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) //#in…

【MySQL】DML数据操作语句和基本的DQL语句

目录 一、Mysql对数据的增删改 1. 增加数据 2. 修改数据(UPDATE语句) 3. 删除 3.1 delete、truncate、drop区别 二、DQL语言(重点) 1. 单表查询 1.1 最简单的查询 1.2 从表中获取数据 1.3 字段名起别名 1.4 添加字段 1…

[20231103消息] 大模型商业化模式详解:烧钱之后如何挣钱?

距ChatGPT3.5发布已近一年,大模型狂热开始逐步降温:GPU禁运及长期烧钱的事实,让国内的大模型企业,不得不加速商业化考量。 目前,大模型的B端应用已经出现各种定价方法,包括按照时间段收费、按调用量收费以…

class 030 异或运算的骚操作

这篇文章是看了“左程云”老师在b站上的讲解之后写的, 自己感觉已经能理解了, 所以就将整个过程写下来了。 这个是“左程云”老师个人空间的b站的链接, 数据结构与算法讲的很好很好, 希望大家可以多多支持左程云老师, 真心推荐. https://space.bilibili.com/8888480?spm_id_f…

Java中Map和Set详细介绍,哈希桶的实现

大家好呀,前一节我们接触了二叉搜索树,那么紧接着,我们要学习一种十分重要而且也是我们在初阶数据结构中接触的最后一种数据结构—Map和Set,本篇博客将会详细介绍两种数据结构,并且针对哈希表底层实现一个哈希桶&#…

基于元神操作系统实现NTFS文件操作(三)

1. 背景 本文主要介绍DBR的读取和解析,并提供了基于元神操作系统的实现代码。由于解析DBR的目的是定位到NTFS磁盘分区的元文件$Root进行文件操作,所以只解析了少量的部分,其它部分可以参考相关文档进行理解。 DBR存在于磁盘分区的第一个扇区…

《数据结构》--链表【包含跳表概念】

不知道大家对链表熟悉还是陌生,我们秉着基础不牢,地动山摇的原则,会一点点的介绍链表的,毕竟链表涉及的链式存储也很重要的。在这之前,我们认识过顺序存储的顺序表,它其实就是一个特殊的数组。那链表到底是…

树莓派 AI 摄像头(Raspberry Pi AI Camera)教程

系列文章目录 前言 人们使用 Raspberry Pi 产品构建人工智能项目的时间几乎与我们生产 Raspberry Pi 的时间一样长。随着我们发布功能越来越强大的设备,我们能够支持的原生应用范围也在不断扩大;但无论哪一代产品,总会有一些工作负载需要外部…

SpringBoot介绍及整合Mybatis Plus

目录 SpringBoot背景及特点 SpringBoot整合Mybatis Plus SpringBoot背景及特点 SpringBoot的设计目是抛弃之前Spring、SpringMVC繁杂的配置过程,简化开发过程。之前的Spring框架需要大量的手动配置,包括XML配置文件或Java配置类,配置过程繁…

深入理解 Git 一个开发者的必备工具

深入理解 Git 一个开发者的必备工具 演示地址 演示地址 获取更多 获取更多 在现代软件开发中,版本控制系统扮演着至关重要的角色。其中,Git 是最流行的选择之一。无论你是新手还是有经验的开发者,了解 Git 的基本概念和使用方法都能大大提…

YOLO v11实时目标检测3:训练数据集格式说明

一、Yolov11简介 YOLOv11 是 YOLO 系列的最新版本,它不仅在目标检测方面表现出色,还引入了对象分割和多目标跟踪的功能。本文将介绍如何使用 YOLOv11 进行人流统计、车流统计以及跟踪的实际应用。 二、Yolo v11训练数据集格式说明 2.1 数据组织&#…

SAT分离轴定理的c++/python实现

分离轴定理的c/python实现 现在要对BEV模型检查出来的车辆做NMS,把3d框的平面属性获取到后,配合旋转角度投影到地面就是2D图形。 开始碰撞检测,判断是否重叠,保留置信度高的框就行。 原理 分离轴定理(Separating A…

(C语言贪吃蛇)11.贪吃蛇方向移动和刷新界面一起实现面临的问题

目录 前言 实现效果 支持方向变换 修改默认效果 如何修改 总结 前言 我们上节实现了不需要按下右键就可以是贪吃蛇自发的向右移动,本节我们主要来解决贪吃蛇方向移动和刷新界面所遇到的问题。 实现效果 上图是我们希望实现的效果,我们可以自发地控…

Go 进阶:Go + gin 极速搭建 EcommerceSys 电商系统

Go 进阶:Go + gin 极速搭建 EcommerceSys 电商系统 前言 本章节适合有一定基础的 Golang 初学者,通过简单的项目实践来加深对 Golang 的基本语法和 Web 开发的理解。 具体请联系作者 项目结构 项目流程图 技术栈 项目结构 项目路由 4. 项目模型 项目初始化 初始化项目文…

归并排序【C语言版-笔记】

目录 一、概念二、排序流程理解三、代码实现3.1主调函数3.2 merge函数 四、性能分析 一、概念 归并是一种算法思想,是将两个或两个一上的有序表合并成一个长度较大的有序表。若一开始无序表中有n个元素,可以把n个元素看作n个有序表,把它们两…