GPU 编程 CPU 异同点_GPU编程6--CPU与GPU的区别

bb257c318fc1167468546884ba9132cb.png

我们学习GPU编程,肯定都是要有CPU编程的基础,不可能连C都不会就直接学习GPU,因此,我们这一节就来讲一下CPU与GPU的不同,可以让大家更好的了解GPU编程。

  1. 硬件架构不同,以Intel的某款8核处理器为例,CPU中有很大一部分面积都被缓存占去了,相比之下,8个核心占的面积并不算大。所以CPU的主要时间并不是计算,而是在做数据的传输。

0fb81c9b2d83e7a3b7062be7b4bef6cd.png

再来看GPU的架构,从下图可以看出,GPU中缓存只占了很小的一部分的空间,绝大多数的空间都被计算单元SMX占用,因此GPU更适合用来做运算。

450f3b289d190807385026b4a24e9299.png

2. CPU适合那种逻辑复杂,但运算量小的任务;而GPU适合运算量大,但逻辑简单的任务,结合我们后面章节讲的例子,也可以看出,我们在GPU编程时,有一种优化方式就是将循环展开,这样会导致代码量会有所提高,但通过这个操作,我们明确告诉GPU应该做什么处理,提高GPU的执行效率;

3. 支持线程的方式不同,CPU的每个核只有少量的寄存器,每个寄存器都将在执行任何已分配的任务中被用到。为了能执行不同的任务,CPU将在任务与任务之间进行快速的上下文切换。从时间的角度看,CPU上下文切换的代价是非常昂贵的,因为每一次上下文切换都要将寄存器组里的数据保存到RAM中,等到重新执行这个任务时,又从RAM中恢复。相比之下,GPU同样会用到上下文切换的概念,但它拥有多个寄存器组而不是单个寄存器组。因此一次上下文切换只需要设置一个寄存器组调度者,用于将当前寄存器组里的内容换进、换出,它的速度比将数据保存到RAM中要快好几个数量级。

4. 对失速状态的处理不同,失速状态是指当没有足够多的任务时,处理器就会闲置。如果此时有很多小任务,每一个都会在一小段时间后阻塞,那么CPU将花费大量的时间在上下文切换上,而只有少部分时间在做有用的工作,此时效率就会急剧下降。而GPU对这种失速状态的处理就很好,GPU采用的是数据并行的模式,它需要成千上万个线程,从而实现高效的工作。它利用有效的工作池来保证一直有事可做,不会出现闲置状态。当GPU遇到内存获取操作或在等待计算结果时,SM就会切换到另一个指令流,而在之后再执行之前被阻塞的指令。

5. CPU遵循缓存一致性,而GPU不是,这一点在上一节“GPU内存深入了解”中有讲,这里不多赘述。

欢迎关注微信公众号:Quant_Times

GPU和MIC都是用于高性能计算的加速器。offload模式是将部分计算任务从CPU转移到加速器上,以提高计算性能。GPU和MIC的offload模式有以下异同: 1. 异同GPU和MIC的offload模式都是将计算任务从CPU转移到加速器上进行处理,以提高计算性能。但是,两者的处理方式不同。GPU通过CUDA或OpenCL等编程模型来实现offload,而MIC则通过Intel Xeon Phi架构来实现offload。 2. 异同GPU和MIC的offload模式都需要将数据传输到加速器的内存中,以便进行计算。但是,两者的内存结构和管理方式也不同。GPU的内存结构是分层的,包括全局内存、共享内存和寄存器等不同层次的内存。而MIC的内存结构是统一的,可以通过NUMA架构进行管理。 3. 异同GPU和MIC的offload模式都需要进行编程,以便将计算任务分配到加速器上进行处理。但是,两者的编程模型也不同。GPU编程模型是基于CUDA或OpenCL等语言的,而MIC的编程模型则是基于OpenMP等标准的。 4. 异同GPU和MIC的offload模式都可以提高计算性能,但是对于不同的应用场景,两者的性能表现也不同。GPU适用于大规模并行的计算任务,而MIC适用于单节的高性能计算任务。 综上所述,GPU和MIC的offload模式在实现方式、内存结构、编程模型和性能表现等方面都有所不同。在选择适合自己应用场景的加速器时,需要根据实际需求进行选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值