【问题标题】:Which is faster in CUDA, global memory or host memory?CUDA、全局内存或主机内存哪个更快?
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-07-13
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 2018-05-23
    • 2012-06-05
    • 1970-01-01
    • 2023-03-13
    • 2013-11-09
    相关资源
    最近更新 更多