首页 > 其他分享 >认识GPU

认识GPU

时间:2022-09-19 10:46:23浏览次数:79  
标签:认识 指令 线程 内存 SM GPU CPU

集成GPU vs. 独立GPU
独立GPU:
1.显卡内的RAM被GPU专用,不占用系统内存;
2.特点:功耗高,性能强劲;
3.连接方式:北桥上的内存连接GPU内存,再连接GPU。
集成GPU:
1.集成在主板或CPU上的GPU,运行时会占用系统内存;
2.从2009年开始,GPU已经从主板移至CPU,成为“核芯显卡”;
3.特点:功耗低,访存宽带受限;
4.连接方式:直接在北桥上,内存直接连接GPU。
移动GPU:
1.功耗是设计首要考虑问题;
2.架构和上面两种有差异。

GPU演进之路:
1.之前的GPGPU一般用于渲染计算,要利用GPU的并行计算能力必须通过图形API接口传输数据,开发门槛很高;
2.CUDA:通用计算平台,把GPU视为数据并行计算的设备;
3.统一编程单元:Vetex和Fragment处理单元分离,容易造成负载不均衡,从D3D10开始GPU开始使用统一单元运行Vertex、Fragment以及Geomerty Shader。
4.浮点计算标准化:精度和准确地向IEEE 754标准要求靠拢。
总结:GPU逐渐成为通用计算平台、大规模并行计算的主力军。

GPU vs. CPU
1.GPU为并行而设计,更重视整体Throughput;CPU为串行而设计,更看重任务间的Latency。
2.设计思路上,GPU将更多的晶体管用于计算单元(core),CPU讲更多的晶体管用于控制器和L1 cache。

费林分类法:
资讯流可分为指令(Instruction)和资料(Data)两种,分4中传输模式:
1.单一指令流单一数据流计算机(SISD, Single Instruction Single Data),如单核CPU,每次一条指令读取一个资料;
2.单一指令流多数据流计算机(SIMD, Single Instruction Multiple Data),如传统CPU的指令扩展SSE和NEON,每次指令可读取4个资料;
3.多指令流单一数据流计算机(MISD, Multiple Instruction Single Data);
4.多指令流多数据流计算机(MIMD, Multiple Instruction Multiple Data),如多核CPU,每次多条指令读取多个资料。

SIMT:现代GPU基于SIMD发展出的并行架构,以Nvida CUDA为例:
GPC->Textrue Unit->SM->CUDA Cor(SP)
GPC:集群,一个集群上有多个Textrue Unit;
Textrue Unit:纹理单元,一个纹理单元可以获取一张纹理,有多个SM;
SM:多处理器,上面有多个CUDA核;
CUDA Core:每个核跑一个线程即SP。

1.(硬件上)一个GPU Unit上有很多SM(Streaming Multiprocesso) --(软件上)Grid;
2.(硬件上)一个SM上有很多SP(Streaming Processor,即CUDA core) --(软件上)Block,多个SP共享内存和Caches Registers;
3.(硬件上)一个SP -- (软件上)一个Thread;
4.在GPU中的执行程序被称为Kernel(如vecAdd),一个Kernel指令下来所有的线程都执行相同的程序;
5.实际执行过程中,线程会被组装到Block中,并分配给SM进行计算;
6. 在硬件内部,Block进一步会被为分组成Warp,Warp是GPU硬件最小调度单位,Warp内的线程被一一分配给SP按照SIMD的模式工作,也就是这些线程共享同样的PC(程序计数器),以锁步(Lockstep)的方式执行指令。

SIMD vs. SMIT
SIMD:1个核上的寄存器可以存4个(受限于ALU的宽度)数据,4个同时去除,进行计算,在1个线程中进行,仅包含基础算数操作(加减乘除/绝对值/平方根),多用于CPU;
SMIT:4个核上,每个核分别进行4个(不受限)计算,4个线程并行执行,每个核有独立的寄存器、ALU、data cache,却共享instruction cache、编码器、Program Counter register,多用于GPU。

GPU和CPU并行能力对比:
GPU:以Fermi GF100为例,共有16个SM,每个SM可容纳48个Warp,每个Warp可容纳32个线程,整个GPU可支持24576个线程同时在线;
CPU:8核CPU,在打开Hyperthreading的情况下,只能同时支持十几个硬件线程同时在线。

GPU和CPU避免高延迟指令引起处理单元流水线停顿的做法对比:
GPU:频繁切换到别的线程Warp来规避指令延迟带来处理单元的停顿;
CPU:穷尽指令集规避+通过各级cache掩盖访问内存延迟,万不得已不切换到别的硬件线程。

GPU和CPU内存模型对比:
GPU:各级cache容量小(甚至没有
),Throughput大,Latency大;
CPU:各级cache容量大,Throughput小,Latency小;

带宽(Bandwidth):
1.每个时钟周期,GPU与一个VRAM之间总线可以传输的数据大小(位);
2.GPU的带宽一般比CPU大一个数量级;
3.指令带宽:每条指令平均获得内存访问数据大小,用来衡量单core吞吐能力,CPU和GUP指令带宽对比:
MOS 6502(CPU):4B
Core i7-7700K(CPU):1B
Core i7-7700K(CPU)(SIMD):0.125B
NVidia GeForce GTX 1080Ti(GPU):0.09B
4.延迟
GPU内存带宽:
GPU与显存之间的吞吐量,与数据频率(显存频率*倍率)和显存位宽(总线IO位宽)相关。
GPU带宽大小计算方式:
带宽(Bandwidth) = 数据频率(Transactions/Pin) * 位(总线)宽(Bus Width) / 8
GDDR5 128 GB/s = 8GT/s * 128-bit / 8
HBM 256 GB/s = 1GT/s * 2048-bit / 8

CPU->GPU数据全流程:
1.内存->CPU;
2.CPU->显存,通过数据总线,高延迟,带宽限制;(短板)
3.显存->GPU,超高并发。
总结:
1.尽量减少CPU和GPU之间的数据传输;
2.尽量避免“冯诺依曼架构瓶颈”,即数据和指令混在一起传给寄存器,很可能导致计算过程中CPU/GPU在缓存中找不到数据(cache miss),从而需要从内存中读取数据,造成多次Latency。

--------------------------------

标签:认识,指令,线程,内存,SM,GPU,CPU
From: https://www.cnblogs.com/alphaGo/p/16706873.html

相关文章

  • 软件工程初认识
    我对软件的最深的印象就是手机上的app,电脑上的客户端,那软件实质上是什么呢?专业的解释是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为系统软件、......
  • 在 RK3399 上运行开源的 Mali GPU 驱动【转】
    转自:https://aijishu.com/a/1060000000082887 ,仅供参考学习使用          sudoaptinstallflexbisonpython3-makolibwayland-egl-back......
  • GPU A10 driver 安装
    GPUA10driver安装环境HOST:ubuntu804LTSGUST:通过PCIE透卡,KVM虚拟机:ubuntu1804LTS在gust里面安装GPUdriver安装步骤NVIDIATelsaGPU的Linux驱动......
  • 认识PostGIS
    1、什么是PostGISPostGIS是在对象关系型数据库PostgreSQL上增加了存储管理空间数据的能力的开源空间数据库,空间数据库像存储和操作数据库中其他任何对象一样去存储和......
  • GPU 利用率低常见原因分析及优化
    一、GPU利用率的定义本文的GPU利用率主要指GPU在时间片上的利用率,即通过nvidia-smi显示的GPU-util这个指标。统计方式为:在采样周期内,GPU上面有kernel执行的......
  • WebGPU光追引擎基础课:课程介绍
    大家好~我开设了“WebGPU光追引擎基础课”的线上课程,从0开始,在课上带领大家现场写代码,使用WebGPU开发基础的光线追踪引擎课程重点在于基于GPU并行计算,实现BVH构建和遍历......
  • WebGPU光追引擎基础课系列目录
    大家好~我开设了“WebGPU光追引擎基础课”的线上课程,从0开始,在课上带领大家现场写代码,使用WebGPU开发基础的光线追踪引擎课程重点在于基于GPU并行计算,实现BVH构建和遍历......
  • 一、Axios入门——初认识Axios
    一、axios是什么?端最流行的ajax请求库react/vue官方都推荐使用axios发ajax请求文档:https://github.com/axios/axios二、axios特点基于xhr+pr......
  • 一文带你认识AscendCL
    摘要:AscendCL(AscendComputingLanguage,昇腾计算语言)是昇腾计算开放编程框架,是对底层昇腾计算服务接口的封装。本文分享自华为云社区《【CANN文档速递09期】应用开发之推......
  • 认识Node.js以及相关说明
    首先我们先要认识一下,Node是用JavaScript来编写的。问:JavaScript时怎么组成的?答:JavaScript主要是由两块核心组成,第一个核心是js的核心语法,该语法也被称为ECMAScript,语法......