【发布时间】:2014-09-02 18:46:15
【问题描述】:
现在我们有了使用 CUDA 和 OpenCL 等语言的 GPGPU,多媒体 SIMD 扩展 (SSE/AVX/NEON) 是否仍然有用?
我最近阅读了一篇关于如何使用 SSE 指令来加速排序网络的文章。我认为这很简洁,但是当我告诉我的计算机拱教授时,他笑着说在 GPU 上运行类似的代码会破坏 SIMD 版本。我不怀疑这一点,因为 SSE 非常简单,而且 GPU 是大型高度复杂的加速器,具有更多的并行性,但它让我思考,在很多场景中,多媒体 SIMD 扩展是否比使用 GPU 更有用?
如果 GPGPU 让 SIMD 变得多余,英特尔为什么要增加对 SIMD 的支持? SSE 是 128 位,现在 AVX 是 256 位,明年将是 512 位。如果 GPGPU 可以更好地处理具有数据并行性的代码,为什么英特尔要推动这些 SIMD 扩展?他们或许能够将同等资源(研究和领域)放入更大的缓存和分支预测器,从而提高串行性能。
为什么使用 SIMD 而不是 GPGPU?
【问题讨论】:
-
FWIW,英特尔似乎有意将 SIMD 大小增加到与 GPU 宽度相同(甚至更长)的程度。即合并 CPU 和 GPU。
-
@Mysticial 啊,是吗?你有一些我可以阅读的参考资料吗?
-
英特尔的 OpenCL 实现使用 SSE 和 AVX 进行了优化,实际上提供了相当不错的加速(在他们的 CPU 上而不是 Xeon Phi 上)。 SIMD / AVX / NEON 不会去任何地方,而是飘到后台。他们可能会为各种前端(如 OpenCL)做繁重的工作。
-
@Mysticial,根据 Agner Fog 的微架构手册,英特尔计划达到 1024,但没有进一步的计划。
-
设置 gpgpu 需要时间,而 simd 版本可能已经完成的时间。 gpgpu 启动后很快,但工作量的大小可能不值得。
标签: cuda gpgpu simd computer-architecture cpu-architecture