作者:mobiledu2502883683 | 来源:互联网 | 2023-07-05 15:08
第三章
什么是Fermi架构
Fermi架构是第一代完整的GPU计算架构,具有512个CUDA核心。每个CUDA核心都有一个整数算术逻辑单元(ALU)和一个浮点运算单元(FPU)。每个时钟周期可以执行一个整数或浮点数指令。512个CUDA核心被分到16个SM中,因此每个SM有32个CUDA核心。Fermi架构支持多达6GB的global memory,通过PCIe总线与CPU相连。GigaThread是一个全局调度器,用来分配线程块到SM线程束调度器上。

Fermi架构的GPU有一个被16个SM共享的L2缓存,大小为768K。而在上篇文章中我们知道,一个SM的结构是这样的

现在我们就来解释一下这些部件的作用:
LD/ST单元(加载/储存单元):每一个SM有16个加载/储存单元,允许每个cycle有16个线程(线程束的一半)计算源地址和目的地址。
SFU(特殊功能单元):执行固有指令,如正弦、余弦、平方根和插值,速度为:1指令/cycle
线程束调度器和指令调度单元:当一个线程块被指定给一个SM时,所有的线程会被分成线程束。一个SM有两个线程束调度器,它们会分别选择两个线程束,再把指令从线程束发送到一个组上。组是一个概念,指的是拥有16个CUDA核心,16个LD/ST单元和4个SFU单元的一个集合。因为我们知道,在硬件底层来说,核函数都是汇编语言代码,都是由一句句的指令顺序组成的。因此每一个CUDA核心都可以被分配到某一个线程的某一条指令并进行运算,如下图所示:

Fermi架构还支持并发内核执行,如下图所示:

使用Fermi架构的GPU有哪些
GF 100,GF 104,GF 106,GF 108等
什么是Kepler架构
Kepler架构是英伟达于2012年推出的新的GPU架构,其与Fermi架构的最大区别是:SM单元的结构有所变化。我们先来看看Kepler架构下的SM单元是怎么样的:

我们可以看到,一个Kepler架构下的SM单元有4个线程束调度器,8个调度器。192个单精度CUDA核心,64个DP Unit(双精度单元),32个特殊功能单元以及32个LD/ST单元。
那按照我们上面分析Fermi架构的SM单元的方法一样,我们也可以根据这些数量来分析一下Kepler架构的一些性能。
一个SM单元有4个线程束调度器,也就是说在一个SM上可以同时发送和执行4个线程束。而一个组有32个SFU,32个LD/ST单元,48个CUDA核心和16个DP Unit。
首先一点很大的突破就是,从Kepler架构开始,由于引入了DP Unit,在CUDA上使用double型变量成为了可能,这使得计算可以得到的精度更高。
Kepler架构的新特性
动态并行
Kepler架构允许GPU动态并行,也就是可以在一个内核中启动一个新的内核,也就是嵌套内核。此举可以减少GPU与CPU的通信,减小工作负载。

Hyper-Q技术
Hyper-Q技术是Kepler架构开始拥有的新技术,它可以在主机与GPU之间提供32个硬件工作队列,以减少任务在队列中阻塞的可能性。这种技术可以保证在GPU上可以有更多的并发执行,更大程度上提升GPU的整体性能。
