内核在多核上运行速度快,但在GPU上运行速度相对较慢



有人可以建议的算法列表,其中多核提供优于gpu的性能?我知道混合方法仍然会更快,但我真正想要的是了解GPU仍然落后于多核的领域。

从最不合适到最合适:

  • gpu只能加速SIMD类型的工作负载,因此它们不适用于任务并行操作(如make -jN)。
  • gpu没有太多的缓存,与cpu相比,它们的原子操作相对较慢;所以它们远不如带有指针结构(如树)的cpu好。
  • 图像处理或计算机视觉等工作负载处于灰色区域,GPU优势(纹理映射硬件,更多内核)可能被CPU优势(更好的SIMD整数支持,更高的时钟速率)所抵消。如果实际的处理是在浮点数中完成的,那么它可能对GPU来说是一个清洗或轻微的优势;如果处理以整数形式完成,并且可以映射到SSE2指令,则CPU将粉碎GPU。

gpu擅长使用大量单精度浮点数的数据并行工作负载。

任何工作负载被卸载到GPU也会产生数据传输成本

英特尔的一些人做了一些研究,他们比较了现代多核cpu和gpu的科学计算。也许你会觉得有趣。第5页的图1显示了结果。

Lee et al,"揭穿100X GPU vs CPU神话:CPU和GPU吞吐量计算的评估";http://www.hwsw.hu/kepek/hirek/2010/06/p451-lee.pdf