GPU并行运算与CUDA编程--硬件篇

GPU硬件架构

如图所示
在这里插入图片描述
总体来讲,数据从CPU内存传输到GPU内存是这样的过程:
CPU内存(DDRx)—>CPU L3缓存 —>CPU I/O控制器 —>PCIe总线 —>GPU I/O控制器 —> L2缓存 —> GPU内存(GDDRx)

1.PCIe总线

CPU与GPU进行数据传输时(比如使用函数cudaMemcpy),两者的数据通过PCIe总线进行传输。

PCIe总线的数据吞吐量很大程度上影响了GPU的运算速度。目前最高版本为PCIe 4.0,版本越高吞吐速度越快。

2.主机端接口

主要用于与PCIe总线进行数据和代码的交换。

3.千兆线程调度器

顾名思义,其主要用于线程资源的调度,不过它只会分配给SM block资源(block ID)而不会关心thread ID。

4.末级高速缓存

CPU端L3缓存与GPU端L2缓存被称作末级高速缓存(LLC),它们直接与PCIe总线相连,其传输速度很高。

5.流处理器SM

一个SM内有两个block
SM中可以同时运行多条指令流水线,SM中不同warp在流水线中交替运行,以达到隐藏延时的作用。

在这里插入图片描述
每个SM有属于自己的L1$缓存,可以并行地为计算核心提供数据,这个数据在SM内部是通用的,在其他SM不可用。

SM内部还有执行单元和控制单元,前者用于计算,后者用于控制。

6.内存控制器

负责将全局存储器的数据送到L2$缓存中。

7.warp

1 SM = 2 block = 64 warp = 2048 thread
warp是GPU执行的基本单位,block是GPU启动的基本单位。
一个warp里面的32个线程只能执行同样的指令。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值