GPU学习笔记

引言

GPU是面向大吞吐量设计的,异构众核,适用于计算密集型任务。
CPU很多性能消耗在把数据在存储单元中搬来搬去,而GPU主要性能用于计算。
p.s.数据在内存中搬来搬去很消耗性能

硬件架构

GPU学习笔记_第1张图片
可以看到,CPU中控制单元很大,内存单元很大,而GPU中,很多计算单元。
有些资料上解释计算单元主要是由ALU构成的,而ALU是通过门电路组合而成,计算单元由称为sp,CUDA核

一些名词解释

SP(streaming processor)
最基本的处理单元,也称为CUDA core。最后具体的指令和任务都是在SP上处理的。GPU进行并行计算,也就是很多个SP同时做处理。

SM(streaming multiprocessor)
多个SP加上其他的一些资源组成一个SM,也叫GPU大核,其他资源如:warp scheduler,register,shared memory等。SM可以看做GPU的心脏(对比CPU核心),register和shared memory是SM的稀缺资源。CUDA将这些资源分配给所有驻留在SM中的threads。因此,这些有限的资源就使每个SM中active warps有非常严格的限制,也就限制了并行能力。如下图是一个SM的基本组成,其中每个绿色小块代表一个SP。
Warp
一个SP可以执行一个thread,但是实际上并不是所有的thread能够在同一时刻执行。Nvidia把32个threads组成一个warp,warp是调度和运行的基本单元。warp中所有threads并行的执行相同的指令。一个warp需要占用一个SM运行,多个warps需要轮流进入SM。由SM的硬件warp scheduler负责调度。目前每个warp包含32个threads(Nvidia保留修改数量的权利)。所以,一个GPU上resident thread最多只有 SM*warp个
GPU学习笔记_第2张图片

软件架构

一些名词解释

Kernel
在GPU上调用的函数成为CUDA核函数(Kernel function),核函数会被GPU上的多个线程执行。
Grid
由一个单独的Kernel启动的所有线程组成一个Grid,Grid中所有线程共享global memory。Grid由很多Block组成,可以是多维。
Block
一个Grid由许多Block组成,block由许多线程组成 ,也可以是多维。Block内部的多个线程可以同步,可以访问共享内存
GPU学习笔记_第3张图片

你可能感兴趣的:(计算机,深度学习,pytorch,python)