现在我们的GPGPU上有CUDA和OpenCL等语言,多媒体SIMD扩展(SSE/AVX/NEON)是否仍然有用?
我最近读了一篇关于如何使用SSE指令来加速排序网络的文章.我觉得这很漂亮但是当我告诉我的comp arch教授他笑了,并说在GPU上运行类似的代码会破坏SIMD版本.我不怀疑这是因为SSE非常简单,而且GPU是大型高度复杂的加速器,具有更多的并行性,但它让我想到,有多种情况下多媒体SIMD扩展比使用GPU更有用吗?
如果GPGPU使SIMD冗余,为什么英特尔会增加他们的SIMD支持?SSE是128位,现在是AVX的256位,明年它将是512位.如果GPGPU更好地处理具有数据并行性的代码,为什么英特尔会推动这些SIMD扩展?他们可能能够将等效资源(研究和区域)放入更大的缓存和分支预测器中,从而提高串行性能.
为什么使用SIMD而不是GPGPU?