CPU,GPU,GPGPU

CPUGPU,GPGPU

1.基本概念

1.1  GPU

图形处理器(bai英语:Graphics Processing Unit,缩写:GPU),又称显示核心、视觉du处理器、zhi显示芯片,是一种专门在个人电脑、工dao作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。

1.2  CPU

中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。

1.3  GPGPU

GPGPU全称General Purpose GPU,即通用计算图形处理器。其中第一个“GP”通用目的(GeneralPurpose)而第二个“GP”则表示图形处理(GraphicProcess),这两个“GP”搭配起来即“通用图形处理”。再加上“U”(Unit)就成为了完整的通用处理器。 人们一直在寻找各种加速图像处理的方法,然而受到CPU本身在浮点计算能力上的限制,对于那些需要高密度计算的图像处理操作,过去传统的在CPU上实现的方法,并没有在处理性能与效率上有很大进步。随着可编程图形处理器单元(GPU)在性能上的飞速发展,利用GPU加速图像处理的技术逐渐成为研究热点。

GPGPU,带baiCPU处理能力的GPU。主要是GPU的工作,GPU的能力,可以有协助duCPU的运zhi算的能力,(通用图形处理)超出daoGPU的能力范围,甚至完全具备通用的数据处理。能否成为CPU看是否放在主板上。GPU,用于图形处理的芯片。(GPU也是一种CPU,,相对于显卡)早期显卡是没有专门用做图形处理的GPU的,不支持3D。CPU,用于数据处理的芯片(图形也可以认为是数据)。中央处理器,一种相对的概念。潜移默化被认定是放在主板上的那颗东西,通过向GPU传送指令,控制GPU。其实也就是一种微处理器。AMD-APU,加速处理器。集成GPU核心的CPU,并且融合。不同于Intel I系智能(GPU CPU独立工作)。

2. 基本原理

2.1 中央处理器(CPU

中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。
中央处理器主要包括运算器(算术逻辑运算单元,ALU,Arithmetic Logic Unit)和高速缓冲存储器Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。它与内部存储器Memory)和输入/输出(I/O)设备合称为电子计算机三大核心部件。

CPU的结构主要包括运算器ALU, Arithmetic and Logic Unit)、控制单元CU, Control Unit)、寄存器Register)、高速缓存器Cache)和它们之间通讯的数据、控制及状态的总线

简单来说就是:计算单元、控制单元和存储单元,架构如下图所示:

CPU微架构示意图

换种表示方法:

CPU微架构示意图(改)

从字面上我们也很好理解,计算单元主要执行算术运算、移位等操作以及地址运算和转换存储单元主要用于保存运算中产生的数据以及指令等控制单元则对指令译码,并且发出为完成每条指令所要执行的各个操作的控制信号

所以一条指令在CPU中执行的过程是这样的:读取到指令后,通过指令总线送到控制器(黄色区域)中进行译码,并发出相应的操作控制信号;然后运算器(绿色区域)按照操作指令对数据进行计算,并通过数据总线将得到的数据存入数据缓存器(大块橙色区域)。过程如下图所示:

CPU遵循的是冯诺依曼架构,其核心就是:存储程序,顺序执行

讲到这里,有没有看出问题,没错——在这个结构图中,负责计算的绿色区域占的面积似乎太小了,而橙色区域的缓存Cache和黄色区域的控制单元占据了大量空间。

高中化学有句老生常谈的话叫:结构决定性质,放在这里也非常适用。

因为CPU的架构中需要大量的空间去放置存储单元(橙色部分)和控制单元(黄色部分),相比之下计算单元(绿色部分)只占据了很小的一部分,所以它在大规模并行计算能力上极受限制,而更擅长于逻辑控制。

另外,因为遵循冯诺依曼架构(存储程序,顺序执行),CPU就像是个一板一眼的管家,人们吩咐的事情它总是一步一步来做。但是随着人们对更大规模与更快处理速度的需求的增加,这位管家渐渐变得有些力不从心。

于是,大家就想,能不能把多个处理器放在同一块芯片上,让它们一起来做事,这样效率不就提高了吗?

没错,GPU便由此诞生了。

2.2 显卡

显卡(Video cardGraphics card全称显示接口卡,又称显示适配器,是计算机最基本配置、最重要的配件之一。显卡作为电脑主机里的一个重要组成部分,是电脑进行数模信号转换的设备,承担输出显示图形的任务。显卡接在电脑主板上,它将电脑的数字信号转换成模拟信号让显示器显示出来,同时显卡还是有图像处理能力,可协助CPU工作,提高整体的运行速度。对于从事专业图形设计的人来说显卡非常重要。 民用和军用显卡图形芯片供应商主要包括AMD(超微半导体)Nvidia(英伟达)2家。现在的top500计算机,都包含显卡计算核心。在科学计算中,显卡被称为显示加速卡

为什么GPU特别擅长处理图像数据呢?这是因为图像上的每一个像素点都有被处理的需要,而且每个像素点处理的过程和方式都十分相似,也就成了GPU的天然温床。

从架构图我们就能很明显的看出,GPU的构成相对简单,有数量众多的计算单元和超长的流水线,特别适合处理大量的类型统一的数据。

再把CPU和GPU两者放在一张图上看下对比,就非常一目了然了。

GPU的工作大部分都计算量大,但没什么技术含量,而且要重复很多很多次。

GPU无法单独工作,必须由CPU进行控制调用才能工作。CPU可单独作用,处理复杂的逻辑运算和不同的数据类型,但当需要大量的处理类型统一的数据时,则可调用GPU进行并行计算。

借用知乎上某大佬的说法,就像你有个工作需要计算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分,反正这些计算也没什么技术含量,纯粹体力活而已;而CPU就像老教授,积分微分都会算,就是工资高,一个老教授资顶二十个小学生,你要是富士康你雇哪个?

注:GPU中有很多的运算器ALU和很少的缓存cache,缓存的目的不是保存后面需要访问的数据的,这点和CPU不同,而是为线程thread提高服务的。如果有很多线程需要访问同一个相同的数据,缓存会合并这些访问,然后再去访问dram。

2.3 内存

内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。 内存是由内存芯片、电路板、金手指等部分组成的。

2. 4 显存

显存,也被叫做帧缓存,它的作用是用来存储显卡芯片处理过或者即将提取的渲染数据。如同计算机的内存一样,显存是用来存储要处理的图形信息的部件。

2.5  显卡、显卡驱动、CUDA之间的关系

显卡:(GPU)主流是NVIDIA的GPU,深度学习本身需要大量计算。GPU的并行计算能力,在过去几年里恰当地满足了深度学习的需求。AMD的GPU基本没有什么支持,可以不用考虑。

驱动:没有显卡驱动,就不能识别GPU硬件,不能调用其计算资源。但是呢,NVIDIA在Linux上的驱动安装特别麻烦,尤其对于新手简直就是噩梦。得屏蔽第三方显卡驱动。下面会给出教程。

CUDA:是NVIDIA推出的只能用于自家GPU的并行计算框架。只有安装这个框架才能够进行复杂的并行计算。主流的深度学习框架也都是基于CUDA进行GPU并行加速的,几乎无一例外。还有一个叫做cudnn,是针对深度卷积神经网络的加速库。

 

 

posted @ 2020-06-12 13:05  吴建明wujianming  阅读(4886)  评论(0编辑  收藏  举报