npu算力如何计算_CPU、GPU、NPU、FPGA等芯片架构特点分析

9fe61a0e3786633003c6b3feb5f453e5.gif856aa426a564808fcdabe64bc12c4170.png

来源 | 汽车电子与软件

知圈 | 进“高精度地图社群”,请加微信15221054164,备注地图

概述

随着人工智能的热潮和AI算法的广泛应用,深度学习已成为当前AI研究的重点,在自动驾驶领域,环境感知、传感器融合、控制决策等等都会多少涉及到深度学习,而自动驾驶性能的优劣直接和AI算法相关,说白了就是深度学习算法的优劣。要想在面对海量数据的并行运算的同时做到高效、可靠,那就意味着承载AI算法的计算平台需要提供足够的性能加速,也就是AI芯片的算力要足够用,同时考虑其他因素,功耗还不能超标,能效比越高越好。在AI芯片领域,可供选择的,首先是需要一个CPU或者ARM内核来执行调度处理,然后大量的并行计算靠GPU、FPGA或者ASIC来完成,而ASIC里面有多种架构,谷歌的TPU、地平线BPU、寒武纪和华为都推出的NPU等。

之前看过一篇文章,关于GPU等AI芯片如何处理深度学习的,简单整理一下加深记忆。

CPU和GPU都属于通用芯片,不过GPU在近几年专门针对AI算法加强了并行计算单元,因此除CPU外,GPU、NPU、FPGA等芯片作为AI算法的硬件加速器在不同的应用场景和深度学习算法中发挥着各自的优势,且听一一道来。

在自动驾驶算法中,感知算法是作为一切自动驾驶控制处理的基础,环境感知中主要是靠摄像头和激光雷达,而且以摄像头视觉处理居多,因此以摄像头视觉深度学习算法中的人脸识别为例,其基本处理流程及对应功能模块所需的算力需求分布如下:

df3ba3c6f38b462ff29828a22bd6316a.png

视觉算法中,先是摄像头获取图像,然后经过CPU或GPU进行预处理,也就是基本的判断识别和任务分配,然后就需要进行大量的数据计算分析,这时候GPU、NPU或者FPGA等AI芯片开始派上用场。之所以会这样,这就涉及到了作为通用芯片CPU和AI计算芯片GPU等的原理架构方面的区别了。

46afe3e768f7450680e5b72dc374ae3c.png

CPU和GPU的原理/架构对比

CPU(CentralProcessing Unit)中央处理器,是一块超大规模的集成电路,主要逻辑架构包括控制单元Control,运算单元ALU和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。简单说,就是计算单元、控制单元和存储单元。

架构图如下所示:

02242c61cb10e298c9cd681b14bed3e7.png

CPU遵循的是冯·诺依曼架构,其核心是存储程序/数据、串行顺序执行。因此CPU的架构中需要大量的空间去放置存储单元(Cache)和控制单元(Control),相比之下计算单元(ALU)只占据了很小的一部分,所以CPU在进行大规模并行计算方面受到限制,相对而言更擅长于处理逻辑控制。

CPU无法做到大量数据并行计算的能力,但GPU可以。

GPU(GraphicsProcessing Unit),即图形处理器,是一种由大量运算单元组成的大规模并行计算架构,早先由CPU中分出来专门用于处理图像并行计算数据,专为同时处理多重并行计算任务而设计。

GPU中也包含基本的计算单元、控制单元和存储单元,但GPU的架构与CPU有很大不同,其架构图如下所示。

4e39c265e68588b1981ec046339d4c30.png

与CPU相比,CPU芯片空间的不到20%是ALU,而GPU芯片空间的80%以上是ALU。即GPU拥有更多的ALU用于数据并行处理。这就是为什么GPU可以具备强大的并行计算能力的原因。

从硬件架构分析来看,CPU和GPU似乎很像,都有内存、Cache、ALU、CU,都有着很多的核心,但是CPU的核心占比比较重,相对计算单元ALU很少,可以用来处理非常复杂的控制逻辑,预测分支、乱序执行、多级流水任务等等。相对而言GPU的核心就是比较轻,用于优化具有简单控制逻辑的数据并行任务,注重并行程序的吞吐量。

8713220a39f707069ac4459b2679f246.png

简单来说就是CPU的核心擅长完成多重复杂任务,重在逻辑,重在串行程序;GPU的核心擅长完成具有简单的控制逻辑的任务,重在计算,重在并行。

再来看一张NVIDIA公开的关于GPU的架构图

db93ced2fda6081d38be24a5083ffe97.png

9b64831305b7f250642ba4bc1319404e.png

上图NVIDIAGPU拥有4个SM(streaming multiprocessor),每个SM有4*8=32个Core,一共有4*4*8=128个Core。再对比一下CPU的Haswell的Core微架构图,可以看到,其有20多种“执行单元”(ExecutionUnits),如ALU、FMA、FP add和FP mul等。每个“执行单元”用于处理不同的指令以 FP mul“执行单元为例”,一个CPU的Core中有2个,六核心的CPU有12个。所以在执行单元方面,128:12。

(仅做参考,此处GPU的Core并不可以和CPU结构图中的Core对等,它只能相当于CPU微架构中的一个“执行单元”。)

关于CPU和GPU可以比喻成:CPU是一个拥有多种功能的优秀领导者,其的强项在于“调度”而非纯粹的计算;而GPU则可以被看成一个接受CPU调度的“拥有大量计算能力”的员工。

总结GPU具有如下特点:

1)  多线程,提供了多核并行计算的基础结构,且核心数非常多,可以支撑大量数据的并行计算,处理神经网络数据远远高效于CPU。

2)  拥有更高的访存速度。

3)  更高的浮点运算能力。

因此,GPU比CPU更适合深度学习中的大量训练数据、大量矩阵、卷积运算。

GPU虽然在并行计算能力上尽显优势,但并不能单独工作,需要CPU的协同处理,对于神经网络模型的构建和数据流的传递还是在CPU上进行。

但是GPU也有天生缺陷,那就是功耗高,体积大,价格贵。

性能越高的GPU体积越大,功耗越高,价格也昂贵,对于一些小型设备、移动设备来说将无法使用。

因此,一种体积小、功耗低、计算性能高、计算效率高的ASIC专用芯片NPU诞生了。

50f4155e54df4bfe2c974601cf6759fe.png

NPU原理和AI计算优势

NPU (NeuralNetworks Process Units)神经网络处理单元。NPU工作原理是在电路层模拟人类神经元和突触,并且用深度学习指令集直接处理大规模的神经元和突触,一条指令完成一组神经元的处理。相比于CPU和GPU,NPU通过突出权重实现存储和计算一体化,从而提高运行效率。

国内寒武纪是最早研究NPU的企业,并且华为麒麟970曾采用寒武纪的NPU架构,不过从2018年开始华为发布自研昇腾芯片专为达芬奇架构。

NPU是模仿生物神经网络而构建的,CPU、GPU处理器需要用数千条指令完成的神经元处理,NPU只要一条或几条就能完成,因此在深度学习的处理效率方面优势明显。

据说,同等功耗下NPU 的性能是 GPU 的 118 倍。(数据来源网络)

与GPU一样,NPU同样需要CPU的协同处理才能完成特定的任务。

说道这里提一下手机芯片,作为移动端的专用SoC,内部集成了CPU、GPU和NPU。

以麒麟990 5G版为例说明,在CPU方面共有8核心,分别是两颗2.86GHz的A76架构大核,两颗2.36GHz的A76架构中核以及四颗1.95GHz的A55架构小核。在GPU方面,则是采用了16核的Mali-G76 GPU,而在NPU方面,集成2颗大核和一颗小核,采用的是华为自研达芬奇架构的NPU。

b57f2ada716cd25c47304436db21e720.png

其中CPU负责手机应用流畅切换、GPU支持游戏画面快速加载,而NPU(神经网络处理器)就专门负责实现AI运算和AI应用的实现。也就是说CPU是负责计算和整体协调的,而GPU是负责和图像有关的部分,NPU负责和AI有关的部分。其工作流程则是,任何工作都要先通过CPU,CPU再根据这一块的工作的性质来决定分配给谁。如果是图形方面的计算,就会分配给GPU,如果是AI方面的计算需求,就分配给NPU。

本文借用一下华为麒麟官方发布的《看懂芯片原来这么简单》系列漫画介绍华为自研达芬奇架构NPU,相比传统标量、矢量运算模式,华为自研架构NPU采用3D Cube针对矩阵运算做加速,因此,单位时间计算的数据量更大,单位功耗下的AI算力也更强,相对传统的CPU和GPU实现数量级提升,实现更优能效。

9fae73da81cfd265133c8161fa95bbaa.png

由此可以看出,在手机SOC中,CPU是至关重要的部分,同样在自动驾驶行业处理深度学习AI算法方面,GPU和NPU都需要和CPU协同才能发挥其性能优势。

dd59e1389822ef5ac31814f4e815a8e0.png

CPU如何辅助GPU实现加速

GPU当前只是单纯的并行矩阵的乘法和加法运算,对于神经网络模型的构建和数据流的传递还是在CPU上进行。

CPU加载权重数据,按照代码构建神经网络模型,将每层的矩阵运算通过CUDA或OpenCL等类库接口传送到GPU上实现并行计算,输出结果;CPU接着调度下层神经元组矩阵数据计算,直至神经网络输出层计算完成,得到最终结果。

475702b0583a6afc0e12338a7d54d714.png

CPU 与GPU的交互流程:

1)  获取GPU信息,配置GPU id

2)  加载神经元参数到GPU

3)  GPU加速神经网络计算

4)  接收GPU计算结果

22b35dab0bdb4e8ca91b2d68b75a75a4.png

CPU如何辅助NPU实现加速

NPU与GPU加速不同,主要体现为每层神经元计算结果不用输出到主内存,而是按照神经网络的连接传递到下层神经元继续计算,因此其在运算性能和功耗上都有很大的提升。

CPU将编译好的神经网络模型文件和权重文件交由专用芯片加载,完成硬件编程。

62899654ec4ac922c191899026444e32.png

CPU在整个运行过程中,主要是实现数据的加载和业务流程的控制,其交互流程为:

1)  打开NPU专用芯片设备

2)  传入模型文件,得到模型task

3)  获取task的输入输出信息

4)  拷贝输入数据到模型内存中

5)  运行模型,得到输出数据

除NPU外,在功耗及计算能力上有一拼的还有FPGA。

138692d65e3ed14048551b8f849283d6.png

 FPGA原理和AI计算优势

说完了GPU、NPU以及他们的领导CPU,再来看看另一个火热芯片FPGA。

FPGA(Field-Programmable Gate Array)称为现场可编程门阵列,用户可以根据自身的需求进行重复编程。与 CPU、GPU 相比,具有性能高、功耗低、可硬件编程的特点。

FPGA基本原理是在芯片内集成大量的数字电路基本门电路以及存储器,而用户可以通过烧入FPGA 配置文件来定义这些门电路以及存储器之间的连线。这种烧入不是一次性的,可重复编写定义,重复配置。

FPGA的内部结构如下图所示:

8f15c78ae891eeb6379ed187c92b5cd3.png

FPGA的编程逻辑块(Programable Logic Blocks)中包含很多功能单元,由LUT(Look-up Table)、触发器组成。FPGA是直接通过这些门电路来实现用户的算法,没有通过指令系统的翻译,执行效率更高。

对比一下CPU/GPU/NPU/FPGA各自的特点

c8fa6b64137982bf77208e294f01b72a.png

8c2f892b914cb5675ae1e07af53b9130.png

各芯片架构特点总结

CPU

70%晶体管用来构建Cache,还有一部分控制单元,计算单元少,适合逻辑控制运算。

GPU

是单指令、多数据处理,晶体管大部分构建计算单元,运算复杂度低,适合大规模并行计算。主要应用于大数据、后台服务器、图像处理。GPU善于处理图像领域的运算加速。但GPU无法单独工作,必须由CPU进行控制调用才能工作。CPU可单独作用,处理复杂的逻辑运算和不同的数据类型,但当需要大量的处理类型统一的数据时,则可调用GPU进行并行计算。

NPU

NPU在电路层模拟神经元,通过突触权重实现存储和计算一体化,一条指令完成一组神经元的处理,提高运行效率。主要应用于通信领域、大数据、图像处理。NPU作为专用定制芯片ASIC的一种,是为实现特定要求而定制的芯片。除了不能扩展以外,在功耗、可靠性、体积方面都有优势,尤其在高性能、低功耗的移动端。

FPGA

可编程逻辑,计算效率高,更接近底层IO,通过冗余晶体管和连线实现逻辑可编辑。本质上是无指令、无需共享内存,计算效率比CPU、GPU高。主要应用于智能手机、便携式移动设备、汽车。FPGA是用硬件实现软件算法,因此在实现复杂算法方面有一定的难度,缺点是价格比较高。将FPGA和GPU对比发现,一是缺少内存和控制所带来的存储和读取部分,速度更快。二是因为缺少读取的作用,所以功耗低,劣势是运算量并不是很大

CPU作为最通用的部分,协同其他处理器完成着不同的任务。GPU适合深度学习中后台服务器大量数据训练、矩阵卷积运算。NPU、FPGA在性能、面积、功耗等方面有较大优势,能更好的加速神经网络计算。而FPGA的特点在于开发使用硬件描述语言,开发门槛相对GPU、NPU高。

ASIC芯片是全定制芯片,长远看适用于人工智能。现在很多做AI算法的企业也是从这个点切入。因为算法复杂度越强,越需要一套专用的芯片架构与其进行对应,ASIC基于人工智能算法进行定制,其发展前景看好。类脑芯片是人工智能最终的发展模式,但是离产业化还很遥远。

可以说,每种处理器都有它的优势和不足,在不同的应用场景中,需要根据需求权衡利弊,选择合适的芯片。

说明:文章观点仅供分享交流,不代表焉知自动驾驶的立场,转载请注明出处,如涉及版权等问题,请您告知(小老虎13636581676微信同),我们将及时沟通处理。b1fca7f0defc954d130103dc380a1af3.png9dc75fd4e646e6487f458279e8382d60.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Eclipse——恢复的默认窗口设置篇

你可能也会像我一样,时不时不小心把一些窗口关掉了,然后想要改回来的时候,又要疯狂的去设置里把它们一个个的显示出来,大概率的还可能得百度一下,看着英文单词有时候就会烦躁。 直接崩溃: 这里一招教你直…

翻牌游戏如何打乱牌面java_家长专栏提高儿童记忆力的游戏训练

记忆是人脑对过去经验的保持和再现。记忆过程包括三个基本环节,即识记、保持、再认或回忆。识记是识别和记住事物。保持是将已获得的知识或经验巩固与保留在大脑中。再认是指过去经历过的事物再度出现时,能将它指认出来。回忆是指过去经历过的事物不在面…

Leetcode 206. Reverse Linked List

Similar Questions Reverse Linked List II Binary Tree Upside Down Palindrome Linked List思路:链表反转。 解法一:迭代。 添加头节点(推荐):不断将当前元素start插入dummy和dummy.next之间,实现反转。…

java中输出系统时间

老用老忘,乐此不疲 自己给自己写个模板,忘了随时copy也很香,不是吗? 不说废话了,上代码: package java操作的复习;import java.text.SimpleDateFormat; import java.util.Date;public class SystemTime {public sta…

centos redis make 报错_Redis入门安装,你只需要看我写的这篇就行了

今天来写点基础的东西,可能很多初学者不太会装Redis,这篇文章主要是分享一下如何在Linux中安装redis服务。1. Redis的介绍Redis是一种非关系型数据库(NoSQL),NoSQL是以key-value的形式存储,和传统的关系型数据库不一样&#xff0c…

四舍六入五凑偶原则

写物理实验报告遇到的,给自己的记忆存个档,下次遇到不迷路 1 2

axios某一接口失败后不调用_axios 源码系列之如何取消请求

我们在前后端交互的过程中,通常是通过请求接口来实现的,而一个页面中的交互又非常复杂,例如需要多次频繁请求同一个接口,或者在接口还没返回时就要切换路由等。这些都需要对接口请求的时机或者请求接口之后进行处理,避…

函数调用关系图如何画_程序是如何在 CPU 中运行的(二)

笔者能力有限,如果文中出现错误的地方,还请各位朋友能够给我指出来,我将不胜感激,谢谢~ 前言 在上一篇文章中《程序是如何在 CPU 中运行的(一)》笔者讲述了程序中一条一条指令以及一条一条数据是如何在 CPU 中运行的,在本文笔者将以 ARM Cortex M3 的内核为背景分析指令是…

电脑功耗监测_应急监测便携式VOC检测仪色谱分析仪原理解析

对目前越来越多的应急测试要求,应急监测便携式VOC检测仪色谱分析仪的发展日趋迅猛和成熟。而仪器的体积和重量一直制约着应急监测便携式VOC检测仪色谱分析仪的发展,Model 3200打破了传统色谱仪的桎梏,将便携式标气、便携式电脑工作站、在线VO…

L1-058 6翻了 (15 分)

题目复制不太好看,我直接给截图了,如上: 究其本源,pta L1的题目主要侧重于对字符串处理的考察,可以说拿下字符串,pta L1的题目百分之八十五的部分基本上都不会难倒你了,所以要在做题的时候注意积累。这里是…

N皇后问题12 · N-Queens

[抄题]: n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击。 给定一个整数n,返回所有不同的n皇后问题的解决方案。 每个解决方案包含一个明确的n皇后放置布局,其中“Q”和“.”分别表示一个…

L1-059 敲笨钟 (20 分)

题目截图如下,也可以跳转下方这个链接去pta平台自己测试一下: L1-059 敲笨钟 (20 分) 代码如下&#xff0c;部分关键注释已经在代码中标明: #include<bits/stdc.h> using namespace std; int main() {int n;string s;cin>>n;getchar(); //也可以使用cin.ignore()…

web前端表格css三个t的使用(thead,tbody,tfoot)

其实从这三个词的翻译上&#xff0c;也可以知道他们的使用用途&#xff1a; thead&#xff08;表格头&#xff09;tbody&#xff08;表格主体&#xff09;tfoot &#xff08;表尾&#xff09; 话不多说&#xff0c;先上效果图: 具体使用看见代码演示: <html> <head…

Vue框架之条件与循环的使用

如果是初学者的话&#xff0c;这里先给你一个基础知识的框图&#xff0c;可以了解一下下面代码的由来。 也可以选择我这个链接Vue条件与循环跳转到Vue官网进行学习。 上面是Vue的一个简单案例&#xff0c;不要急&#xff0c;进阶版来了&#xff0c;通过这个框架应用到你的表格…

git连接jenkins_开普勒云平台:如何配置gitlab与Jenkins

一、Kplcloud是什么?kplcloud是一个基于Kubernetes的轻量级PaaS平台&#xff0c;通过可视化的界面对应用进行管理&#xff0c;降低应用容器化的对度&#xff0c;从而减少应用容器化的时间成本。Kplcloud已在宜信服务于宜人财富等多个团队&#xff0c;稳定运行了近两年&#xf…

Eclipse查找文件存储路径

1.打开Eclipse&#xff0c;去找导航栏 2.点击file 3.点击properties 4.即可看到存储路径 5.可以点击存储路径找到该文件在电脑的储存位置 从此上传作业&#xff0c;找不到文件位置不再是烦恼。

专业对不对口重要吗_应届生求职,专业对口到底重不重要?

18年&#xff0c;智联招聘发布的《2018年大学生求职指南》显示&#xff0c;近四成毕业生就业岗位和在校专业不对口。同时&#xff0c;LinkedIn&#xff08;领英&#xff09;通过调查15万份用户档案分析发现&#xff0c;第一份工作的专业对口比例&#xff0c;95后只有28.8%。&am…

Xml的使用

关于xml的学习入门&#xff0c;下面的就足够了 话不多说&#xff0c;先上图 主要注释已经附在了代码里&#xff1a; 这是独立执行的xml文件&#xff0c;未关联css和XSL文件&#xff0c;只会显示出一棵数据树。 至于详细的使用&#xff0c;我都附在了代码注释里&#xff0c;可以…

C++中的位运算

最近在刷天梯题的时候&#xff0c;发现了<<和>>这两个运算&#xff0c;刚见到的时候简直一脸懵逼&#xff0c;觉得自己很菜&#xff0c;经过自己查找资料&#xff0c;发现原来这两个小东西是位运算符呀。为加深自己的印象&#xff0c;总结如下: 话不多说&#xff0…

node 更新_被创造者嫌弃,Node.js 如何应对来自 Deno 的挑战

(给前端大全加星标&#xff0c;提升前端技能)转自&#xff1a;OSC开源社区JavaScript 运行时 Node.js 于日前更新到了 15 版本&#xff0c;该软件自发布至今已走过了 11 年的岁月。但在今年 5 月&#xff0c;其竞争对手 Deno 也发布了 1.0 版本。Deno 是一个 Javascript/TypeS…