GPU使用SIMD范例,即代码的相同部分将并行执行,并应用于数据集的各种元素。
但是,CPU也使用SIMD,并提供指令级并行。例如,据我所知,类似SSE的指令将处理具有并行性的数据元素。
虽然SIMD范例似乎在GPU和CPU中的使用方式不同,但GPU的SIMD功率是否比CPU更多?
CPU中的并行计算能力以哪种方式比GPU中的“弱”?
由于
答案 0 :(得分:16)
两个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执行的工作。
答案 1 :(得分:11)
这是一个类似的想法,它有点像这样(非常非正式地说):