图形处理器使用SIMD范式,即代码的相同部分将被并行执行,并应用于数据集的各个元素。
但是,CPU也使用SIMD,并提供指令级并行。例如,据我所知,类似SSE的指令将并行处理数据元素。
虽然SIMD范例在GPU和CPU中的使用方式似乎不同,但GPU是否比CPU具有更强的SIMD能力?
在哪方面,CPU的并行计算能力比GPU的“弱”?
发布于 2014-12-07 00:42:53
这是一个类似的想法,有点像这样(非常非正式地说):
发布于 2015-07-24 08:37:29
CPU和GPU都为SIMD提供了最标准的概念单元是16字节/128位;例如,4个浮点数的向量(x,y,z,w)。
简化:
然后,CPU通过流水线处理未来的指令来实现更多的并行化,这样它们就可以在程序中更快地执行。然后下一步是运行独立程序的多核。
另一方面,GPU通过继续SIMD方法并多次执行同一程序来并行化;既通过纯SIMD并行化,其中一组程序在锁定步骤中执行(这就是为什么分支在GPU上是不好的,因为if语句的两侧必须执行;以及丢弃一个结果,使得锁定步骤程序以相同的速率进行);也通过single program, multiple data (SPMD),其中多组相同的程序并行地进行,但不一定在锁定步骤中进行。
GPU方法非常适用于需要对大量数据应用完全相同的处理;例如,需要以相同方式转换的一百万个顶点,或者需要处理以产生其颜色的数百万个像素。假设它们不会成为数据块/管道停滞,由于其限制,GPU程序通常提供更可预测的时间限制执行;这再次有利于时间并行性,例如程序需要以特定的速率重复其周期,例如每秒60次(16ms),持续60 fps。
但是,CPU方法更适合于同时决策和执行多个不同的任务,以及处理不断变化的输入和请求。
除了它的许多其他用途和目的之外,CPU还用于协调GPU执行的工作。
https://stackoverflow.com/questions/27333815
复制相似问题