cuda编程cuda_lecture1_part2

来源:炼数成金罗老师的课

GPU原理:

  1. GPU和CPU的区别是什么?什么时候考虑去使用GPU?
    CPU结构图如下:
    CPU内部原件比例图
    CPU内部原件比例图

Control: 控制器
ALU:计算单元
Cache: 缓存
DRAM:存储

GPU内部比例图
每个控制器和每个存储单元组成一个小组件的话,可以跟随很多个计算单元。这是GPU不一样的地方。CPU是一个控制单元只能跟随少量的计算单元。

CPU的发展如下图:处理器越来越小,处理速度越来越快,处理核变多,但是到了2009年就停止上升了。在这里插入图片描述
在这里插入图片描述
CPU的尺寸在越来越小。

CPU和GPU的设计理念是不一样的!
性能(低延时性Latency)与吞吐量(Throughput)
低延时性(Latency):在最少的时间内处理完最多的数据,或者说同等量的数据用最短的时间来完成。

吞吐量:一次性处理数据的总量。

所以CPU和GPU的设计理念上的根本区别在于,CPU在于最大化低延时性(Latency),而GPU的目的在于最大化吞吐量(Throughput)。

CPU为什么不能一直发展下去?
答:CPU的设计理念存在一个问题:第一,因为我们的CPU会变得越来越小,所以我们的存储空间Local Cache是不可以变的无限大的,这就代表我们每一次处理数据的量是有限的,因此这不是一个线性增长的能力。第二,虽然我们计算单元的计算能力很强,但是计算能力强会带来另外一个问题,就是散热的问题。

CPU:低延时性主导的设计理念。
CPU的每个计算单元都非常强大,可以在很少的时钟周期内完成算数计算,因此需要一个非常强大且复杂的控制单元。
由于CPU的设计导向是低延时性的导向,因此需要一个非常大的缓存,保存很多的数据在缓存里面。

GPU:以高吞吐量为导向的设计理念,GPU的设计理念可以让GPU只要是处理单元多,就能有多个计算单元。GPU不做复杂处理,而是把复杂的处理分成多个简单的处理,同时把大的数据拆分成为小的数据,这就是GPU的设计理念。只要计算单元更多,GPU就能超过CPU。

总结:
ALU,Cache: GPU的特点是有很多的ALU和很少的cache。缓存的目的不是保存后面需要访问的数据的,这点和CPU不同,而是为thread提高服务的。如果有很多线程需要访问同一个相同的数据,缓存会合并这些访问,然后再去访问dram(因为需要访问的数据在dram中而不是在cache里面),获取数据后cache会转发这个数据给对应的线程,这个时候数据转发的角色。但是由于需要访问dram,自然会带来延时的问题。

Control:控制单元(左边黄色区域块)可以把多个的访问合并成少的访问。
GPU的虽然有dram延时,却有非常多的ALU和非常多的thread。为了平衡内存延时的问题,我们可以中充分利用多的ALU的特性达到一个非常大的吞吐量效果,尽可能多的分配多的Threads。通常来看GPU ALU会有非常重的pipeline就是因为这样。

CPU擅长逻辑控制,串行的运行。和通用类型数据运算不同,GPU擅长的是大规模并发计算,这也正是密码破解等所需要的。所以GPU除了图像处理,也越来越多的参与到计算当中来。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值