您认为 GPU 作为像 CUDA 这样的 CPU 计划的未来是什么?您认为它们会成为主流并成为该行业的下一个流行时尚吗?Apple 正在构建一个使用 GPU 执行 CPU 任务的新框架,Nvidia 的 CUDA 项目在科学领域取得了很大的成功。你会建议学生花时间进入这个领域吗?
8 回答
如果您对科学和并行计算感兴趣,请花时间。不要想到 CUDA 并让 GPU 看起来像 CPU。它只允许一种比旧的 GPGPU 编程技术更直接的 GPU 编程方法。
通用 CPU 从分支预测、流水线、超缩放器等所有工作中获得了在各种任务上良好工作的能力。这使得它们能够在各种工作负载上实现良好的性能,同时使它们无法处理高吞吐量的内存密集型浮点运算。
GPU 最初是为做一件事而设计的,并且做得非常非常好。图形操作本质上是并行的。您可以同时计算屏幕上所有像素的颜色,因为结果之间没有数据依赖关系。此外,所需的算法不必处理分支,因为几乎任何需要的分支都可以通过将系数设置为零或一来实现。因此硬件可以非常简单。不必担心分支预测,您可以简单地添加尽可能多的 ALU,而不是制作处理器超级缩放器,您可以将尽可能多的 ALU 添加到芯片上。
借助可编程纹理和顶点着色器,GPU 获得了通向通用可编程性的途径,但它们仍然受到硬件的限制,硬件仍然是为高吞吐量浮点运算而设计的。可能会添加一些额外的电路以实现更通用的计算,但仅限于某一点。任何损害 GPU 处理图形能力的东西都不会成功。毕竟,GPU 公司仍在从事图形业务,目标市场仍然是游戏玩家和需要高端可视化的人。
GPGPU市场仍是杯水车薪,一定程度上仍将如此。毕竟,“它看起来很漂亮”是一个比“每次都 100% 保证和可重复的结果”要低得多的标准。
所以简而言之,GPU 永远不会像 CPU 那样可行。它们只是为不同类型的工作负载而设计的。我预计 GPU 将获得使它们对快速解决更广泛的问题有用的功能,但它们将始终首先是图形处理单元。
始终将您遇到的问题与您必须解决的最合适的工具相匹配总是很重要的。
从长远来看,我认为 GPU 将不复存在,因为通用处理器不断发展以接管这些功能。 英特尔的 Larrabee是第一步。历史表明,押注 x86 是一个坏主意。
大规模并行架构和矢量处理的研究仍然有用。
首先,我不认为这个问题真的属于 SO。
在我看来,每当您进行基于向量的浮点数学运算时,GPU 都是一个非常有趣的替代方案。然而,这意味着:它不会成为主流。大多数主流(桌面)应用程序很少进行浮点计算。
它已经在游戏(物理引擎)和科学计算中获得了关注。如果您将这两者中的任何一个视为“主流”,那么 GPU 将成为主流。
我不会将这两者视为主流,因此我认为 GPU 将成为主流行业的下一个流行趋势。
如果你作为一名学生对基于物理的科学计算有兴趣,那么你绝对应该投入一些时间(GPU 无论如何都是非常有趣的硬件)。
GPU永远不会取代CPU。CPU 执行一组顺序指令,GPU 并行执行特定类型的计算。这些 GPU 在数值计算和图形方面有很大的用途;但是,大多数程序决不能利用这种计算方式。
您很快就会开始看到来自 Intel 和 AMD 的新处理器,其中包括 GPU 式浮点矢量计算以及标准 CPU 计算。
我认为这是正确的方法。
考虑到GPU 已被用于制造廉价的超级计算机,这似乎是事物的自然演变。已经为您完成了如此多的计算能力和研发,为什么不利用可用的技术呢?
所以继续做吧。它将进行一些很酷的研究,以及购买该高端显卡的正当理由,这样您就可以在完整的图形细节上玩孤岛危机和刺客信条 ;)
它是您看到 1 或 2 个应用程序的那些事情之一,但很快就会有人想出一个“杀手级应用程序”,它会弄清楚如何以超快的速度用它做一些更普遍有用的事情。
像素着色器将例程应用于大型浮点值数组,也许我们会看到一些 GIS 覆盖应用程序,或者好吧,我不知道。如果您没有比我投入更多的时间,那么您将拥有与我相同的洞察力 - 即很少!
我有一种感觉,它可能是一件非常大的事情,就像英特尔和 S3 一样,也许它只需要对硬件进行一点小调整,或者有人头顶上有一个灯泡。
有这么多未开发的力量,我看不出它会被闲置太久。不过,问题是 GPU 将如何用于此目的。CUDA 目前似乎是一个不错的猜测,但其他技术正在出现,这可能会使普通开发人员更容易接受它。
Apple 最近宣布了 OpenCL,他们声称它远不止 CUDA,而且非常简单。我不确定具体是什么,但 khronos 小组(从事 OpenGL 标准工作的人)正在研究 OpenCL 标准,并试图使其与 OpenGL 高度互操作。这可能会导致一种更适合普通软件开发的技术。
这是一个有趣的主题,顺便说一下,我即将开始我的硕士论文,主题是如何最好地让普通开发人员(如果可能的话)能够以 CUDA 为主要关注点使用 GPU 功能。
很久以前,很难进行浮点计算(在 80386 等性能(按照今天的标准)性能极差的 CPU 上,每条指令需要数千/数百万个周期的仿真)。需要浮点性能的人可以得到一个 FPU(例如,80387。旧的 FPU 相当紧密地集成到 CPU 的操作中,但它们是外部的。后来它们变得集成了,80486 内置了 FPU。
旧时的 FPU 类似于 GPU 计算。我们已经可以通过 AMD 的 APU 获得它。APU 是内置有 GPU 的 CPU。
So, I think the actual answer to your question is, GPU's won't become CPUs, instead CPU's will have a GPU built in.