2012-07-12 104 views
3

我从CUDA读取由实施例,章节9.4,即在GPU全局存储器使用的原子操作时不正确,程序的性能可能比当在CPU纯粹执行,因为存储器存取争用的,会更糟。CUDA,全局内存或主机内存哪个更快?

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

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

是这样吗?还是在我刚刚描述的情况下还有其他因素影响了节目的表现?

+1

我想你应该提供更多的信息,因为这个问题是开放的。你能提供书中的示例代码吗? FWIW,Kepler GPU上的原子操作比Fermi GPU更快,特别是在许多线程原子地更新相同地址的昂贵情况下。这本书已经在GPU年代已经很老了...... – harrism 2012-07-12 03:10:43

+0

也许我不应该提到'原子操作'...我只是想知道GPU如何运行与CPU不同的单线程代码,以及性能的差异。所以我认为下面的答案很好地解释了我所要求的。 – 2012-07-12 14:46:26

回答

5

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

如果您想知道哪个内存最快,请查看您的卡和主板的技术规格,但这本书并不真正在谈论什么。