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