专栏首页科学计算GPU中的基本概念

GPU中的基本概念

硬件资源

  在硬件上,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)干活,其他的学生都处于等待状态。

文章分享自微信公众号:
科学计算technomania

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

如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 图解Kafka中的基本概念

    首先我们回顾下在消息系统的使用场景中有三种角色分别是生产者、消息系统和消费者,其中生产者负责产生消息和发送消息到消息系统,而消息系统将为消费者提供消息用于处理,...

    草捏子
  • 信息世界中的基本概念

    葆宁
  • 信息论中的基本概念

    用户1432189
  • 函数式编程中的基本概念

    假设有一个函数 f,输入一个 int 值,返回一个 string 值,在 C# 中,该函数可以表示为:

    丹枫无迹
  • 云环境中GPU配置

    Ocata周期的科学技术重点之一是进一步扩展OpenStack中GPU支持的状态。这里的第一个问题是我们在讨论GPU支持时正在讨论的问题,因为使用现有的Open...

    后端云
  • 时序分析中的基本概念和术语

    1.建立保持时间 ? 2.四种时序路径 ? 第一类时序路径:从设备A的时钟到FPGA的第一级寄存器的数据输入端口 第二类时序路径:两个同步原件之间的路径,...

    瓜大三哥
  • WebLogic中的一些基本概念

    上周参加了单位组织的WebLogic培训,为了便于自己记忆,培训后,整理梳理了一些WebLogic的资料,会陆续的发出来,下面是一些基本概念。

    大江小浪
  • 嵌入式编程中的基本概念

           按照指令和数据是否统一编址,可以将计算机分成冯·诺伊曼体系结构和哈弗结构、 (1)冯·诺伊曼体系结构中,程序指令和数据连续存储,也就是指令和...

    ccf19881030
  • k8s中的基本概念

    docker解决了开发测试环境与运行时环境不一致的问题。只要镜像在本地开发环境能够正常运行且测试通过,理论上这个镜像也能在生产环境正常使用。

    网络技术联盟站
  • pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作

    有时在加载已训练好的模型时,会出现 out of memory 的错误提示,但仔细检测使用的GPU卡并没有再用且内存也没有超出。

    砸漏
  • 在深度学习中喂饱GPU

    前段时间训练了不少模型,发现并不是大力出奇迹,显卡越多越好,有时候 1 张 v100 和 2 张 v100 可能没有什么区别,后来发现瓶颈在其他地方,写篇文章来...

    新智元
  • GPU渲染之OpenGL的GPU管线

    GPU渲染流水线,是硬件真正体现渲染概念的操作过程,也是最终将图元画到2D屏幕上的阶段。GPU管线涵盖了渲染流程的几何阶段和光栅化阶段,但对开发者而言,只有对顶...

    刘盼
  • 深度学习中 GPU 和显存分析

    深度学习最吃机器,耗资源,在本文,我将来科普一下在深度学习中: 何为 “资源” 不同操作都耗费什么资源 如何充分的利用有限的资源 如何合理选择显卡 并纠正几个误...

    AI研习社
  • 深度学习中GPU和显存分析

    nvidia-smi是Nvidia显卡命令行管理套件,基于NVML库,旨在管理和监控Nvidia GPU设备。

    机器学习AI算法工程
  • Elasticsearch 中的基本概念-文档/索引/节点/分片/集群

    本文介绍 Elasticsearch 的基本概念,包括文档和索引、节点和分片,以及 Elasticsearch 和关系型数据库的类比和 REST API。

    懒人的小脑
  • Linux中如何管理Nvidia GPU卡

    由于测试环境使用的是NVIDIA的显卡,这里直接通过lspci命令即可查询具体显卡信息

    赵智勇
  • docker 容器中 ffmpeg 调用 GPU(nvidia)

    用户6609566
  • 逆向从 Instruments 中获取 GPU 数据

    背景: RTMP SDK需要获取硬编硬解时候的GPU数据,第一时间想起了TraceParser, 但是TraceParser不支持GPU Driver模板. ...

    Locker

扫码关注腾讯云开发者

领取腾讯云代金券