Nvidia GPU架构 - Cuda Core,SM,SP等等傻傻分不清?

news/2025/2/3 10:56:58/

背景

  在深度学习大热的年代,并行计算也跟着火热了起来。深度学习变为可能的一个重要原因就是算力的提升。作为并行计算平台的一种,GPU及其架构本身概念是非常多的。下面就进行一个概念阐述,以供参考。

GPU:显存+计算单元

  GPU从大的方面来讲,就是由显存和计算单元组成:

  1. 显存(Global Memory):显存是在GPU板卡上的DRAM,类似于CPU的内存,就是那堆DDR啊,GDDR5啊之类的。特点是容量大(可达16GB),速度慢,CPU和GPU都可以访问。
  2. 计算单元(Streaming Multiprocessor):执行计算的。每一个SM都有自己的控制单元(Control Unit),寄存器(Register),缓存(Cache),指令流水线(execution pipelines)。

  我们可以看一下图:
这里写图片描述
这里写图片描述
  所以其实Global Memory的真身就是那个内存颗粒。
  来看下GPU里边的东西,是时候对密集恐惧症患者放出大招了:
这里写图片描述
这个是英伟达PASCAL架构的GP100 GPU的架构。由非常多的Streaming Multiprocesser组成的(里边的各种外设先不说了)。下面我们看一下Streaming Multiprocessor的内容。

Streaming Multiprocessor (SM)

  下面这个图是SM:
这里写图片描述
  在GP100里,每一个SM有两个SM Processing Block(SMP),里边的绿色的就是CUDA Core,CUDA core也叫Streaming Processor(SP),这俩是一个意思。每一个SM有自己的指令缓存,L1缓存,共享内存。而每一个SMP有自己的Warp Scheduler、Register File等。要注意的是CUDA Core是Single Precision的,也就是计算float单精度的。双精度Double Precision是那个黄色的模块。所以一个SM里边由32个DP Unit,由64个CUDA Core,所以单精度双精度单元数量比是2:1。LD/ST 是load store unit,用来内存操作的。SFU是Special function unit,用来做cuda的intrinsic function的,类似于__cos()这种。

CUDA Core

  下面这个图是CUDA Core的结构:
这里写图片描述
  包括控制单元Dispatch Port、Operand Collector,以及浮点计算单元FP Unit、整数计算单元Int Unit,另外还包括计算结果队列。当然还有Compare、Logic、Branch等。相当于微型CPU。

GPU内存架构

  贴一张图:
这里写图片描述
  越靠近SM的内存就越快。

  1. L1 Cache:Pascal架构上,L1 Cache和Texture已经合为一体(Unified L1/Texture Cache),作为一个连续缓存供给warp使用。
  2. L2 Cache:用来做Global Memory的缓存,容量大,给整个GPU使用。

关于CUDA方面的一些参考文献

  我发现Nvidia的文献非常分散,下面列举一些常用的。btw,PASCAL啊,VOLTA都是英伟达GPU架构代号。

  1. CUDA C Programming Guide
  2. CUDA C Best Practices Guide
  3. Pascal White Paper, Volta White Paper
  4. cuBLAS: 基础线性代数库,汇编级优化。
  5. cuDNN: 深度学习库

http://www.ppmy.cn/news/629254.html

相关文章

用Quadro卡带Geforce卡实现非SLI多显卡多显示器协同绘制

核弹厂为了卖显卡真是无所不用其极。当然人家号称Geforce就是用来玩游戏的,Quadro才适合更高端的工作。可是如果我只是用来做三维场景绘制,你Quadro比起Geforce也没见得有很大优势,一块K4000顶得上三块GTX760的价格,直接吓得不省人…

SLI导致双显卡被TensorFlow同时占用问题(Windows下)

最近学习TensorFlow,被一些不是bug的问题折腾的头晕脑胀,借此写一下解决方法。本人是在win10下使用TensorFlow的,所以ubuntu下的绕行吧,不会出现这些问题。(此文有些地方我重新整理了一遍,放在了相约机器人…

说说nVidia Geforce和AMD HD显卡的多显卡非SLI/CrossFire绘制逻辑

实验室的系统需要绘制3D模型后用多块显卡来进行尽可能多的窗口输出。市面上有以Matrox为代表的多屏显卡,此类显卡输出功能极其强大,电视墙什么的毫无压力,但是——绘制能力捉急,不指望用它进行模型绘制渲染。绘制渲染方面还是普通…

vue表格实现一个简单的合并单元格功能

用的是vue2ant-design-vue 但是vue3或者element-ui也是同理 先上效果 需要后端的数据将相同id的放在一起 否则也会有问题 例如: this.list [{id: 1,name: 舟山接收站,...}{id: 2,name: 舟山接收站碳中和LNG,...},{id: 2,name: 舟山接收站碳中和LNG,...} ]// th…

【Python爬虫与数据分析】面向对象设计

目录 一、类的构建与继承 二、多继承 三、钻石继承 四、多态 五、鸭子类型 六、类的组合 七、类的私有属性和方法 八、魔法方法 九、单例模式 一、类的构建与继承 类的属性包含成员变量和成员函数(方法) 成员函数又分为静态方法、魔法方法、普…

【安装VBox】

安装VBox 在VBox里加载Centos8.4的镜像 新增虚拟机设置 (参考https://www.cnblogs.com/sword88/p/12059711.html) 创建Red Linux 64bit 虚拟机8G内存磁盘大小64G的虚拟机网络设置桥接网卡直接用root用户登录再设置ssh登录(或者用用户登录…

python 网络编程——urllib,urllib2简单运用

知识点一:字典 字典呢就是一种数据结构,我们也可以将它称作映射,可以储存任意类型对象。它是由一个键/值对组成,举个通俗一点的例子,以我们的电话簿为例,值电话,键姓名。 需要注意的是在字典中…

box-shadow

box-shadow前言 box-shadow是css3的一个新属性,用来实现阴影效果,阴影分为内阴影和外阴影两个效果,可以通过逗号添加多个阴影效果。 box-shadow阴影用法 box-shadow:inset offset-x offset-y blur-radius spread-radius color,....; box-sh…