3

我从CUDA by Example的第 9.4 章读到,当在 GPU 全局内存上不正确地使用原子操作时,由于内存访问争用,程序的性能可能比纯粹在 CPU 上执行时更差。

在更糟糕的情况下,在 GPU 上执行的程序是高度序列化的,没有线程并行执行,这正是单线程程序在 CPU 上运行的方式。所以关键问题是程序访问内存的速度有多快。

考虑到我提到的书中的例子,CPU 访问主机内存的速度似乎比 GPU 访问设备上的全局内存快。

是这样吗?或者在我刚才描述的情况下,还有其他影响程序性能的因素吗?

4

1 回答 1

5

我认为你误读了一些东西。是的,它是说 GPU 上的单线程代码通常比 CPU 上的要慢。但这不是因为原始内存带宽 - 这是因为在运行单线程时 CPU 比 GPU 更强大。例如,CPU 具有流水线和复杂的分支预测以从内存中预加载数据,而 GPU 旨在在等待数据时将上下文切换到另一个线程。CPU 针对单线程情况进行了调优,而 GPU 针对多线程进行了调优。

如果您想知道哪种内存最快,请查看您的卡和主板的技术规格,但这并不是本书真正要讨论的内容。

于 2012-07-12T04:33:05.153 回答