CPU与GPU区别对比

Blog
Author:
Guy GolanGuy Golan
Published On:
9月 2, 2021
Estimated reading time:
1 minute

有所区别,因此归属两类。CPU 大都用于传统的桌面进程处理,而 GPU 在其他领域的应用越来越多。本文将分析其中的几个领域,同时对比 CPU GPU 的主要区别。

为什么需要两种不同类型的处理器?

每个人都多少了解 CPU。CPU 被称为计算机的“大脑”,由数百万个多“内核”微型晶体管组成,是支撑计算机核心处理功能的关键。没有 CPU 的支持,操作系统和应用程序则无法运行操作。此外,CPU 也是计算机总体运行速度的决定性因素。

从根本上来说,GPU 更加专业化。其设计初衷是用于 3D 渲染,GPU 可以并行执行更多进程。因此, GPU 非常适用于图形密集型程序开发,这些程序需要为游戏呈现大量动态内容,或压缩/解压流媒体视频。除了渲染和图像处理,GPU 还被用于许多其他领域,如人工智能比特币挖掘

CPU 和 GPU 之间的主要区别,在于如何处理指令。以人为比喻,CPU 是只能一次处理一个任务的人,而 GPU 可以同时处理多个任务。有些人喜欢一板一眼按顺序做事,不过也有人可以同一时间做很多事。

CPU 接收一组数据,并按顺序进行处理,一切都井然有序。GPU 则将数据分布于多进程单元,这些单元正是针对特定任务设计的。这种将工作负载分发并行的高效方法,也是 GPU 能帮助减轻任务负担的主要原因。

为了展示 CPU GPU 的差异,NVIDIA 请来了一对极客组合的帮助,这对极客组合共同展示了备受欢迎的“MythBusters”系列演讲。Adam Savage 和 Jamie Hyneman 结合了机械学和漆弹技术,对一个著名的艺术品进行了复制。视频“MythBusters Demo GPU versus CPU”展示了如何使用 CPU GPU 方法进行有趣的娱乐活动。

视频

正如大家预期,首先展示的是 CPU 功能,视频中呈现了一个缓慢但准确的连续喷漆射击,最终得到了一个笑脸图。速度地提升,体现了快速射击的能力,但这种速度与接下来的展示还是大为不同。

Leonardo 2.0 是 MythBusters 的杰作,它呈现的是 GPU 的功能,执行并行进程。因此,他们可以复制更复杂细致的艺术作品,具体一点,《蒙娜丽莎》画作。借助倒计时和一个闪亮的按钮,这台机器差不多算是瞬间完成创作。尽管看起来像是瞬间完成的,但如果进行慢动作回放,我们可以看到创作过程的顺序。

CPU GPU 的共生关系

CPU-vs-GPU_symbiosis.

GPU 和 CPU 之间的区别,并不代表其中一个胜于另一个,确切来说,这两者都在行业中有着特定的应用领域。如果没有GPU 提高进程速度,我们很难去渲染高度精细的 3D 图形。另一方面,我们也不会使用图形处理器去应付数据库服务器、web浏览器和 office 应用程序所需的计算能力。

GPU 的计算,也可以使用 CPU 执行。然而,硬件制造商认识到,将一些更常见的多媒体任务转移给 GPU,可以减轻 CPU 的负担并提高性能。因此,CPU  和 GPU 的协调平衡,有助于提升整体性能。

GPU 也并不能取代 CPU:CPU 仍然是计算硬件的主流处理器,CPU 负责分配数据,决定将其传递给 GPU 还是自己处理。

例如,尽管 CPU 也可以执行重复的计算,但使用 GPU 的原因在于其设计方式。GPU 中有多条可重复使用的指令,这些指令专为运行并行进程设计。

当程序员使用各种编程例程来利用GPU时,就会发生交互。数据传输发生在“总线层面”时,有效负载和返回的结果将快速交换。今天,程序员需要确定将哪些处理任务传递给 GPU 更好。然而,“自动”推送到 GPU 的想法也在不断发展(详见这篇文章以及这一篇),不过,目前这一切都还停留在学术层面。

GPU 的高级使用方式

在当今程序开发行业,GPU 的使用方式不断突破。它不仅仅适用于视频游戏的图形渲染等工作负载,还可以用于尖端技术发展,例如在人工智能领域,GPU 可用于人工智能程序的建模,这些程序可以进行情绪分析、金融预测和图像处理等操作。

在人工智能领域,GPU 提供了一种更具可扩展性的深度学习方法,这需要处理大量数据,这些数据可以使用 GPU 进行高效处理。GPU 对复杂数据的高效处理,使其成为首选处理器。

更多关于在深度学习领域中 CPU和GPU的功能对比,请参见基准测试这篇文章

NVIDIA 是一家领先的图形硬件制造商。它们提供 HPC SDK,因此开发者可以利用一个或多个 GPU CPU 进行并行处理。此外,开发者还可以使用CUDA 工具包,在程序开发中并行进程。

对于那些寻找平台,并准备开始使用 NVIDIA 的GPU的入门用户来说,有很多信息可帮助你们快速入门。如果有合适的工具,实现进程并行化就会变得很简单。NVIDIA 为 Windows Linux 提供 CUDA,而且这两个版本都是免费的,容易安装。更多关于 CUDA 的知识,以及如何在 C、C++ 和 Fortran 环境下使用,请阅读链接文章

有关使用 NVIDIA GPU进行深度学习的示例,请参阅https://developer.nvidia.com/deep-learning-examples

实践才是关键

在理论上讨论 CPU GPU是一回事,在实践中可能又是另外一回事。有两个成功案例可供大家参考,这些公司采取了简单直接的改善策略,现在,他们已经享受到了 C++/CUDA 的所有优势性能。这些公司选择与 Incredibuild 合作,解决了CI/CD 开发能力的问题。

MEDIAPRO 借助 CUDA 提升效率

MEDIAPRO 为体育赛事组织树立了一个良好的榜样,尤其是只有小规模的视频制作团队时。MEDIAPRO 的产品 AutomaticTV 引领AV集团的供应链,使用人工智能进行专业视频制作。但这种大规模的任务,需要进行高效编译。否则,开发者可能会因漫长的编译时间而懈怠懒散,无法及时展开下一项任务。

MEDIAPRO 当前的工作流程不支持他们需要的内容,分支之间切换复杂,开发者难以集中注意力,依赖关系管理效率低下,时间不足。因此,MEDIAPRO 与 CUDA 的结合,挑战重重。所幸,Incredibuild 的解决方案发挥功效,协助 MEDIAPRO NVIDIA 的合作。

阅读链接内容,了解如何在 C++/CUDA 程序开发的机器中简单安装Incredibuild,即可将编译时间减少85%。

GeoTeric®  提升质量和速度

GeoTeric® 在节省编译时间上有一定的经验。他们的桌面程序需要成千上万的 C++ 文件和数百万行代码。这个程序主要显示用于三维建模的地质元素。尽管这个应用程序已经有如此高端的技术支持,他们也还是很难应用当今最好的高效编译实践。其敏捷开发,包含自动化测试,也因缓慢的构建而受阻。

最后,GeoTeric® 选择将 Incredibuild 纳入其工作流程,因此,CUDA 特定编译的时间从 15 分钟减少到 3 分钟,总体编译时间从可怕的 2 小时骤降到 11 分钟。可以想象,编译性能的提高最终帮助他们实现了开发速度的质变。

点击链接,了解 GeoTeric® 如何停止手动测试,以及缩短构建和交付时间。

Whitepaper download