哪个在CUDA,全局内存或主机内存中更快?

lei*_*i_z 3 cuda

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

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

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

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

and*_*oke 5

我觉得你会误读一些事情.是的,它说GPU上的单线程代码通常比CPU慢.但这并不是因为原始内存带宽 - 这是因为在运行单个线程时CPU比GPU强大得多.例如,CPU具有流水线和复杂的分支预测以从内存预加载数据,而GPU被设计为在等待数据时将上下文切换到另一个线程.CPU针对单线程情况进行了调整,而GPU针对许多线程进行了调整.

如果你想知道哪个内存最快,请查看你的卡和主板的技术规格,但这并不是本书所讨论的内容.