CPU并行与GPU并行联系及区别

主要参考博文:https://blog.csdn.net/ustcbob/article/details/38677603

应用特点:GPU并行吞吐量大,适合大数据并行处理;CPU适合逻辑处理和串行计算,适合多任务并行处理;

GPU工作模式
1)CPU 具有独立的内存和寄存器,GPU也具有独立的显存和寄存器。CPU作为主控制器,CPU和 GPU 协同处理任务,GPU主要处理可以高度并行的数据处理任务,CPU则负责逻辑处理和串行计算相关任务。

2)GPU上的程序被称为内核函数,也叫kernel。kernel是并行执行的程序段。在一段程序中可以有多个内核函数,每个内核函数内部都是并行执行的,但是各个kernel之间确是是串行执行的,其中还可以穿插CPU代码段。

3)CUDA程序执行步骤:CPU完成初始化工作,将参与并行运算的数据拷贝到显存中,GPU上启动内核函数,在GPU上执行并行运算程序,GPU运算完成后将数据结果由显存传送回CPU内存。在程序设计中应尽量少使用分配内存,拷贝数据等涉及到CPU和 GPU 数据交换的这些命令。GPU的硬件特性使得block与block之间的通信很难,但是CUDA中的全局存储器允许多个GPU或者同一个GPU的多个block同时对一块存储空间进行访问。

 

GPU编程模型
1)CUDA中的基本逻辑执行单位:网格(grid)、线程块(block)、线程(thread)和线程组(warp )。

2)一个内核函数对应一个网格。一个网格中有多个block,block是内核函数执行的基本单位,线程块之间是无序并行执行的,并且不同的线程块之间是没办法相互通信的。

3)一个block可最多由512个线程构成。线程是CUDA编程模型中可以分配的最小单位,也是资源最终的持有者。每个线程都有独立的register和 local memory,同一个线程块的线程之间可以相互进行细粒度通信。

4)warp是 CUDA 程序运行时的实际执行单位。CUDA架构中一个warp由 32 个线程组成。

5)GPU编程有两个主要平台,一个是OpenCL,编程方式类似OpenGL的产业标准,还有另一个是为了C/C++ 的CUDA,在NVIDIA的GPU上编程。

补充:

grid:kernal函数的执行单元,一个kernal对应一个grid,grid内部是并行执行,gird之间通过cpu调度串行执行。

block:block是并行计算的基本单位,block之间无序并行执行:具体来说,每个SM控制多个block块,多个SM以warp为单位进行线程调度并行执行(warp是实际并行计算单位)

thread:最小的执行单元,实际资源的拥有者

可参考博客:https://blog.csdn.net/junparadox/article/details/50540602

 

适用GPU场景
1. 内核中有很多并行线程的应用。

2. 对于线程间的数据交换都发生在kernel调度空间中的相邻线程之间的应用,因为这样就可以用到per-block shared memory。

3. 数据并行的应用,多个线程做相似工作,循环是数据并行的主要来源。

4. 做同步操作较少的应用。

 

不适合GPU场景
1. 并行度小的应用,如需要的线程数小于100个,那么使用GPU加速效果不明显。

2. 不规则的任务并行---尽管应用需要很多线程,但是这些线程都做不同的工作,那么GPU不能得到有效的利用。不过这也依赖于具体工作,多久对线程调度一次,加速的可能仍然存在。

3. 频繁的全局同步,这要求全局的barrier,带来很大性能开销。

4. 在线程之间,会出现随机的点对点同步的应用。GPU对这个的支持不好,通常需要在每次同步的时候做一个全局barrier,如果要利用GPU,最好重构算法避免出现这个问题。

5. 要求计算量(相比于数据传输量)少的应用。尽管在CPU+GPU计算结构中,GPU可以带来计算性能的提升,但是这些提升都被向GPU传输数据所消耗的实践覆盖了。举个例子,对于两个向量求和运算,如果非常大的向量的话,一般都选择在CPU上算,否则传输到GPU上的时间开销很大。
 

 

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CPUGPU都是计算机的处理器,但它们的设计和用途不同。CPU是中央处理器,主要用于处理通用计算任务,如操作系统、应用程序和游戏。GPU是图形处理器,主要用于处理图形和图像相关的任务,如游戏、视频和图形设计。GPU通常比CPU更适合并行计算,因为它们具有更多的核心和更高的内存带宽。此外,GPU还可以用于深度学习和人工智能等领域。因此,CPUGPU在计算机中都有重要的作用,但它们的设计和用途不同。 ### 回答2: CPUGPU都是计算机的核心处理器件,但其设计和功能略有不同。 首先,CPU(Central Processing Unit,中央处理器)是计算机的主要处理器。它是计算机系统的控制中心,负责执行程序的指令、控制数据流动和协调各个硬件组件之间的通信。CPU拥有较小的核心数目(通常为1到8个核心),并且被优化用于处理序列化任务,例如控制操作系统、运行应用程序和处理输入/输出。 相比之下,GPU(Graphical Processing Unit,图形处理器)是用于处理图形和图像的特定处理器。GPU由大量并行工作单元组成,可以同时处理多个任务。它的设计目标是优化图形和视觉计算,如3D游戏、视频渲染和图像处理。由于GPU采用了并行处理方式,它在处理大规模数据集和复杂图形任务时更加高效。 虽然CPUGPU在设计和功能上有所不同,但它们也有联系。例如,CPUGPU可以通过总线连接,使它们能够相互通信和协同工作。在某些情况下,如进行科学计算、机器学习和数据挖掘等需要并行计算的任务中,CPUGPU可以合作使用,以提高整体计算性能。GPU还可以被用作一种加速计算的协处理器,为CPU提供额外的计算资源。因此,在一些高性能计算领域,如人工智能和深度学习,CPUGPU的结合应用已经成为一种普遍的趋势。 综上所述,CPUGPU在设计和功能上存在差异,但它们也有联系,并且在一些应用领域中可以进行协同工作,提高计算性能。 ### 回答3: CPUGPU是计算机中两个重要的处理器。它们在结构、设计和用途方面存在着一些区别联系。 首先,CPU(中央处理器)是计算机的核心处理单元,负责执行各种指令和控制计算机的运行。它具有较高的时钟频率和复杂的指令集,适用于处理多种计算任务和操作系统。CPU通常包含几个处理核心,每个核心都能执行多个线程,使其能够同时处理多个任务。 而GPU(图形处理器)是专门用于图形处理和并行计算的处理器。它具有大量的处理核心,能够并行运行大规模的数值计算任务。 GPU的设计使其在图像、视频处理和游戏等领域中具有极大的优势。GPU还可用于科学计算、机器学习和密码学等领域,因为其并行计算能力超过了CPUCPUGPU有一些联系。首先,它们都是计算机中的处理器,负责进行计算和处理数据。它们在计算机系统中协同工作,相互补充,共同提高计算速度和系统性能。同时,它们都通过总线与其他计算机组件进行通信,并与内存交互以获取数据。 然而,CPUGPU之间也存在一些区别。首先,GPU具有更多的核心和更高的并行计算能力,而CPU则具有更高的时钟频率和更复杂的指令集。此外,GPU的设计更注重处理图形和并行计算,而CPU则更适合处理各种任务和操作系统。此外, GPU通常具有较高的功耗和散热要求,而CPU则更注重节能和温度控制。 总结起来,CPUGPU都是计算机中重要的处理器,它们在结构和设计上存在一些区别联系。它们分别适用于不同的计算任务和应用领域,共同提高计算机的性能和效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值