GPU作为CPU的可行性?
我们认为GPU作为CUDA这样的CPU计划的未来是什么?我们是否认为它们将成为主流并成为行业中的下一个流行时尚?苹果公司正在建立一个使用GPU来执行CPU任务的新框架,并且在Nvidias CUDA科学项目中取得了很多成功。我们是否建议学生将时间投入此领域?
解决方案
回答
我认为这是正确的方法。
考虑到已经利用GPU来创建廉价的超级计算机,这似乎是事物的自然发展。拥有如此强大的计算能力和研发能力,为什么不利用现有技术呢?
所以继续吧。它将进行一些很酷的研究,以及购买该高端图形卡的合法理由,以便我们可以在完整的图形细节上玩《孤岛危机》和《刺客信条》;)
回答
首先,我不认为这个问题确实属于SO。
在我看来,无论何时进行基于矢量的浮点数学运算,GPU都是一个非常有趣的选择。但这意味着:它不会成为主流。大多数主流(桌面)应用程序只执行很少的浮点计算。
它已经在游戏(物理引擎)和科学计算中获得了关注。如果我们将这两者中的任何一个视为"主流",那么GPU将会成为主流。
我不认为这两者是主流,因此我认为GPU将成为主流行业中的下一个流行时尚。
如果我们作为学生对基于物理学的大量科学计算感兴趣,那么我们绝对应该花一些时间(无论如何,GPU是非常有趣的硬件)。
回答
拥有这么多尚未开发的功能,我看不到它会在太长时间内无法使用。但问题是,GPU将如何用于此目的。目前,CUDA似乎是一个不错的猜测,但其他技术也在不断涌现,这可能使普通开发人员更容易上手。
苹果公司最近宣布了OpenCL,他们声称它比CUDA还要多,但非常简单。我不知道该怎么做,但是khronos小组(从事OpenGL标准的开发人员)正在研究OpenCL标准,并正在努力使其与OpenGL具有高度的互操作性。这可能会导致更适合常规软件开发的技术。
这是一个有趣的主题,顺便说一句,我即将开始我的硕士论文,主题是如何以CUDA为主要焦点,如何最好地为普通开发人员(如果可能)提供GPU功能。
回答
这是我们看到1或者2个应用程序需要做的事情之一,但是很快有人就会提出一个"杀手级应用程序",该应用程序可以弄清楚如何以超快的速度使用它来做一些更有用的事情。
像素着色器可将例程应用于大量的float值,也许我们会看到一些GIS Coverage应用程序,或者我不知道。如果我们不花更多的时间在我身上,那么我们将拥有与我相同的洞察力,即很少!
我觉得这可能是一件非常大的事情,就像Intel和S3一样,也许它只需要对硬件进行一点微调,或者头顶上有一个灯泡。
回答
从长远来看,我认为随着通用处理器不断发展以接管这些功能,GPU将不复存在。英特尔的Larrabee是第一步。历史表明,对x86进行投注是一个坏主意。
大规模并行体系结构和矢量处理的研究仍将是有用的。
回答
如果我们对科学和并行计算感兴趣,请花点时间。不要认为CUDA会使GPU看起来像CPU。与旧的GPGPU编程技术相比,它仅允许使用更直接的GPU编程方法。
通用CPU从分支预测,流水线,超级缩放器等所有工作中获得了在各种任务上都能正常工作的能力。这使它们有可能在各种工作负载上实现良好的性能,而使它们无法进行高吞吐量的内存密集型浮点运算。
GPU最初被设计为做一件事,并且做得非常非常好。图形操作本质上是并行的。我们可以同时计算屏幕上所有像素的颜色,因为结果之间没有数据相关性。此外,所需的算法不必处理分支,因为几乎所有需要的分支都可以通过将系数设置为零或者一来实现。因此,硬件可能非常简单。不必担心分支预测,而不是使处理器成为超标量,我们只需添加尽可能多的ALU,就可以在芯片上进行装载。
借助可编程的纹理和顶点着色器,GPU获得了通向通用可编程性的途径,但它们仍然受到硬件的限制,该硬件仍为高吞吐量浮点运算而设计。可能会添加一些其他电路,以实现更多通用计算,但仅限于一点。损害GPU进行图形处理能力的任何事情都不会成功。毕竟,GPU公司仍然从事图形业务,目标市场仍然是游戏玩家和需要高端可视化的人们。
GPGPU市场仍然是水落石出,并且在一定程度上仍将保持下降的势头。毕竟,"看起来漂亮"要比"每次100%保证和可重复的结果"要满足的标准低得多。
简而言之,GPU永远不可能像CPU那样可行。它们只是为不同类型的工作负载而设计的。我期望GPU的功能将使它们对于快速解决各种问题非常有用,但它们始终将始终是图形处理单元。
始终将我们遇到的问题与最适合我们解决问题的工具相匹配,这一点始终很重要。
回答
GPU永远不会取代CPU。 CPU执行一组顺序指令,而GPU并行执行非常特定类型的计算。这些GPU在数值计算和图形方面具有巨大的实用性。但是,大多数程序绝不能利用这种计算方式。
我们很快就会开始看到Intel和AMD的新型处理器,包括GPU风格的浮点矢量计算以及标准CPU计算。