CUDA、全局内存和主机内存中哪个更快?

CUDA、全局内存和主机内存中哪个更快?,cuda,Cuda,我从《CUDA示例》第9.4章中读到,当在GPU全局内存上不正确地使用原子操作时,由于内存访问争用,程序的性能可能比单纯在CPU上执行时差 在更糟糕的情况下,在GPU上执行的程序是高度序列化的,没有线程并行执行,这正是单线程程序在CPU上运行的方式。因此,关键问题是程序访问内存的速度有多快 考虑到我在书中提到的例子,CPU访问主机内存的速度似乎比GPU访问设备上的全局内存的速度要快 是这样吗?或者在我刚才描述的情况下,还有其他因素影响程序的性能吗?我认为您有点误读。是的,这意味着GPU上的单线程

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

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

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


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

我认为您有点误读。是的,这意味着GPU上的单线程代码通常比CPU上的慢。但这并不是因为原始内存带宽,而是因为CPU在运行单个线程时比GPU强大得多。例如,CPU具有流水线和复杂的分支预测功能,可以从内存中预加载数据,而GPU设计用于在等待数据时将上下文切换到另一个线程。CPU针对单线程情况进行了调优,而GPU针对多线程进行了调优


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

我认为您应该提供更多信息,因为这个问题是完全开放的。你能提供书中的示例代码吗?FWIW,开普勒GPU上的原子操作要比费米GPU快得多,特别是在许多线程以原子方式更新同一地址的昂贵情况下。那本书在GPU时代已经很老了…也许我不应该提到“原子操作”。。。我只是想知道GPU运行单线程代码与CPU有什么不同,以及性能上的差异。所以我认为下面的答案很好地解释了我的问题。