GPU软件抽象:Grid,Block,Thread,Warp定义说明与硬件的映射执行细节 学生教室楼层的例子

11 篇文章 0 订阅

1 GPU运行机制总述

        1.0 GPU计算流程(CPU协同GPU计算)

        1.1 Host与Device

        1.2 Kernel

        1.3 图解说明从CPU到GPU的运行机制

        1.4 Single Instruction Multiple Threads(SIMT)

1 GPU的软件抽象

2 软件抽象和硬件结构的一一对应关系

2.1 Block对应于SM

2.2 Block与Thread之间的联系Warp 对应于 SM与SP之间的联系

2.3 Thread对应于SP

3 软件抽象和硬件结构对应关系的例子

3.1 软件抽象

1

Grid对应的是年级

是抽象的划分组织方式

根据年级划分任务,Grid可以分为多个不同的班级

2

Block对应的是班级

是抽象的划分组织方式

每个班级有若干的同学(线程),可能一个两个不同的年级会出现在同一层楼(SM),或者一层楼只有一个班级,或者没有班级,但是每一层楼的班级最大数量是固定的

3

Warp对应的是兴趣小组

每个小组有32个学生;(同一时间他们一定是一个班级下的小组)

并且数量固定,即使凑不满这么多学生需要加进来不干活的学生,凑够一个小组

只要求他们有着一样的兴趣爱好(能执行相同的任务)

4

Thread对应的是学生

一个Thread对应一个SP

每个学生都有个课桌 ,放自己的物品,不能让别人用,表示每个Thread在软件上都有自己的空间(寄存器等)

3.2 硬件资源

SM对应的是教学楼的一个楼层

是实际存在的资源

一个楼层上可以有多个班级,年级和楼层并没有确定的对应关系,一个楼层中可以有很多来自不同的年级的Block

SM中的SP会被分成兴趣小组,承接不同的任务

SP对应的是学生

一个SP对应一个Thread

是实际存在的资源

每个学生都有个课桌 ,放自己的物品,不能让别人用,表示每个SP在硬件上都有自己的空间(local memory + registers);

在楼层中,有公共的空间(走廊、厕所等),这一层楼的所有同学都可以停留,表示一个SM中有shared memory,这个SM上的Block都可以访问;(shared memory是不是所有的block都可以访问)

学校里的公共区域,比如操场、食堂等,所有同学都可以去运动、吃饭,表示GPU中有一些公共的存储空间供所有的Grid访问。
 

3.3 执行任务

4 用多线程掩盖延迟

Global Memory访存延迟可以达到数百个时钟周期,即便是最快的Shared Memory和寄存器在有写后读依赖时也需要数十个时钟周期。这似乎和CUDA强大的处理能力完全相悖。

为什么GPU具有这么高的计算能力?如果连寄存器都这么慢,怎么会有高性能呢?难道这不会成为最大的瓶颈吗?

因为这个高延迟的开销被掩盖了,掩盖在大量线程之下。更清楚的说,控制单元(Warp Scheduler)在多组线程之间快速切换,当一组线程Warp(一个线程组,在CUDA里叫做Warp)因为访存或其他原因出现等待时,就将其挂起,转而执行另一组线程,GPU的硬件体系允许同时有大量线程存活于GPU的SM(流多处理器)之中,这种快速切换保证资源的最大利用率——控制单元始终有指令可以发放,执行单元始终有任务可以执行,仍然可以保持最高的指令吞吐,每个单元基本都能保持充分的忙碌。

这就是GPU硬件设计中非常有特色的基本思想:用多线程掩盖延迟。这一设计区别于CPU的特点是,大量高延迟寄存器取代了少量低延迟寄存器,寄存器的数量保证了可以有大量线程同时存活,且可以在各组线程间快速切换。尽管每个线程是慢的,但庞大的线程数成就了GPU的数据吞吐能力。

下面图片可以说明:GPU用多个Warp掩盖延迟 / 与CPU计算模式的对比

GPU因为多个Warp可以快速切换来掩盖延迟,而CPU用快速的寄存器来减小延迟。两者的重要区别是寄存器数目,CPU的寄存器快但少,因此Context Switch代价高;GPU寄存器多而慢,但寄存器数量保证了线程Context Switch非常快。同时也是因为GPU对高延迟的容忍度比较高,他只追求在长时间内比较稳定的较大吞吐量,而不在意响应时间。 

 
原文链接:https://blog.csdn.net/qq_41554005/article/details/119760698

4.1 多少线程才能够掩盖掉常见的延迟呢?

 

对于GPU,最常见的延迟大概要数寄存器写后读依赖,即一个局域变量被赋值后接着不久又被读取,这时候会产生大约24个时钟周期的延迟。为了掩盖掉这个延迟,我们需要至少24个Warp轮流执行,一个Warp遇到延迟后的空闲时间里执行其余23个Warp,从而保持硬件的忙碌。在Compute Capability 2.0,SM中有32个CUDA核心,平均每周期发射一条指令的情况下,我们需要24 ∗ 32 = 768 24*32 = 76824∗32=768个线程来掩盖延迟。
保持硬件忙碌,用CUDA的术语来说,就是保持充分的Occupancy,这是CUDA程序优化的一个重要指标。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/qq_41554005/article/details/119760698

2

5 关于现代GPU如此进行软件抽象和硬件设计的一些思考

LAST 参考文献:

GPU 初理解 - 简书

GPU架构之处理模块 - 知乎

GPU中的基本概念 - 云+社区 - 腾讯云

CUDA, 软件抽象的幻影背后 之二 | 奇点视觉

CUDA, 软件抽象的幻影背后 | 奇点视觉

GPU编程1–GPU中的基本概念 - 知乎

 gpu的单位表示_GPU中的基本概念_weixin_39717121的博客-CSDN博客

CUDA的thread,block,grid和warp - 知乎

GPU编程3–GPU内存深入了解 - 知乎

GPU架构之Hierarchy Memory多级存储 - 知乎

cuda编程(一):GPU概念与架构 - 知乎

GPU计算 – GPU体系结构及CUDA编程模型

Nvidia GPU架构 - Cuda Core,SM,SP等等傻傻分不清?_咚咚锵的博客-CSDN博客_cuda sm
 Fermi威力完美呈现,GeForce GTX 580全球同步评测 - 超能网

参考:https://blog.csdn.net/u012294613/article/details/140448875

【GPU结构与CUDA系列3】GPU软件抽象:Grid,Block,Thread,Warp定义说明与硬件的映射执行细节_cuda grid block thread-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这些术语都是与 NVIDIA GPU 相关的概念,下面我简单介绍一下它们的含义: 1. CUDA Context:CUDA 上下文,是 CUDA 程序与 GPU 之间通信的桥梁,用于管理 GPU 资源的分配和释放。 2. CUDA Stream:CUDA 流,是一组 CUDA 操作的序列,可以在 GPU 上异步执行。通过使用多个流,可以在 GPU 上实现并行计算,从而提高计算效率。 3. Hyper-Q:Hyper-Q 技术是 NVIDIA GPU 上的一种并行计算技术,可以让多个 CPU 核心同时访问 GPU,并实现更高的并发度。 4. Multi Stream:多流技术是指在一个 CUDA 上下文中同时使用多个 CUDA 流,以实现更高的并行度。 5. MPS:MPS 技术是 NVIDIA GPU 上的一种并行计算技术,可以让多个 CUDA 上下文共享同一个 GPU,从而实现更高的计算效率。 6. SM:Streaming Multiprocessor,是 NVIDIA GPU 中的一个处理器单元,用于执行 CUDA 程序中的 kernel。 7. SP:Streaming Processor,是 SM 中的一个计算单元,用于执行 CUDA 程序中的指令。 8. Warp调度:Warp 调度是指将多个线程组成一个 warp,由 SM 中的 SP 统一调度执行。在一个 warp 中的线程可以并行执行,从而提高计算效率。 9. Kernel:Kernel 是 CUDA 程序中的一个函数,用于在 GPU执行计算任务。 10. GridGridCUDA 程序中的一个概念,用于描述线程块的组织方式。 11. BlockBlockCUDA 程序中的一个概念,用于描述线程的组织方式。每个 Block 包含多个线程,可以在 SM 中并行执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值