在我看来,这些天来,很多计算都是在GPU上完成的。显然,图形是在此处完成的,但是使用CUDA等工具,AI,哈希算法(认为是比特币)等也可以在GPU上完成。为什么我们不能仅仅放弃CPU并单独使用GPU?是什么使GPU比CPU快得多?
TL; DR回答: GPU比CPU具有更多的处理器内核,但是由于每个GPU内核的运行速度都比CPU内核慢得多,并且不具有现代操作系统所需的功能,因此它们不适合每天执行大多数处理计算。它们最适合计算密集型操作,例如视频处理和物理模拟。
GPGPU仍然是一个相对较新的概念。GPU最初仅用于渲染图形。随着技术的进步,GPU相对于CPU的大量内核被用于开发GPU的计算能力,从而使它们可以同时处理许多并行数据流,而不管这些数据可能是什么。尽管GPU可以具有数百甚至数千个流处理器,但它们的运行速度都比CPU内核慢,并且具有较少的功能(即使它们的Turing完整并且可以被编程为运行CPU可以运行的任何程序)。GPU缺少的功能包括中断和虚拟内存,这是实现现代操作系统所必需的。
换句话说,CPU和GPU具有明显不同的体系结构,使其更适合于不同的任务。GPU可以处理许多流中的大量数据,对其执行相对简单的操作,但不适用于对单个或几个数据流进行繁重或复杂的处理。CPU在每个核的基础上(以每秒的指令数计算)要快得多,并且可以更轻松地对单个或几个数据流执行复杂的操作,但不能同时有效地处理多个流。
结果,GPU不适合处理无法从中受益或无法并行化的任务,包括许多常见的消费类应用程序,例如文字处理器。此外,GPU使用根本不同的架构。人们必须为GPU编写专门的应用程序才能正常工作,并且对GPU进行编程需要采用截然不同的技术。这些不同的技术包括新的编程语言,对现有语言的修改以及新的编程范例,它们更适合于将计算表示为要由许多流处理器执行的并行操作。有关编程GPU所需技术的更多信息,请参阅Wikipedia上有关流处理和并行计算的文章。
现代GPU能够执行矢量运算和浮点运算,而最新的显卡则能够处理双精度浮点数。诸如CUDA和OpenCL之类的框架使程序能够为GPU编写,并且GPU的性质使它们最适合于高度可并行化的操作,例如科学计算中,在该计算中,一系列专用的GPU计算卡可以替代小型的GPU。计算群集,如NVIDIA Tesla个人超级计算机中的。拥有Folding @ home经验的拥有现代GPU的消费者可以使用它们为GPU客户端做出贡献,GPU客户端可以以非常高的速度执行蛋白质折叠模拟并为项目做出更多的贡献(请务必阅读FAQs)。首先,尤其是与GPU相关的内容)。GPU还可以使用PhysX在视频游戏中实现更好的物理模拟,加速视频编码和解码,并执行其他计算密集型任务。GPU最适合执行这些类型的任务。
AMD率先推出了称为加速处理单元(APU)的处理器设计,该处理器将传统的x86 CPU内核与GPU结合在一起。这种方法使图形性能大大优于主板集成的图形解决方案(尽管无法与更昂贵的分立GPU匹敌),并允许紧凑,低成本的系统,并具有良好的多媒体性能,而无需单独的GPU。最新的英特尔处理器还提供了片上集成图形,尽管竞争性集成GPU性能目前仅限于使用Intel Iris Pro Graphics的少数芯片。随着技术的不断进步,我们将看到这些曾经分离的零件的融合程度越来越高。AMD的构想未来,CPU和GPU可以集成在一起,能够无缝地完成同一任务。
尽管如此,由PC操作系统和应用程序执行的许多任务仍然更适合CPU,并且需要大量工作来使用GPU加速程序。由于许多现有软件都使用x86架构,并且由于GPU需要不同的编程技术并且缺少操作系统所需的几个重要功能,因此日常计算从CPU到GPU的一般过渡非常困难。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句