为什么我们仍在使用CPU而不是GPU?

越来越多的GPU被用于非图形任务,如风险计算,流体动力学计算和地震分析。 什么是阻止我们采用GPU驱动的设备?

今天的问答环节由我们感谢SuperUser - Stack Exchange的一个分支,这是一个社区驱动的Q&A网站分组。

问题

超级用户阅读器Ell跟上科技新闻,很好奇为什么我们不使用更多的基于GPU的系统:

在我看来,这些天,大量的计算都是在GPU上完成的。 显然,图形是在那里做的,但使用CUDA等,AI,散列算法(认为比特币)和其他也在GPU上完成。 为什么我们不能只是摆脱CPU和使用GPU自己的? 什么使GPU比CPU快得多?

为什么呢? 什么使CPU独特?

答案

SuperUser贡献者DragonLord提供了良好支持的GPU和CPU之间的差异概述:

TL; DR答案:图形芯片具有比CPU的远更多个处理器核心,但由于每个GPU内核运行比一个CPU核心显著慢,不具备所需要的现代操作系统的功能,它们不适合于日常执行大部分的处理计算。 它们最适合于计算密集型操作,如视频处理和物理模拟。

详细的答案是: GPGPU仍然是一个比较新的概念。 GPU最初用于渲染图形; 随着技术的进步,通过开发用于GPU的计算能力来利用GPU中相对于CPU的大量核,使得它们可以同时处理许多并行数据流,而不管该数据是什么。 而图形处理器可具有数百甚至数千流处理器的,它们各自的运行速度比在CPU核心较慢并且具有较少的功能(即使它们图灵完整 ,并且可以被编程以运行一CPU可以运行任何程序)。 GPU缺少的特性包括实现现代操作系统所需的中断和虚拟内存。

换句话说,CPU和GPU具有显着不同的架构,使它们更适合于不同的任务。 GPU可以处理许多流中的大量数据,对它们执行相对简单的操作,但是不适合于对单个或少数数据流的繁重或复杂的处理。 CPU在每个核的基础上(根据每秒的指令)快得多,并且可以更容易地对单个或少数数据流执行复杂操作,但是不能同时有效地处理许多流。

因此,GPU不适合处理不显着受益于或不能并行化的任务,包括许多常见的消费者应用程序,例如字处理程序。 此外,GPU使用基本不同的架构; 人们将必须专门为GPU编程应用以使其工作,并且需要显着不同的技术来编程GPU。 这些不同的技术包括新的编程语言,对现有语言的修改以及更好地适于将计算表达为由许多流处理器执行的并行操作的新的编程范例。 有关编程的GPU,请参见维基百科文章所需要的技术的详细信息流处理并行计算

现代GPU能够执行向量操作和浮点运算,最新的卡能够操作双精度浮点数。 诸如CUDA和OpenCL的框架使得能够针对GPU编写程序,并且GPU的性质使得它们最适合于高度并行化操作,例如在科学计算中,其中一系列专用GPU计算卡可以是小型计算集群作为NVIDIA Tesla个人超级计算机 与现代GPU消费者谁是有经验的的Folding @ Home可以使用他们贡献GPU的客户 ,可在非常高的速度进行蛋白质折叠模拟,贡献更多的工作项目(一定要阅读常见问题解答第一个,特别是有关GPU)。 GPU还可以在使用PhysX的视频游戏中实现更好的物理仿真,加速视频编码和解码,以及执行其他计算密集型任务。 GPU是最适合执行的这些类型的任务。

AMD公司正在开拓那叫一个处理器设计加速处理单元(APU),它结合了传统的x86 CPU核心与GPU的。 这可以允许CPU和GPU组件一起工作,并在单独组件的空间有限的系统上提高性能。 随着技术的不断进步,我们将看到这些曾经独立的部分越来越趋同。 然而,由PC操作系统和应用执行的许多任务仍然更好地适合于CPU,并且需要许多工作来加速使用GPU的程序。 由于这么多现有软件使用x86架构,并且由于GPU需要不同的编程技术并且缺少操作系统所需的几个重要特性,因此从CPU到GPU的用于日常计算的一般转换是非常困难的。


有什么东西添加到解释? 声音在评论中。 想要阅读更多的技术精明的Stack Exchange用户的答案? 这里查看完整的话题

赞 (0)
分享到:更多 ()