CSE 599W: system for ML 05:GPU架构

CPU与GPU的计算模块差别在这里插入图片描述在这里插入图片描述

以上为CPU架构与GPU架构的主要区别:
图一可见:CPU在ALU的计算一个步骤之外还有许多额外的开销。
图二展示了CPU,AVX(高级矢量扩展指令集),以及GPU的计算模块。可以看出GPU在ALU的数量上具有相当大的优势,因此在计算密集度高的场景上有可以有相对高的计算能力。

在这里插入图片描述
以上为完整的GPU结构。
在这里插入图片描述
图三中的每一个绿色小块都是一个SM,而每个SM的详细结构如图四。

CPU与GPU的存储单元差别

在这里插入图片描述
在这里插入图片描述
可以看出GPU拥有更大的register,且其L1 cache受programmer控制。属于显式的存储控制。
而CPU则依靠内部的流水线操作进行调度,属于隐式的存储控制。
下图则给出了不同等级的存储访问时的延迟实例。
在这里插入图片描述

GPU编程模型

在这里插入图片描述
1、上图中引出了GPU使用中无法绕开的一个概念:kernel。
由于GPU的实现是多线程的,其加速计算的根本也是基于多线程中warps的快速转换。
kernel的定义是一组线程块(block)组成的网格(grid),而这些block之间相互独立,没有依赖关系,可以被GPU以任意顺序调度。

Q:为什么要把thread封装为block?为什么要把block封装为kernel?同一个block的thread除了需要执行同步之外,还有什么特点?同kernel问?

在这里插入图片描述
上图解释了GPU的硬件结构(SM)与软件线程块(block)的关系:
block对应于硬件的SM,一个block被一个SM执行,并且在执行中不会发生迁移。
而根据SM能提供的存储资源和线程块存储要求,几个同时并发的线程块(block)可以驻留在同一个SM内。如图,一个kernel中的8个block被分配给2个SM单元执行,或分成4个SM单元执行。
在这里插入图片描述
上图提到了warp的概念,warp是kernel执行的基本调度单位,有由32个线程组成。而在warp之上是block,32个warp组成一个block。在每个时钟周期,warp scheduler会选择一个准备好的warp,并将其分配到CUDA core里执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值