首页 > 其他分享 >五年经验的前端社招被问:CPU 和 GPU 到底有啥区别?

五年经验的前端社招被问:CPU 和 GPU 到底有啥区别?

时间:2022-12-13 14:26:05浏览次数:32  
标签:社招 访问 缓存 内核 计算 GPU CPU

首先来看 CPU 和 GPU 的百科解释:

  • CPU(Central ProcessingUnit,中央处理器):功能主要是解释计算机指令以及处理计算机软件中的数据

    图 1-1 CPU 示意图

  • GPU(Graphics ProcessingUnit,图形处理器;又称显示核心、显卡、视觉处理器、显示芯片或绘图芯片):GPU 不同于传统的 CPU,如Intel i5 或 i7 处理器,其内核数量较少,专为通用计算而设计。相反,GPU是一种特殊类型的处理器,具有数百或数千个内核,经过优化,可并行运行大量计算。虽然 GPU 在游戏中以 3D 渲染而闻名,但它们对运行分析、深度学习和机器学习算法尤其有用。GPU 允许某些计算比传统 CPU 上运行相同的计算速度快 10 倍至 100 倍。

    图 1- 2 GeForce 6600GT(NV43)GPU 图片

CPU 和 GPU 之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景:

  • CPU 需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得 CPU 的内部结构异常复杂
  • 而 GPU 面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境

于是 CPU 和 GPU 就呈现出非常不同的架构(如下图 1-3 所示,图片来源 Nvidia),其中 GPU 部分的绿色是计算单元(ALU),橙红色是存储单元(Cache),橙黄色是控制单元(Control),DRAM 代表内存:

图 1-3 CPU 和 GPU 的架构

由上图 1-3 可以看出:GPU 采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了 Cache。而 CPU 不仅被 Cache 占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是 CPU 很小的一部分。

由此我们引出 CPU 和 GPU 的设计目标:

1)CPU 是基于低延迟(Low Latency)的设计,内核数量较少

  • Powerful ALU(强大的算术运算单元):它可以在很少的时钟周期内完成算术计算;
  • Large Caches(大的缓存):将部分数据保存在缓存中,使得长延迟的内存访问转换称短延迟的缓存访问;
  • Sophisticated Control(复杂的逻辑控制单元):当程序含有多个分支的时候,它通过提供分支预测的能力来降低分支延时;并且,当一些指令依赖前面的指令结果时,它通过提供尽可能快的数据转发的能力来减少数据延迟。

2)GPU 是基于大吞吐量(Big Throughput)的设计,内核数量较多

  • Small Caches(小的缓存):GPU 中缓存的目的不是保存后面需要访问的数据的,这点和 CPU 不同,而是为 Thread 提供服务的。如果有很多线程需要访问同一个相同的数据,缓存会合并这些访问,然后再去访问内存。但是由于需要访问内存,自然会带来延时的问题;

    批量读取/访问,一个非常常见的提升吞吐量的设计,比如 Kafka 中就用到了类似思想

  • Simple Control(简单的逻辑控制单元):把多个的访问合并成少的访问;

  • Energy efficient ALUs(大量的算术运算单元):如上所述,GPU 虽然有内存延时,却有非常多的 ALU 并支持非常多的 Thread,因此,可以充分利用 ALU 尽可能多地分配线程从而达到非常大的吞吐量。

总结来说,作为强大的执行引擎,CPU 将它数量相对较少的内核集中用于处理单个任务,并快速将其完成。这使它尤其适合用于处理逻辑控制、串行计算、数据库运行等类型的工作。

相比之下,GPU 由数百个内核组成,可以同时处理数千个线程,所以与 CPU 擅长、串行的运算和通用类型数据运算不同,GPU 擅长的是大规模并发计算,将复杂的问题分解成数千或数百万个独立的任务,并一次性解决它们,比如图像处理任务,包括纹理、灯光和形状渲染等子任务都必须同时完成,以保持图像在屏幕上快速呈现,除此之外,GPU 还被大量应用于深度学习、密码破解等任务中。

表 1.1 CPU 和 GPU 的区别

CPU GPU
Several cores Many cores
Low latency High throughput
Good for serial processing Good for parallel processing
Can do a handful of operations at once Can do thousands of operations at once

下面用一个通俗的例子来做个比喻:

注意只是比喻,可能不会太恰当,主要是帮助理解

假设我们需要做一道鸡兔同笼的小学奥数题(来源 1500 年前的《孙子算经》):

  • 今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?

计算题目,理解题目并且整理出解题的步骤以及解法,这是 CPU 干的事情,于是 CPU 给出了类似下面的二元一次方程:

解题的过程需要用到的众多计算,则需要一帮不需要很高逻辑理解力的计算者完成,他们只需要负责其中很简单但是数量又很大的简单运算就行了,最后他们把各自运算的结果交出来给 CPU 整理,那么这群计算者就是 GPU。

简单来说就是:

  • CPU 力气大啥事都能干,还要协调手下各类小弟;
  • GPU 就是 CPU 的其中一个小弟,老大分配给给他处理图形或者并行计算等任务,这方面处理简单,但是量大,老大虽然能处理,可是精力有限(指 CPU 内核数量较少),所以不如交给小弟处理了,小弟精力旺盛(指 GPU 拥有大量内核),而且专门干这行,非常有经验,干起活儿来贼快。

本文首发于公众号@飞天小牛肉,阿里云 & InfoQ 签约作者,分享大厂面试原创题解和个人成长经验,觉得有用的小伙伴点点关注呀~

标签:社招,访问,缓存,内核,计算,GPU,CPU
From: https://www.cnblogs.com/cswiki/p/16978619.html

相关文章

  • 深度学习GPU加速配置方法
    深度学习GPU加速配置方法一、英伟达官方驱动及工具安装首先检查自己的电脑驱动版本,未更新至最新建议先将驱动更新至最新,然后点击Nvidia控制面板2.在如下界面中点击系......
  • linux挖矿进程CPU占用率被隐藏案例——核心还是hook 了 readdir 和 readdir64 两个函
    其他类似文章见:https://www.cnblogs.com/reachos/p/13129155.html1.找出cpu高的程序,top找不到的话,用下面命令ps-aux--sort=-pcpu|head-102.杀掉相关进程kill-9p......
  • linux挖矿进程,隐藏CPU——用top、ps等命令却一直找不到是哪个进程在占用,todo,待深入
    急死!CPU被挖矿了,却找不到哪个进程!原文:https://www.jianshu.com/p/5fb1e3307c6a 从这里看应该和windowshook隐藏cpu类似:https://www.jianshu.com/p/87ce68417cdb==》......
  • 万恶的环境2——安装的torch版本是cpu版本如何改为GPU版本
    万恶的环境2——安装的torch版本是cpu版本如何改为GPU版本目录万恶的环境2——安装的torch版本是cpu版本如何改为GPU版本感谢参考的链接1报错2检查3结果与问题——tor......
  • 线上cpu窜高到180%,吓死我了
    一到公司,同事给我说接口响应超时,很多接口响应速度非常慢。我本地看了超时的接口也只是464ms就响应了隔两分钟的距离还差很远呢。linux上我使用curl命令查看超时的接口明......
  • Python安装TensorFlow-GPU
    选择TensorFlow版本(重要)验证TensorFlow-gpu安装成功安装遇到的问题参考TOC本文主要介绍windows下基于Miniconda下的GPU版本的TensorFlow安装过程以及安装过程中遇到的问......
  • Python安装Pytorch-GPU
    选择Pytorch版本(重要)验证pytorch安装是否成功安装遇到的问题参考TOC本文主要介绍windows下基于Miniconda下的GPU版本的Pytorch安装过程以及安装过程中遇到的问题,本文假......
  • linux 监控网络IO、磁盘、CPU、内存
    linux监控网络IO、磁盘、CPU、内存CPU:vmstat,sar–u,top磁盘IO:iostat–xd,sar–d,top网络IO:iftop-n,ifstat,dstat–nt,sar-nDEV23磁盘容量:df–h内存使用:free–m,top......
  • Zabbix监控Linux系统CPU、内存、硬盘使用率
    监控内存使用率1.点击配置---模板---搜索选择使用中的模板---点击监控项---创建监控项键值:vm.memory.size[pused]监控CPU使用率1.创建监控项;点击配置---......
  • GPU CPU向量加法时间测试
    GPUCPU向量加法时间测试实验设备系统:WSLUbuntu18.04实验思路分别在GPU,CPU上测试两个一维向量的加法,CPU是一个个的串行计算相加,GPU可以通过并行的方式将对应位置的元......