您认为 GPU 作为 CUDA 等 CPU 计划的未来是什么?您认为它们会成为主流并成为行业下一个流行时尚吗?Apple 正在构建一个使用 GPU 执行 CPU 任务的新框架,并且 Nvidia 的 CUDA 项目在科学领域取得了很大成功。你会建议学生投入时间进入这个领域吗?

有帮助吗?

解决方案

首先,我认为这个问题不属于SO。

在我看来,每当您进行基于向量的浮点数学计算时,GPU 都是一个非常有趣的替代方案。然而,这转化为:它不会成为主流。大多数主流(桌面)应用程序很少进行浮点计算。

它已经在游戏(物理引擎)和科学计算中获得了关注。如果您将这两者中的任何一个视为“主流”,那么 GPU 将成为主流。

我不认为这两者是主流,因此我认为 GPU 将成为主流行业的下一个流行趋势。

如果您作为一名学生对基于物理的科学计算感兴趣,那么您绝对应该投入一些时间(无论如何 GPU 都是非常有趣的硬件)。

其他提示

如果您对科学和并行计算感兴趣,请投入时间。不要考虑 CUDA 并使 GPU 看起来像 CPU。它只允许比旧的 GPGPU 编程技术更直接的 GPU 编程方法。

通用 CPU 从分支预测、流水线、超级缩放器等方面的所有工作中获得了在各种任务上良好工作的能力。这使得它们能够在各种工作负载上实现良好的性能,同时使它们在高吞吐量内存密集型浮点运算中表现不佳。

GPU 最初设计是为了做一件事,并且做得非常非常好。图形操作本质上是并行的。您可以同时计算屏幕上所有像素的颜色,因为结果之间不存在数据依赖性。此外,所需的算法不必处理分支,因为几乎任何所需的分支都可以通过将系数设置为零或一来实现。因此,硬件可以非常简单。无需担心分支预测,您可以简单地添加尽可能多的 ALU,而不是制作处理器超级缩放器。

借助可编程纹理和顶点着色器,GPU 获得了通用可编程性的途径,但它们仍然受到硬件的限制,而硬件仍然是为高吞吐量浮点运算而设计的。可能会添加一些额外的电路来实现更通用的计算,但仅限于一定程度。任何损害 GPU 处理图形的能力的东西都不会出现。毕竟,GPU公司仍然从事图形业务,目标市场仍然是游戏玩家和需要高端可视化的人。

GPGPU市场仍然是杯水车薪,并且在一定程度上仍将如此。毕竟,“看起来很漂亮”比“每次都 100% 保证且可重复的结果”要满足的标准要低得多。

简而言之,GPU 永远不可能像 CPU 那样可行。它们只是针对不同类型的工作负载而设计的。我预计 GPU 将获得一些功能,使其能够快速解决更广泛的问题,但它们永远不会 图形 首先是处理单元。

始终将您遇到的问题与解决问题的最合适的工具相匹配始终很重要。

从长远来看,我认为 GPU 将不复存在,因为通用处理器不断发展以接管这些功能。 英特尔的Larrabee 是第一步。历史表明,做空 x86 并不是一个好主意。

大规模并行架构和矢量处理的研究仍然有用。

GPU永远不会取代CPU。CPU 执行一组顺序指令,GPU 并行执行非常特定类型的计算。这些 GPU 在数值计算和图形方面具有很大的实用性;然而,大多数程序根本无法利用这种计算方式。

您很快就会开始看到来自 Intel 和 AMD 的新处理器,其中包括 GPU 式浮点矢量计算以及标准 CPU 计算。

我认为这是正确的做法。

考虑到 GPU 已被用来创建廉价的超级计算机, ,这似乎是事物的自然演变。既然已经为您完成了如此多的计算能力和研发工作,为什么不利用可用的技术呢?

所以继续去做吧。这将有助于一些很酷的研究,也是购买高端显卡的合理理由,这样你就可以在完整的图形细节上玩《孤岛危机》和《刺客信条》;)

这是你看到一两个应用程序的事情之一,但很快就会有人想出一个“杀手级应用程序”,它弄清楚如何用它以超快的速度做一些更普遍有用的事情。

像素着色器将例程应用于大型浮点值数组,也许我们会看到一些 GIS 覆盖应用程序,或者好吧,我不知道。如果你不比我投入更多的时间,那么你的洞察力就会和我一样——即很少!

我有一种感觉,这可能是一件非常大的事情,就像英特尔和 S3 一样,也许它只需要在硬件上添加一点小小的调整,或者需要有人在头顶上放一个灯泡。

有这么多未开发的能量,我不知道它会如何长时间闲置。但问题是 GPU 将如何用于此目的。目前 CUDA 似乎是一个不错的猜测,但其他技术正在出现,这可能会让普通开发人员更容易理解。

Apple 最近发布了 OpenCL,他们声称 OpenCL 比 CUDA 更强大,但也非常简单。我不知道到底要做什么,但是 khronos 小组(致力于 OpenGL 标准的人)正在研究 OpenCL 标准,并试图使其与 OpenGL 具有高度的互操作性。这可能会带来一种更适合正常软件开发的技术。

这是一个有趣的主题,顺便说一句,我即将开始我的硕士论文,主题是如何最好地以 CUDA 为主要焦点,为普通开发人员提供 GPU 功能(如果可能的话)。

很久以前,进行浮点计算确实很困难(在像 80386 这样性能极差(按照今天的标准)的 CPU 上,每条指令需要模拟数千/数百万个周期)。需要浮点性能的人可以获得 FPU(例如 80387.旧的 FPU 相当紧密地集成到 CPU 的操作中,但它们是外部的。后来它们变得集成,80486 内置了 FPU。

旧式 FPU 类似于 GPU 计算。我们已经可以通过 AMD 的 APU 来实现这一点。APU 是内置 GPU 的 CPU。

所以,我认为你问题的实际答案是,GPU 不会成为 CPU,而是 CPU 会内置 GPU。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top