Cuda 学习教程四:GPU和Cuda逻辑关系

pytorch的cuda环境搭建(GPU版本安装) 参考 https://blog.youkuaiyun.com/MarsLee_U/article/details/80489618 https://blog.youkuaiyun.com/u011622208/article/details/80275344 注意:一定要安装cudnn,不然无法进行卷积操作 阅读详情

工欲善其事必先利其器,再次补充下GPU和Cuda之间的逻辑对应关系:

每个SM中有大量的寄存器资源,可以养活成千上万的线程。SM中另外一个重要资源是Shared Memory,没错,它正是软件抽象中Shared Memory的对应物。到这里,SM在软件抽象里的对应也呼之欲出了,没错,正是Block。我们不妨先摆出这个对应:

Block <-> SM
Thread执行 <-> CUDA Cores
Thread数据 <-> Register/Local Memory

同一Grid下的不同Block会被分发到不同的SM上执行。SM上可能同时存在多个Block被执行,它们不一定来自同一个kernel函数。每个Thread中的局域变量被映射到SM的寄存器上,而Thread的执行则由CUDA cores来完成。

SM上可以同时存在多少个Block?这由硬件资源的消耗决定:每个SM会占用一定数量的寄存器和Shared Memory,因此SM上同时存活的Block数目不应当超过这些硬件资源的限制。由于SM上可以同时有来自不同kernel的Block存在,因此有时候即便SM上剩余资源不足以再容纳一个kernel A的Block,但却仍可能容纳下一个kernel B的Block.

我们可以看到,SM上的CUDA核心是有限的,它们代表了能够在物理上真正并行的线程数——软件抽象里,Block中所有的线程是并行执行的,这只是个逻辑上无懈可击的抽象,事实上我们不可能对一个任意大小的Block都给出一个同等大小的CUDA核心阵列,来真正并行的执行它们。


因而有了Warp这个概念:物理上,Block被划分成一块块分别映射到CUDA核心阵列上执行,每一块就叫做一个Warp.目前,CUDA中的Warp都是从threadIdx = 0开始,以threadIdx连续的32个线程为一组划分得到,即便最后剩下的线程不足32个,也将其作为一个Warp.CUDA kernel的配置中,我们经常把Block的size设置为32的整数倍,正是为了让它能够精确划分为整数个Warp(更深刻的原因和存储器访问性能有关,但这种情况下仍然和Warp的size脱不了干系)。

现在可以整理一下这个世界的图景了。SM上存活着几个Block,每个Block中的变量占据着自己的寄存器和Shared Memory,Block被划分成32个线程组成的Warp. 这样,大量的Warp生存在SM上(但只有一个warp执行,其他的挂起/等待),等待被调度到CUDA核心阵列去执行。

Warp Scheduler正如其名,是这个Warp世界里的调度者。当一个Warp执行中出现等待(存储器读写延迟等)后,Warp Scheduler就迅速切换到下一个可执行的Warp,对其发送指令直到这个Warp又一次出现等待,周而复始。

抽象化模型:

CUDA框架

上图关于SM和Block的关系解释一下:每个SM在逻辑上可以包含一个Block或多个Block,但每个Block一定属于唯一一个SM.

【超全超详细】pytorch和TensorFlow(CPU和GPU版)以及CUDA与cuDNN安装教程 pytorch和TensorFlow(CPU和GPU版)以及CUDA和cuDNN的安装教程,还有血泪踩坑史 阅读详情

相关推荐

为什么深度学习模型在 GPU 上运行得更快:CUDA 编程简介

当您运行某些深度学习模型时,您可能会选择使用一些流行的 Python 库,例如 PyTorch 或 TensorFlow。然而,众所周知,这些库的核心在底层运行 C/C++ 代码。此外,正如我们之前提到的,您可以使用 GPU 来加快处理速度。这就是 CUDA 发挥作用的地方!CUDA 代表统一计算架构,它是 NVIDIA 开发的用于在 GPU 上进行通用处理的平台。

weixin_42010722的博客 1838

数量线程SM,SP和GRID,BLOCK,THREAD之间的对应关系是什么?

最近应用开发的过程中出现了一个小问题,顺便记录一下原因和方法--数量线程 SM,SP是硬件构结 GRID,BLOCK,THREAD是软件念概 从硬件度角讲,一个GPU由多个SM构成(当然还有其他部份),一个SM含包有多个SP(以及还有寄存器资源,shared memory资源,L1cache,scheduler...

weixin_30448685的博客 1040

手把手教你用微信小程序实现智能硬件音视频通话(含Linux/RTOS适配)

本文详细介绍了如何利用微信小程序硬件框架(WMPF)和音视频SDK,在智能硬件(包括Linux与RTOS设备)上实现音视频通话功能。文章从架构设计、设备端SDK集成、小程序VOIP插件开发到跨平台调试与性能优化,提供了全链路实战指南,帮助开发者打通微信小程序与嵌入式设备间的实时音视频通信。

ooo22的博客 328

GPU软件抽象与硬件映射的理解(Grid、Block、Warp、Thread与SM、SP)

GPU软件抽象与硬件架构

TANGWENTAI的博客 1万+

使用STM32微控制器实现光电传感器的接口和数据处理

本文将介绍如何使用STM32微控制器实现光电传感器的接口和数据处理的方案,包括硬件设计、引脚配置、数据采集、滤波和阈值判断等关键步骤,并给出相应的代码示例。本文将介绍如何使用STM32微控制器实现光电传感器的接口和数据处理的方案,包括硬件设计、引脚配置、数据采集、滤波和阈值判断等关键步骤,并给出相应的代码示例。在光电传感器的接口和数据处理的实现过程中,要关注系统的性能。在使用STM32微控制器实现光电传感器的接口和数据处理之前,需要设计一个合适的硬件平台。

weixin_66608063的博客 3199

K-Means聚类算法 — 算法原理、质心计算、距离度量、聚类效果评价及优缺点

分类知识   分类是根据样本某些属性或某类特征(可以融合多类特征),把样本类型归为已确定的某一类别中。机器学习中常见的分类算法有:SVM(支持向量机)、KNN(最邻近法)、Decision Tree(决策树分类法)、Naive Bayes(朴素贝叶斯分类)、Neural Networks(神经网络法)等。   但当对海量数据进行分类时,为了降低数据满足分类算法要求所需要的预处理代价,往往需要选...

zhf的博客 1万+

CUDA和GPU之间的关系

前言:去年7月份来华科的时候博士师兄就和我说学的东西一定要整理成文档,这是一种习惯,以后查阅比较方便。              我学的实现并行计算的CUDA,以前实验室还没有师兄师姐学过这个,我是第一个学CUDA的。由于是第           个 学, 所以很多东西需要我自己一步一步去摸索。确实,从安装到调试,从查找资料到编程,遇到不少困难,           但学到了很多东西。

wonengguwozai的博客 1万+

复现《水化硅铝酸钙微结构和性能的分子动力学模拟研究》的分子动力学模拟

本文详细复现了杨军博士论文中关于水化硅铝酸钙(C-A-S-H)凝胶的分子动力学模拟方法。研究内容包括:1)基于11Å Tobermorite构建C-A-S-H分子模型,通过缺陷引入和Al掺杂调节Ca/Si比;2)使用ReaxFF力场模拟交联C-A-S-H的结构与力学性能;3)采用ClayFF力场研究纳米孔道中水和离子传输行为。研究提供了完整的LAMMPS输入脚本、Python分析代码和力场参数设置,为水泥基材料纳米尺度模拟提供可复现的技术方案。

huanghm88的专栏 104

GPU、CUDA和cuDNN分别是什么,之间又有什么关系?

GPU、CUDA和cuDNN分别是什么,之间又有什么关系?

eastking0530的博客 4325

游戏大厂如何解析引擎技术

本文系统解析了游戏大厂如何评估和定制游戏引擎。游戏引擎作为游戏开发的核心基础,大厂会从性能、跨平台支持、渲染能力、网络模块等8个维度进行技术解析,通过文档查勘、源码阅读、Demo测试等7个步骤深度评估。解析后通常有三种决策:直接使用、深度定制或自研重构。文章以腾讯、网易、米哈游等为例,展示了不同厂商的引擎定制策略,并分析了技术解析面临的挑战和未来趋势。最终指出,体系化的引擎技术解析是打造高质量游戏的关键,需要持续的技术投入和团队协作。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 535

小论文/大论文必备 | YOLO多模态目标检测、绘制曲线对比图 | 引入多种绘制曲线对比图,包括mAP0.5,mAP0.5:0.95,Loss损失变化的曲线对比

本文通过可视化方法分析YOLO多模态模型的训练过程,对比不同实验的检测精度和损失函数变化。主要内容包括:1)绘制mAP@0.5和mAP@0.5:0.95曲线评估检测精度;2)分析边界框回归损失(box_loss)、分类损失(cls_loss)和分布式损失(dfl_loss)的收敛趋势;3)提供完整的Python代码实现,支持多实验对比,可生成高清曲线图。该方法能直观展示模型训练效果,便于优化策略评估和参数调优。

Ai缝合怪、助力小伙伴高效发论文 260

一张图了解GPU、CUDA、CUDA toolkit和pytorch的关系

现在的理解就是我可以装多个版本的cuda toolkit,,然后不同的框架会自动调用。

Blackoutdragon的博客 1万+

8. Spring Ai之入门到精通(超级详细)

Spring AI 1.0.0 M1里程碑版本发布,标志着 Java 终于踏进Ai的时代半只脚。

gorgor在码农 3万+

一文搞懂:如何在深度学习中使用GPU和cuda加速

接下来,我们使用 x.tolist() 方法将 x 转换为Python列表并将其添加到 result 中,或者使用 x.cpu().numpy() 方法将 x 转换为CPU上的NumPy数组,然后将该数组添加到 result 中。不是的,len(Xdata)并不在GPU上。要在GPU上创建一个列表,并将张量对象添加到该列表中,可以使用PyTorch的torch.Tensor.tolist()方法或者torch.Tensor.cpu().numpy()方法先将张量转换为NumPy数组,再将数组添加到列表中。

Python领域优质萌新学习笔记 1万+

我用 Python 监听了自己的键盘,生成击键热力图,看看每天到底在“摸鱼”还是“搬砖”?

数据采集(监听)、持久化(I/O)与可视化展示,必须是三个完全独立的模块,这符合单一职责原则。在多线程读写 Python 字典时,锁住的时间要尽可能短,防止 I/O 线程把高频的监听线程阻塞住。这类涉及底层的代码与“键盘记录木马”只有一线之隔。永远不要把击键记录通过网络上传,所有数据必须localhost消化。人脑对枯燥的 JSON 日志是不敏感的,但对颜色和空间极其敏感。这也是为什么 Prometheus + Grafana 是标配。使用ctypes。

BUG猿的博客 192

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【机器学习】显卡、GPU、NVIDIA、CUDA、cuDNN

文章目录一、显卡和GPU1. 显卡是什么?2. GPU是什么?(1)GPU和显卡的关系(2)GPU的由来与发展二、CUDA1. CUDA是什么?2. 为什么推出CUDA?三、cuDNN1. 什么是cuDNN2. CUDA与cuDNN的关系四、NVIDIA参考链接 一、显卡和GPU 1. 显卡是什么? 显卡是显示卡的简称,显卡是由GPU、显存等等组成的。 显卡(Video card,Graphics card)全称显示接口卡,又称显示适配器,是计算机最基本配置、最重要的配件之一。 就像电脑联网需要网卡,主.

weixin_44211968的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

解决通过CUDA调用GPU运行机器学习代码

前言: 有一群志同道合的伙伴真是人生中的一大幸事。 一、准备环境 1、下载anaconda Anaconda | The World's Most Popular Data Science Platformhttps://www.anaconda.com/ Ananconda安装教程: (1条消息) 史上最全最详细的Anaconda安装教程_OSurer的博客-优快云博客_anaconda 安装https://blog.youkuaiyun.com/wq_o...

有朋自远方来,不亦乐乎。 2万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Windows10下安装GPU环境Cuda和Pytorch教程图解

在深度学习和高性能计算领域,利用GPU进行计算已经成为提升效率的关键手段。CUDA是NVIDIA推出的并行计算平台和编程模型,它使得开发者能够利用NVIDIA GPU的强大计算能力。同时,PyTorch作为一个广泛使用的深度学习框架,以其易用性和灵活的动态计算图受到了研究人员和开发者的青睐。为了在Windows10系统上充分利用GPU进行深度学习训练,需要正确安装和配置CUDA和PyTorch。

weixin_40547993的博客 6088

cuda和GPU驱动的关系

显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么? 在使用深度学习框架的过程中一定会经常碰到这些东西,虽然anaconda有时会帮助我们自动地解决这些设置,但是有些特殊的库却还是需要我们手动配置环境,但是我对标题上的这些名词其实并不十分清楚,所以老是被网上的教程绕得云里雾里,所以觉得有必要写下一...

weixin_44523062的博客 6475

Windows11安装CUDA、cuDNN、pytorch(GPU)详细教程(包含CUDA安装异常处理)

本文仅介绍Windows11系统下安装CUDA、cuDNN、pytorch(GPU)的详细教程,使用的是Anaconda+Pycharm的配置。关于这两个软件的下载安装,本文不做赘述,如有疑问,请大家自行搜索。

m0_68220374的博客 1万+

深度学习中的GPU与CUDA

显卡,也称之为 GPU。GPU 的全称是 Graphics Processing Unit(图形处理单元)。它出现的目的一目了然,就是用来显示图像的。没错,就是用来在电脑显示器上显示图像的。大家其实只要知道我们的电脑都有显卡这一点就行了。但我们在深度学习中说的显卡(GPU)一般特指是英伟达(NVIDIA)品牌的显卡,这个我们后面慢慢来说。除了显卡这个概念之外,还有个概念是驱动。驱动,相信大家都不陌生。我们有的时候给电脑配备一些设备的时候,有可能需要安装对应的驱动,这些设备才能正常运行。驱动,就是能够让计算机

我是土堆 1万+

【PyTorch 】【CUDA】深入了解 PyTorch 中的 CUDA 和 cuDNN 版本及 GPU 信息

在本文中,我们深入探讨了如何在 PyTorch 中检查 CUDA 和 cuDNN 版本、可用 GPU 的信息,以及如何测试 PyTorch 是否正常工作。通过使用提供的示例代码,您可以轻松地验证您的深度学习环境配置是否正确,并确保可以充分利用 GPU 加速计算。常用命令总结在常见问题解答部分,我们提供了一些实用的解决方案,帮助您应对可能遇到的挑战,如更新 CUDA 和 cuDNN、选择特定的 GPU、处理 CUDA 内存不足的问题等。

人生苦短,睡觉要紧,睡醒再说 5941

【笔记】GPU、CUDA 和 cuDNN 学习研究

分享自己看过的一些关于 GPU、CUDA 和 cuDNN 的网络资料。

weixin_43254181的博客 1784

一篇文章理清GPU、CUDA、CUDA Toolkit、cuDNN的关系

我之前最大的困惑就是CUDA和CUDA Toolkit之间的关系,如果也是一样的小伙伴,建议直接跳转到CUDA Toolkit。

weixin_45756161的博客 5360

【Linux】GPU加速配置:如何在Linux上配置CUDA和cuDNN,使用GPU加速机器学习任务

在机器学习和深度学习任务中,GPU加速可以大大提高计算效率。本文将介绍如何在Linux系统上配置CUDA和cuDNN,以便使用GPU加速机器学习任务。

科技改变人类,技术成就未来 2934
上一篇: Cuda 学习教程(五):GPU架构-Sp,sm,thread,block,grid,warp
下一篇: C++模板
Walker Zhang
博客等级 码龄14年 144粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值