GPGPU:还在流血边缘?

dsi*_*cha 4 performance cuda gpgpu

GPGPU是否已准备好用于生产和原型设计,或者您仍然认为它主要是研究/前沿技术?我在计算生物学领域工作,它开始吸引更多来自计算机科学的人在该领域的注意力,但大多数工作似乎是移植众所周知的算法.算法的移植本身就是研究项目,并且该领域的绝大多数人对此并不了解.

我在传统的多核上做了一些非常计算密集的项目.我想知道GPGPU有多接近可用于原型化新算法以及日常生产用途.从阅读维基百科,我得到的印象是编程模型很奇怪(严重SIMD)并且有些限制(没有递归或虚函数,虽然这些限制正在慢慢被删除;没有比C更高级的语言或C++的有限子集),而且有几个相互竞争的,不相容的标准.我也得到的印象是,与常规多核不同,细粒度并行性是城里唯一的游戏.需要重写基本库函数.与传统的多核不同,只需并行化程序的外循环并调用旧式串行库函数,就无法获得巨大的加速.

这些限制在实践中有多严重?GPGPU现在准备好用了吗?如果没有,你会猜多久?

编辑:我试图解决的一个主要问题是,编程模型与常规多核CPU有多少不同,后者具有大量非常慢的内核.

编辑#2:我想我总结我得到的答案的方式是GPGPU足够实用,适合早期采用者,它非常适合,但仍然不足以被视为"标准"工具,如多核或分布式并行,即使在性能很重要的那些利基中也是如此.

Ira*_*ter 5

毫无疑问,人们可以使用GPU进行有用的,生产和计算.

大多数在这里表现良好的计算是那些非常接近于令人尴尬的并行性的计算.CUDA和OpenCL都会让你以一种中等痛苦的方式表达这些计算.因此,如果您可以按照这种方式进行计算,那么您可以做得很好.我不认为这种限制会被严重删除; 如果他们能做到这一点,那么普通的CPU也可以做到这一点.至少我不会屏住呼吸.

您应该能够通过查看现有代码来判断您当前的应用程序是否合适.与大多数并行编程语言一样,在编写完整的应用程序之前,您不会知道自己的真实性能.不幸的是,经验无可​​替代.