![为什么人们使用 GPU 进行高性能计算而不是使用更专业的芯片?](https://linux22.com/image/1562608/%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BA%BA%E4%BB%AC%E4%BD%BF%E7%94%A8%20GPU%20%E8%BF%9B%E8%A1%8C%E9%AB%98%E6%80%A7%E8%83%BD%E8%AE%A1%E7%AE%97%E8%80%8C%E4%B8%8D%E6%98%AF%E4%BD%BF%E7%94%A8%E6%9B%B4%E4%B8%93%E4%B8%9A%E7%9A%84%E8%8A%AF%E7%89%87%EF%BC%9F.png)
据我所知,人们开始使用 GPU 进行通用计算,因为它们是计算能力的额外来源。虽然它们在每项操作上的速度不如 CPU,但它们有许多核心,因此它们比 CPU 更适合并行处理。如果你已经拥有一台恰好有 GPU 进行图形处理的计算机,但你不需要图形,并且想要更多的计算能力,那么这是有道理的。但我也知道人们购买 GPU具体来说增加计算能力,而无意用它们来处理图形。对我来说,这似乎类似于以下类比:
我需要修剪草坪,但我的割草机很弱。所以我把放在卧室里的箱式风扇的笼子拆下来,磨了磨刀片。我用胶带把它粘在割草机上,我发现它工作得相当好。多年后,我成了一家大型草坪护理公司的采购员。我有一笔可观的预算可以花在割草工具上。我没有买割草机,而是买了一堆箱式风扇。同样,它们工作得很好,但我必须为最终不会使用的额外部件(如笼子)付费。(为了进行类比,我们必须假设割草机和箱式风扇的价格大致相同)
那么,为什么没有市场需要具有 GPU 处理能力但没有图形开销的芯片或设备呢?我可以想到几种可能的解释。其中哪一种(如果有的话)是正确的?
- 当 GPU 已经是一个不错的选择时,开发这种替代方案的成本太高了(割草机不存在,为什么不使用这种完好的箱式风扇?)。
- “G”代表图形,这仅表示其预期用途,并不意味着要付出任何努力来使芯片比任何其他类型的工作更适合图形处理(割草机和箱式风扇本质上是同一回事;不需要进行任何修改即可使其中一个像另一个一样运行)。
- 现代 GPU 与其古老的前身具有相同的名称,但如今的高端 GPU 并非专门为处理图形而设计(现代箱式风扇主要被设计为割草机,即使旧款不是)。
- 几乎任何问题都可以轻松地转换成图形处理语言(可以通过快速吹气来割草)。
编辑:
我的问题已经得到解答,但根据一些评论和回答,我觉得我应该澄清一下我的问题。我不是在问为什么每个人都不购买自己的计算。显然,在大多数情况下,这太昂贵了。
我只是观察到似乎对能够快速执行并行计算的设备有需求。我想知道为什么最佳的设备似乎是图形处理单元,而不是为此目的而设计的设备。
答案1
这确实是您所有解释的结合。更便宜、更简单的设计已经存在,而且设计已经不再是纯图形设计。
现代 GPU 主要可以视为流处理器带有一些额外的图形硬件(和一些固定功能加速器,例如用于编码和解码视频)。通用图形处理器如今的编程使用专门为此目的设计的 API(OpenCL、Nvidia CUDA、AMD APP)。
在过去的十年或二十年里,GPU 已经从固定功能管道(几乎仅限于图形)发展到可编程管道(着色器让您编写自定义指令)到更现代的 API(如 OpenCL),这些 API 可直接访问着色器核心,而无需附带的图形管道。
其余图形位微不足道。它们只是显卡成本的一小部分,因此省去它们并不会节省太多成本,而且还需要额外设计。因此通常不会这样做——大多数 GPU 都没有面向计算的等效产品——除非是最高级别的产品,而这些产品非常昂贵。
普通“游戏”GPU 非常常用,因为规模经济和相对简单性使它们价格低廉且易于入门。从图形编程到使用 GPGPU 加速其他程序是一条相当简单的途径。与其他选项不同,随着更新、更快的产品的出现,升级硬件也很容易。
基本上,选择归结为:
- 通用 CPU,非常适合分支和顺序代码
- 普通“游戏” GPU
- 面向计算的 GPU,例如英伟达特斯拉和Radeon Instinct 这些通常根本不支持图形输出,因此 GPU 有点用词不当。但是,它们确实使用与普通 GPU 类似的 GPU 核心,并且 OpenCL/CUDA/APP 代码或多或少可以直接移植。
- FPGA 使用非常不同的编程模型,而且价格非常昂贵。这是进入该领域的一大障碍。根据工作负载的不同,FPGA 也不一定比 GPU 快。
- ASIC,定制设计的电路(硬件)。这种方案非常昂贵,只有在规模极大(至少是数千个单元)的情况下才值得,而且你确定程序永远不需要更改。它们在现实世界中很少可行。每次技术进步时,你还必须重新设计和测试整个方案——你不能像 CPU 和 GPU 那样直接换上新处理器。
答案2
我最喜欢的比喻:
- 中央处理器:博学天才。可以同时做一两件事,但这些事情可能非常复杂。
- 图形处理器:大量低技能工人。他们每个人都无法解决大问题,但大量工人可以完成很多工作。对于您的问题,是的,确实存在一些图形开销,但我相信这是微不足道的。
- 专用集成电路/现场可编程门阵列:一家公司。你可以雇佣一大堆低技能工人,或者几个天才,或者低技能工人和天才的组合。
使用哪种方法取决于成本敏感度、任务可并行化的程度以及其他因素。根据市场情况,GPU 是大多数高度并行应用程序的最佳选择,而当功率和单位成本是主要考虑因素时,CPU 是最佳选择。
直接回答你的问题:为什么选择 GPU 而不是 ASIC/FPGA?一般来说,成本问题。即使如今 GPU 价格飞涨,使用 GPU 仍然(通常)比设计满足你需求的 ASIC 更便宜。正如 @user912264 指出的那样,有些特定任务对 ASIC/FPGA 很有用。如果你有一项独特的任务,并且你将从规模中受益,那么设计 ASIC/FPGA 是值得的。事实上,你可以专门为此目的设计/购买/授权 FPGA 设计。例如,这样做是为了为高清电视中的像素供电。
答案3
你的类比很糟糕。在这个类比中,当你为一家大型草坪护理公司购买设备时,你认为有好的割草机可用。但在计算领域情况并非如此 - GPU 是现成的最佳工具。
专用芯片的研发成本和可能的性能提升可能太高,不值得制造一个。
话虽如此,我知道 Nvidia 推出了一些专门用于通用计算的 GPU - 它们没有视频输出 - 有点像出售已经拆除笼子的盒式风扇。
答案4
你在类比中所描述的正是发生的事情。就在你拿起风扇并磨利叶片试图将其用作割草机时,一组研究人员意识到“嘿,我们这里有一些非常不错的多核处理单元,让我们尝试将其用于通用计算!”。
结果很好,一切开始顺利进行。GPU 从纯图形设备转变为支持通用计算的设备,以应对最苛刻的情况。
因为无论如何,我们期望计算机执行的计算要求最高的操作是图形。只需看看如今的游戏与几年前相比的惊人进步就足够了。这意味着大量的精力和金钱投入到了 GPU 的开发中,而且它们还可以用于加速某一类通用计算(即高度并行),这一事实增加了它们的受欢迎程度。
因此,总而言之,您提供的第一个解释是最准确的:
- 当 GPU 已经是一个不错的选择时,开发这种替代方案的成本太高了。
GPU 已经存在,每个人都可以随时使用,而且它们可以发挥作用。