首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CPU SIMD与GPU SIMD?

CPU SIMD与GPU SIMD?
EN

Stack Overflow用户
提问于 2014-12-07 00:33:59
回答 2查看 21.5K关注 0票数 35

图形处理器使用SIMD范式,即代码的相同部分将被并行执行,并应用于数据集的各个元素。

但是,CPU也使用SIMD,并提供指令级并行。例如,据我所知,类似SSE的指令将并行处理数据元素。

虽然SIMD范例在GPU和CPU中的使用方式似乎不同,但GPU是否比CPU具有更强的SIMD能力?

在哪方面,CPU的并行计算能力比GPU的“弱”?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-07 00:42:53

这是一个类似的想法,有点像这样(非常非正式地说):

  • CPU有一组可以对打包的值运行的函数。根据你的CPU的品牌和版本,你可能可以访问SSE2,3,4,3dnow等,每一种都可以让你访问越来越多的功能。您受到寄存器大小的限制,处理的数据类型越大,可以并行使用的值就越少。您可以自由地混合和匹配传统的x86/x64 instructions.
  • The图形处理器的单指令多路指令集指令,让您为纹理的每个像素编写整个流水线。纹理大小不依赖于你的管道长度,即你在一个周期中可以影响的值的数量除了你的GPU之外不依赖于任何东西,并且你可以链接的函数(你的像素着色器)可以是几乎任何东西。它有点僵化,因为你的值的设置和回读有点慢,而且这是一个一次性的过程(加载值,运行着色器,读取值),除此之外你根本不能处理它们,所以你实际上需要使用很多值才是值得的。
票数 17
EN

Stack Overflow用户

发布于 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执行的工作。

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27333815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档