前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CUDA编程之GPU硬件架构

CUDA编程之GPU硬件架构

作者头像
AI异构
发布2020-07-29 14:54:58
2.8K0
发布2020-07-29 14:54:58
举报
文章被收录于专栏:AI异构

GPU的硬件架构

GPU的整体架构图

GPU实际上是一个流处理器簇 Streaming Multiprocessors(SM)的阵列。如下图所示:

GPU(G80/GT200)卡的组成模块图

需要指出,每个SM包含的SP数量依据GPU架构而不同,Fermi架构GF100是32个,GF10X是48个,Kepler架构都是192个,Maxwell都是128个。相同架构的GPU包含的SM数量则根据GPU的中高低端来决定

流处理器簇结构

每个SM(streaming multiprocessor)由以下部分组成:

  • CUDA Cores(CUDA核,也常称作SP(streaming processor))
  • Shared Memory/L1 Cache (共享内存/L1缓存)
  • Register File (寄存器文件)
  • Load/Store Units (加载存储单元)
  • Special Function Units (特殊功能单位)
  • Warp Scheduler(Warp调度器)

SM基本架构

GPU中的每个SM都支持数百个线程的并发执行,通常是每个GPU有多个SM,所以有可能有数千个线程并发执行。CUDA采用了SIMT单指令多线程执行,一个指令32个线程执行,32个线程组织成warp。一个warp中的线程同一时刻执行同一个指令。每个线程有自己的指令技术计数器和寄存器,在自己的数据上执行指令。

warp:GPU执行程序时的调度单位,目前cuda的warp的大小为32,同在一个warp的线程,以不同数据资源执行相同的指令,这就是所谓 SIMT。

Warp的执行方式

当创建了一个kernel时,从逻辑上理解为kernel中的所有线程都在并行,但是从硬件物理条件上看同一时刻并不是所有的线程都在执行。因此Warp概念的提出,主要是将软件上并行的线程与硬件的实际架构连接起来。如下图所示:

Warp连接软硬件

warp是SM上的基本执行单元。当一个线程块分配到一个SM上时,线程块被组织成warps,SM上的warp调度器选择合适的warp执行。

warp执行示意图

warp一定是同一个block中的,如果一个block中的threads不足32个,则补足成为32个构成一个warp。

如图所示,本来只需要80个线程,但是实际上仍然需要32*3=96个threads,尽管最后一个warp的16个线程没有使用,但是仍然会消耗SM上的资源,比如共享存储器、寄存器。

Warp分支

定义:一个warp中的线程执行不同的指令,叫做warp分支。 如果warp发生分支,则需要顺序执行每个分支路径。

warp分支示意图

在一个warp中所有线程都必须具有两个分支if…else….一个warp中如果有线程的条件为true,则执行if子句,其它为false的线程将等待if执行完成。然后执行else语句,当条件为true的线程则等待else执行完成。 为了获得更高的性能,尽量避免warp分支,warp是32个连续的线程,在算法允许的情况下,可以将数据分割,使同一个warp避免分支。

软件与硬件并行对比

软硬件对比图

通过上图可以看出,一个网格相当于一个GPU设备,网格下分成多个线程块,线程块则对应的SM,每个线程块又分为多个线程,每个线程相当于一个CUDA核

参考

CUDA编程指南3.0 [【CUDA】学习记录(3)-硬件结构]https://www.jianshu.com/p/2fbd02311266

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI异构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GPU的硬件架构
    • GPU的整体架构图
      • 流处理器簇结构
        • Warp的执行方式
          • Warp分支
            • 软件与硬件并行对比
            • 参考
            相关产品与服务
            文件存储
            文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档