关于CPU和GPU有几个形象的比喻。
1.CPU是高级轿跑,而GPU是重型卡车。轿车能够快速装载搬运货物,但是每次只能装载2个包裹,而卡车虽然装载速度慢,但是每次可以装载搬运100个包裹的货物。
2.CPU是指挥部,每个核是一个将军,除了需要指挥军队完成调度这种劳神费心的工作外,如果让它杀敌,它也只能一个一个杀,杀死1w敌军不得把将军累死了?而GPU是军队,只负责杀敌,1w个士兵杀1w个敌军,一对一,不分分钟的事?
日常使用的笔记本(包含CPU和GPU)
CPU与GPU相伴而行。目前我们购买的笔记本,基本都同时拥有CPU(Central Processing Unit,中央处理器)与GPU(Graphics Processing Unit,图形处理器),GPU可能存在于独立显卡或者集成显卡。
CPU与GPU有着相似的内部组件。CPU和GPU都是使计算机正常工作的硬件单元。它们都可以看作是计算设备的大脑。两者具有相似的内部组件,包括核心、内存和控制单元。但是这些组件的设计和配置在CPU和GPU中有所不同,使二者适用于不同的计算领域。
CPU必不可少,GPU离不开CPU。CPU是服务器的核心计算单元,它负责处理操作系统和应用程序运行所需的各类计算任务。而GPU是一种与CPU类似,但更专业化的硬件组件。与普通CPU相比,它可以更高效地并行处理复杂的数学运算。最初的GPU专用于处理游戏和动画中的图形渲染任务,不过2010年之后GPU已广泛应用于人工智能与科学计算。在CPU运行的同时,GPU通过允许应用程序内重复运算的并行化,补充了CPU架构。我们可以将CPU视为整个系统的任务管理器,协调广泛的通用计算任务,而GPU执行更窄范围更专业的计算任务。借助并行化的能力,GPU可以在相同的时间内完成比CPU更多的工作。
CPU和GPU的主要区别
CPU和GPU的主要区别
CPU和GPU的架构区别
CPU和GPU架构的主要区别在于,CPU是设计用来快速处理多种任务(以CPU时钟频率为衡量标准),但同时运行的任务的并发性是受限的。而GPU则设计用于快速渲染高清图像和视频。由于可以对多组数据进行并行操作,GPU也常用于非图形类任务,如机器学习和科学计算。GPU可同时运行成千上万个处理器核心,进行大规模并行计算。
下面举个简单的例子,比如两个长度为5000的数组相加。
int[] a = new int[5000];
int[] b = new int[5000];
int[] c = new int[5000];
for (int i = 0; i < 5000; i++) {
c[i] = a[i] + b[i];
}
我们使用8核CPU计算,那么每个核需要计算5000 / 8 = 625个数,而单个核心的计算是串行的,需要排队,也就是算完一个,再算另一个。假设计算一个数需要1s,那么即使8个核同时运行,也需要625s。这里暂时不考虑支持向量指令的CPU。而由于GPU有成千上万个核,比如使用5000个核同时计算,每个核只需要计算一个数,总共只需要1s!
更形象地说明CPU和GPU的区别,这里提供Nvidia之前的视频。
视频加载中...
其实,用于人工智能的芯片除了CPU、GPU之外,还有半定制化芯片FPGA(Field-Programmable Gate Array,现场可编程门阵列),全定制芯片ASIC(Application Specified Integrated Circuit,专用集成电路)以及类脑芯片。比如寒武纪、地平线、比特大陆自主研发的人工智能芯片基本都属于ASIC。目前人工智能芯片主要分类如下图所示,具体可以在后续的文章中详细介绍。
AI芯片分类