【发布时间】:2012-02-11 08:48:38
【问题描述】:
我刚刚在 GPU 上实现了一个算法,它计算数组的连续索引的差异。我将它与基于 CPU 的实现进行了比较,发现对于大型阵列,基于 GPU 的实现执行得更快。
我很好奇为什么基于 GPU 的实现执行得更快。请注意,我知道 GPU 具有多个内核并因此可以并行执行操作的表面推理,即,我们可以分配一个线程来计算每个索引的差异,而不是顺序访问每个索引。
但是谁能告诉我为什么 GPU 的性能更快的更深层次的原因。他们的架构有什么不同,以至于他们可以击败基于 CPU 的实现
【问题讨论】:
-
这是一个“一根绳子有多长?”问题——没有单一的答案。什么算法?什么显卡?什么CPU?对于您的微不足道的示例,内核的内存带宽有限,因此答案可能是“您的 GPU 的内存带宽比您的 CPU 多”。
-
这有点像问,“为什么公共汽车比汽车载更多的人(类似于带宽)?请注意,我已经知道一辆公共汽车有几个座位,因此可以载多个人同一时间,但谁能告诉我更深层次的原因,为什么他们可以承载更多的人?”嗯,他们载更多的人,因为,嗯,他们载更多的人......
-
@talonmies:内存带宽受限是什么意思?请帮忙
-
顾名思义,内存带宽受限意味着代码的整体性能受限于设备内存的最大吞吐量。 GPU 的内存吞吐量是性能瓶颈。