GPU执行“流程”与CPU的关系

问题描述 投票:0回答:1

在通用CPU上执行并行处理,将计算/问题分解为子问题,将其分发并在一个或多个套接字/服务器上的多个内核上并行运行。

[从加载数据到将结果发送回CPU,GPU上的执行“流程”是什么?在GPU上执行与在CPU上执行之间的主要区别是什么?

我们应该将GPU视为“具有数量更多(数量更多)较小核的CPU类型”,还是本质上存在其他差异?

gpu nvidia core cpu-architecture execution
1个回答
0
投票

CPU和GPU之间的并行处理的根本区别在于,CPU是MIMD(多指令多数据),而GPU是SIMD(单指令多数据)。在多核CPU中,每个内核独立于其他内核获取其指令和数据,而在GPU中,一组内核(通常为32或64)只有一个指令流。虽然32/64核只有一个指令流,但是它们每个都在处理不同的数据元素(通常一起位于内存中;更多内容请参见下文)。这种SIMD执行意味着GPU内核以锁步方式运行。

由于上述原因,GPU不能被视为“具有数量更多(数量更多)更小的核心的CPU类型”。

为了支持SIMD执行(有时也称为宽执行),我们需要宽范围地获取输入数据。对于32宽的执行,我们获取contiguous 4B x 32块= 128B,(通常)全部由32宽的管道消耗。与此形成对比的是MIMD多核,其中32个CPU内核中的每个将获取一条单独的指令,然后从32个不同的缓存行中进行加载。与MIMD相比,(宽)指令/数据提取的SIMD性质可节省大量电能。结果,对于相同的功耗预算,我们可以在GPU上放置比多核CPU更多的内核(=>更多硬件并行性)。

GPU的SIMD性质是由在许多输入元素上执行完全相同操作的应用程序驱动的(例如,图像处理,我们在一个1024x768图像的每个像素上都应用了过滤器),因此广泛的指令/数据提取工作良好。同时,每个内核的计算都不同的应用程序(例如,当输入数据为零时采用if(),或者如果输入数据为1则采用else())或每个内核需要从不同页面获取数据的应用程序无法利用GPU的SIMD性质。

部分相关的事实是GPU支持流式传输(几乎零数据重用)并具有大量数据并行性的应用程序(例如,图像/视频)。流传输意味着我们不需要像CPU这样的大容量缓存,而大规模的数据并行性几乎完全消除了对硬件一致性机制的需求。

© www.soinside.com 2019 - 2024. All rights reserved.