As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center 的指导。




9年前关闭。




GPGPU 是否已准备好用于生产和原型(prototype)制作,还是您仍然认为它主要是一种研究/前沿技术?我在计算生物学领域工作,它开始吸引该领域更多面向计算机科学的人的注意力,但大部分工作似乎都在移植众所周知的算法。算法的移植本身就是一个研究项目,该领域的绝大多数人对此知之甚少。

我在传统的多核上做了一些计算密集型的项目。我想知道 GPGPU 有多接近可用于新算法原型(prototype)设计和日常生产使用。从阅读维基百科,我得到的印象是编程模型很奇怪(大量 SIMD)并且有些限制(没有递归或虚函数,尽管这些限制正在慢慢被消除;没有比 C 更高级别的语言或 C++ 的有限子集),并且有几个相互竞争的、不兼容的标准。我还觉得,与常规多核不同,细粒度并行是唯一的游戏。需要重写基本的库函数。与传统的多核不同,仅通过并行化程序的外循环并调用老式串行库函数,您无法获得巨大的加速。

这些限制在实践中有多严重? GPGPU 现在准备好认真使用了吗?如果没有,你猜需要多长时间?

编辑:我想解决的一个主要问题是,编程模型与具有很多非常慢的内核的常规多核 CPU 有多大不同。

编辑#2:我想我总结我得到的答案的方式是GPGPU对于它非常适合的利基市场的早期采用者来说足够实用,但仍然足够前沿,不能被视为“标准”像多核或分布式并行这样的工具,即使在那些性能很重要的领域也是如此。

最佳答案

我是一名 CS 研究生,曾与 GPGPU 合作过。我还知道至少有一个组织目前正在将其软件的一部分移植到 CUDA。这样做是否值得,实际上取决于性能对您的重要性。

我认为使用 CUDA 会给你的项目增加很多费用。首先,GPU领域非常 split 。即使在 NVIDIA 卡中,您也拥有非常广泛的功能集,并且一些在一个 GPU 上运行的代码可能在另一个 GPU 上运行不可用。其次,CUDA 以及显卡的功能集变化非常快。你今年写的任何东西都必须在 2-3 年内重写,以充分利用新显卡的优势,这并非不可能。最后,正如您所指出的,编写 GPGPU 程序非常困难,以至于并行化现有的 GPGPU 算法通常是一个可发表的研究项目。

您可能想要查看已经存在的 CUDA 库,例如 CUBLAS,您可能可以将其用于您的项目,并且可以帮助您避免这些问题。

10-08 08:28