前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GPU中的基本概念

GPU中的基本概念

作者头像
猫叔Rex
发布2020-06-29 14:45:51
1.5K0
发布2020-06-29 14:45:51
举报
文章被收录于专栏:科学计算科学计算

硬件资源

  在硬件上,GPU的资源有SP和SM。

  • SP:最基本的处理单元,streaming processor,也称为CUDA core。最后具体的指令和任务都是在SP上处理的。GPU进行并行计算,也就是很多个SP同时做处理。我们所说的几百核心的GPU值指的都是SP的数量;
  • SM:多个SP加上其他的一些资源组成一个streaming multiprocessor。也叫GPU大核,其他资源如:warp scheduler,register,shared memory等。SM可以看做GPU的心脏(对比CPU核心),register和shared memory是SM的稀缺资源。CUDA将这些资源分配给所有驻留在SM中的threads。因此,这些有限的资源就使每个SM中active warps有非常严格的限制,也就限制了并行能力。

  每个SM包含的SP数量依据GPU架构而不同,Fermi架构GF100是32个,GF10X架构是48个,Kepler架构是192个,Maxwell架构是128个,Turing架构是64个。相同架构的GPU包含的SM数量则根据GPU的中高低端来定。下图是Turing架构的SM。

image-20200624172710353

软件资源

 从软件上看,即GPU的线程模型,可以分为Grid、Block、Thread和Warp,其中前三个用下面的图表示非常的直观。

  • Thread:一个CUDA的并行程序会被以许多个threads来执行
  • Block:数个threads会被群组成一个block,同一个block中的threads可以同步,也可以通过shared memory通信
  • Grid:多个blocks则会再构成Grid
  • Warp:GPU执行程序时的调度单位,同一个warp里的线程执行相同的指令,即SIMT。

  举一个比较形象的例子,把GPU当做一个学校,学校里面有不同的年纪(Grid),每个年纪有几个班(Block),每个班都有很多的学生(Thread),平时干值日要分不同的组(Warp),目前又给Warp中,有32个线程,即一个班中32个同学为一组一起干值日。

image-20200624160026635

存储资源

  每一个Thread都有自己的local memoryresigters,即每个同学都可以把自己的东西放到自己的课桌上;每一个Block有shared memory,这个Block中的所有Thread都可以访问,即每个班所在的教室里的走道、讲台等,是这个班里同学们的公共区域;Grid之间会有Global memoryCache,所有的Grid都可以访问,即学校里的操场、餐厅等,是全校同学的公共区域。

image-20200625111838373

GPU模型总结

  我们把GPU跟一个学校对应起来,学校里有教学楼、操场、食堂,还有老师和学生们;很快有领导来检查,因此这个学校的学生们要完成打扫除的工作。

  软件资源包括Thread、Warp、Block和Grid,硬件资源包括SP和SM。

  软件资源和硬件资源的最小单位我们都认为是学生,即一个Thread对应一个SP(SP可以分为更小的ALU等,我们这里先不考虑)。

  Block对应的是班级,Warp是班级里的不同小组,每个小组有32个学生;SM是教学楼的一个楼层,一个楼层上可以有多个班级;一个Grid是一个年级,年级和楼层并没有确定的对应关系。

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

  每个班级在一个教室里,教室里的有公共的空间(走道、讲台等),所有同学都可以停留,表示一个Block中有shared memory,这个Block中的Thread都可以访问;

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

  虽然GPU是并行运行,但也并不是我们理想中所有的Thread一起工作,在打扫卫生时,并不是所有学生一起干活,一个楼层同一时刻只能有一组32个学生(即一个Warp)干活,其他的学生都处于等待状态。

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

本文分享自 傅里叶的猫 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 硬件资源
  • 软件资源
  • 存储资源
  • GPU模型总结
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档