【发布时间】:2012-07-11 18:26:40
【问题描述】:
我从 CUDA by Example 中读到,第 9.4 章,当在 GPU 全局内存上不正确地使用原子操作时,程序的性能可能比纯粹执行时更差在 CPU 上,因为内存访问争用。
在更糟糕的情况下,在 GPU 上执行的程序是高度序列化的,没有线程并行执行,这正是单线程程序在 CPU 上运行的方式。所以关键问题是程序访问内存的速度。
考虑到我提到的书中的示例,CPU 访问主机内存的速度似乎比 GPU 访问设备上的全局内存快。
是这样吗?或者在我刚才描述的情况下,还有其他影响程序性能的因素吗?
【问题讨论】:
-
我认为您应该提供更多信息,因为这个问题是开放的。你能提供书中的示例代码吗? FWIW,Kepler GPU 上的原子操作比 Fermi GPU 上的要快得多,尤其是在许多线程以原子方式更新同一地址的昂贵情况下。那本书在 GPU 年代已经很老了......
-
也许我不应该提到“原子操作”...我只是想知道 GPU 运行单线程代码的方式与 CPU 有何不同,以及性能上的差异。所以我认为下面的答案很好地解释了我的要求。
标签: cuda