智能驾驶中主芯片使用CPU还是GPU架构,具体有什么区别
发布时间:2023-08-30 12:48:02 文章来源:哔哩哔哩
人生没有最优解,我们可以有多种活法,拒绝自我设限。加入本知识星球可

人生没有最优解,我们可以有多种活法,拒绝自我设限。加入本知识星球可以拓展您的圈层,打破您的认知边界,链接到4W+的汽车赛道“局内人”,交换职场信息,打破职场信息差,遇见同行伙伴,共同探索技术交流和职业发展。

作者 / 阿宝

编辑 / 阿宝


(相关资料图)

出品 / 阿宝1990

上图是自动驾驶的功能模块图,今天重点要讲的是决策端的内容,可以看到ADAS实现功能的重点也是在决策层,也就是算法层,算法层需要快,比如自动识别,声音识别等等,都涉及到神经网络的算法计算,比如360环视,那要满足这些ADAS的算法,CPU是不行,机哥为什么这么说呢,所有你看到有CPU的地方都会有GPU,不对啊,GPU不是在机顶盒中做图像渲染的么,比如2D和3D渲染的算法?

人工智能的发展也带动了汽车智能化发展,过去的以CPU为核心的处理器越来越难以满足处理视频、图片等非结构化数据的需求,同时处理器也需要整合雷达、视频等多路数据,这些都对车载处理器的并行计算效率提出更高要求,而GPU同时处理大量简单计算任务的特性在自动驾驶领域取代CPU成为了主流方案。为什么AI算法大部分都使用GPU,自动驾驶计算目前来看也是GPU是一个潮流?

对于ADAS产品而言,时间就是生命

我们这次就讲一个故事的形式来讲解会更清楚一些,当你驾驶一辆具有自动驾驶L3级别的车辆,你下高速后,在没有路标的地方发现100米前有一条河,此时由于车辆图像库里面没有河这个资源,需要快速的图像识别并决策。

AI算法,在图像识别等领域,常用的是CNN卷积网络,语音识别、自然语言处理等领域,主要是RNN,这是两类有区别的算法。但是,他们本质上,都是矩阵或vector的乘法、加法,然后配合一些除法、指数等算法

假设此时你车上的AI图像算法是YOLO-V3,它是一种使用深度卷积神经网络学得的特征来检测对象的目标检测器,直白点就是照片识别器,在机场地铁都有批量使用,就是大量的卷积、残差网络、全连接等类型的计算,本质是乘法和加法。对于YOLO-V3来说,如果确定了具体的输入图形尺寸,那么总的乘法加法计算次数是确定的。比如一万亿次。(真实的情况比这个大得多的多),用算力表示就是TOPS为单位。

那么要快速执行一次YOLO-V3,就必须执行完一万亿次的加法乘法次数。

这个时候就来看了,比如IBM的POWER8,最先进的服务器用超标量CPU之一,4GHz,SIMD,128bit,假设是处理16bit的数据,那就是8个数,那么一个周期,最多执行8个乘加计算。一次最多执行16个操作。这还是理论上,其实是不大可能的。

那么CPU一秒钟的巅峰计算次数=16* 4Gops =64Gops,当然,以上的数据都是完全最理想的理论值。因为,芯片上的存储不够大,所以数据会存储在DRAM中,从DRAM取数据很慢的,所以,乘法逻辑往往要等待。另外,AI算法有许多层网络组成,必须一层一层的算,所以,在切换层的时候,乘法逻辑又是休息的,所以,诸多因素造成了实际的芯片并不能达到利润的计算峰值,而且差距还极大,实际情况,能够达到5%吧,也就,按照这个图像算法,如果需要执行YOLO-V3的计算,1W除以=3125秒,也就是那么需要等待52分钟才能计算出来。

如果是当前的CPU去运算,那么估计车翻到河里了还没发现前方是河,这就是速度慢,对于ADAS产品而言,时间就是生命。

我们再来看一看流媒体后视镜,现在市面上的车越来越多的高配车开始装有流媒体后视镜了,而且京东淘宝一大把流媒体后视镜的产品在售卖,前装车厂的标配价格至少上千元,而淘宝上200左右就可以买到,而且功能比车厂出厂的功能更齐全,这又是为什么呢?

不是所有牛奶都叫特仑苏,不是所有电子后视镜都能称为流媒体后视镜

传统后视镜:司机只能看到后车窗宽度范围的车后路况,其他角度均为C/D柱所挡。如果后排坐了人、或置放了物品,更是影响可见视野,增加了视野盲区。

流媒体后视镜,以屏代镜,通过摄像头把汽车后方影像投射到显示屏上;流媒体后视镜的画面视角应至少包括常规后窗观察视角加上C/D柱盲区致损的角度,一般为70-90°。

这样才能确保后方无盲点,并且也不会被后方乘客遮挡视线,还可以避免在驾驶时由于观看后视镜而与后排乘客出现的眼神直视,避免尴尬。同时因实现了无盲点覆盖,客户无需手动调节,就可以获得最佳视野。

低延时是流媒体后视镜与其他电子后视镜的关键核心区别点

正常情况下我们通过普通物理后视镜去看距离的时候,光线传输是非常快的,没有延迟,就是你看到的图像距离就是实际的图像距离,但是流媒体后视镜就是通过摄像头去采集,图像传输过来,此时有延迟,这个延迟非常关键,延迟长短对于驾驶安全有至关重要的影响。

车速为100KM/H的时候,1S中的距离是多远,=100*1000/60*60=,一般100KM/H的中型车的刹车距离为40-50米,所以如果传输过来的图像有1S延迟的话,你此时看到的图像距离是上1S中的距离,而在100KM/H的行车速度时,如果有一个急刹车,比如你看到的图像距离感觉后车跟车距离是50m,实际急刹车时只有23m了,因为图像延迟了1S,那么此时就会导致驾驶上的判断的失误。

所以流媒体后视镜前装标准是40ms,在80KM/H的时候延迟40ms的距离是2M,这个速度对于行车安全来说是可以接受的范围,要做到这个延迟非常不容易,为什么这么说呢,请看下框图。

流媒体后视镜系统中对于摄像头的要求非常高,摄像头要安装在车尾部,需要广角的角度,需要车规级的使用温度,有IP67的防水等级,在夜晚低照度的时候能够看清楚画面,在路灯高亮度的照射情况下需要看清楚周围的物料,需要有宽动态HDR效果,镜头需要防小石头耐擦挂的镜头。

摄像头目前一般都是60帧的帧率输出,此时帧与帧之间的延迟就有17ms,一般广角出来的摄像头图像不能直接显示,需要有ISP的白平衡、畸变校正,动态响应等调节,此时又有延迟,ISP处理完再通过信号传输芯片驱动屏显示屏,此时也有延迟。

总共的延迟要求控制在40ms,就需要整个系统非常简单,只有图像处理相关的内容,不需要存卡,不需要处理GPS信号,不需要处理语音,不需要处理碰撞信号,此时才能做到延迟最短,所以这就理解到了车厂的流媒体后视镜一般功能比较单一,不会增加那么多功能。

域控制高通820A芯片能做ADAS算法不呢?

此时我们在回过头来看看高通820A芯片的算力,CPU的算力才42K,刚刚那个是基于最先进的服务器IBM的POWER8 CPU计算力是是,车载算的上最先进的域控制器才42K的CPU计算力,所以不能用于AI的计算。此时需要使用GPU来计算,看看GPU的算力是320Gops,此时算这个YOLO-V3图像识别的算法需要32秒,这个成绩还是非常不错的。

此时可以看到高通820A芯片的CPU算力是不能够用于AI的计算,GPU的算力是可以满足一些不需要那么实时性比较高的一些AI处理。

如果是一些简单的ADAS功能是没有问题,比如车内的人脸识别,这部分的算法就不要那么多资源,该产品运行了820A神经网络处理引擎(SNPE),这里的引擎也就是AI加速的一些算法,有兴趣单独来讲怎么实现加速。这里高通820A能实现对车辆、行人、自行车等多类物体识别,以及对像素级别可行驶区域的实时语义分割,当然离商用应该还有一定距离。总的来说,高通骁龙产品策略应该还是以车载娱乐信息系统为主,逐步向更专业的ADAS拓展。

这样你就不会问为什么GPU这么厉害,AI识别为什么不全部使用GPU得了,那就需要继续看CPU和GPU的区别了。

GPU和CPU的区别

CPU的核心运算ALU数量只有几个(不超过两位数),每个核都有足够大的缓存和足够多的数字和逻辑运算单元,并辅助很多复杂的计算分支。而 GPU的运算核心数量则可以多达上百个(流处理器),每个核拥有的缓存大小相对小,数字逻辑运算单元也少而简单。

CPU和GPU最大的区别是设计结构及不同结构形成的不同功能。CPU的逻辑控制功能强,可以进行复杂的逻辑运算,并且延时低,可以高效处理复杂的运算任务。而 GPU逻辑控制和缓存较少,使得每单个运算单元执行的逻辑运算复杂程度有限,但并列大量的计算单元,可以同时进行大量较简单的运算任务。

CPU是根据冯诺依曼的架构进行设计,所以存储、计算、交互都有,GPU本来是从CPU中分离出来专门处理图像计算的,也就是说,GPU是专门处理图像计算的。包括各种特效的显示。这也是GPU的天生的缺陷,GPU更加针对图像的渲染等计算算法,所以这里的天生两个缺陷是不能进行复杂的逻辑控制,而且GPU没有cache单元,也没有复杂的逻辑控制电路和优化电路,所以不能单独像CPU那样进行单独的控制,你看机顶盒芯片都是CPU里面内含GPU的架构,GPU主要用来做图像的渲染方面,工具就是Open CL图像编辑器来编译。

CPU和GPU的不同的通俗解释:

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

GPU就是这样,用很多简单的计算单元去完成大量的计算任务,纯粹的人海战术。这种策略基于一个前提,就是小学生A和小学生B的工作没有什么依赖性,是互相独立的。很多涉及到大量计算的问题基本都有这种特性,比如你说的破解密码,挖矿和很多图形学的计算。这些计算可以分解为多个相同的简单小任务,每个任务就可以分给一个小学生去做。但还有一些任务涉及到“流”的问题。比如你去相亲,双方看着顺眼才能继续发展。总不能你这边还没见面呢,那边找人把证都给领了。这种比较复杂的问题都是CPU来做的。

总而言之,CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别。而某些任务和GPU最初用来解决的问题比较相似,所以用GPU来算了。GPU的运算速度取决于雇了多少小学生,CPU的运算速度取决于请了多么厉害的教授。教授处理复杂任务的能力是碾压小学生的,但是对于没那么复杂的任务,还是顶不住人多。当然现在的GPU也能做一些稍微复杂的工作了,相当于升级成初中生高中生的水平。但还需要CPU来把数据喂到嘴边才能开始干活,究竟还是靠CPU来管的。

什么类型的程序适合在GPU上运行?

(1)计算密集型的程序。所谓计算密集型(Compute-intensive)的程序,就是其大部分运行时间花在了寄存器运算上,寄存器的速度和处理器的速度相当,从寄存器读写数据几乎没有延时。可以做一下对比,读内存的延迟大概是几百个时钟周期;读硬盘的速度就不说了,即便是SSD, 也实在是太慢了。

(2)易于并行的程序。GPU其实是一种SIMD(Single Instruction Multiple Data)架构, 他有成百上千个核,每一个核在同一时间最好能做同样的事情。

满足以上两点,就可以用GPU做运算了。不过你还得先用CUDA或者Open CL 把能在GPU上运行的程序写出来, 这也是很麻烦的,写一下就知道了。而且GPU的架构比较特殊,要想写出高效率的程序,要花很多很多时间。所以说写GPU程序是一件很蛋疼的事情。

自动驾驶芯片使用GPU+FPGA的解决方案。未来算法稳定后,ASIC将成为主流

自动驾驶GPU+FPGA介绍:

相比于消费电子产品的芯片,车载的GPU方案智能驾驶芯片对性能和寿命要求都比较高,主要体现在以下几方面:

1. 耗电每瓦提供的性能;

2. 生态系统的构建,如用户群、易用性等;

3. 满足车规级寿命要求,至少 1万小时稳定使用。

FPGA适用于多指令,单数据流的分析,与GPU相反,因此常用于预测阶段,如云端。FPGA是用硬件实现软件算法,因此在实现复杂算法方面有一定的难度,缺点是价格比较高。

目前无论是尚未商业化生产的自动驾驶AI芯片还是已经可以量产使用的辅助驾驶芯片,由于自动驾驶算法还在快速更新迭代,对云端“训练”部分提出很高要求,既需要大规模的并行计算,又需要大数据的多线程计算,因此以 GPU+FPGA解决方案为核心;在终端的“推理”部分,核心需求是大量并行计算,从而以 GPU为核心。

GPU本来是从CPU中分离出来专门处理图像计算的,也就是说,GPU是专门处理图像计算的。包括各种特效的显示。这也是GPU的天生的缺陷,GPU更加针对图像的渲染等计算算法。但是,这些算法,与深度学习的算法还是有比较大的区别。这里。

至于说很多公司的方案是可编程的,也就是大多数与FPGA配合。机哥你说的是商汤、深鉴么?的确,他们发表的论文,就是基于FPGA的。

这些创业公司,他们更多研究的是算法,至于芯片,还不是重点,另外,他们暂时还没有那个精力与实力。FPGA非常灵活,成本不高,可以很快实现架构设计原型,所以他们自然会选择基于FPGA的方案。

ASIC是为实现特定要求而定制的专用AI芯片。除了不能扩展以外,在功耗、可靠性、体积方面都有优势,尤其在高性能、低功耗的移动端。

计算能耗比,ASIC> FPGA >GPU > CPU,究其原因,ASIC和 FPGA更接近底层 IO,同时FPGA有冗余晶体管和连线用于编程,而 ASIC是固定算法最优化设计,因此 ASIC能耗比最高。相比前两者,GPU和CPU屏蔽底层 IO,降低了数据的迁移和运算效率,能耗比较高。同时GPU的逻辑和缓存功能简单,以并行计算为主,因此 GPU能耗比又高于CPU。

FPGA和ASIC的区别主要在是否可以编程。FPGA客户可根据需求编程,改变用途,但量产成本较高,适用于应用场景较多的企业、军事等用户;而ASIC已经制作完成并且只搭载一种算法和形成一种用途,首次“开模”成本高,但量产成本低,适用于场景单一的消费电子、“挖矿”等客户。目前自动驾驶算法仍在快速更迭和进化,因此大多自动驾驶芯片使用GPU+FPGA的解决方案。未来算法稳定后,ASIC将成为主流。

结合 ASIC的优势,我们认为长远看自动驾驶的 AI芯片会以 ASIC为解决方案,主要有以下几个原因:

1. 由于处理的传感器信息需要大量冗余,自动驾驶对终端算力要求极高,并且车速越快,对计算能力要求越高;

2. 自动驾驶对终端计算的实时性要求极高。任何超出一定范围的延迟,都有可能造成事故,因此终端会负责自动驾驶的核心计算和决策功能;

3. 对能效要求高,否则降低车辆续航,影响驾驶体验。高能耗同时带来的热量也会降低系统稳定性。例如下一代支持 L4的 NVIDIADrive Pegasus功耗为500瓦,只能应用于小规模的测试车;

4. 高可靠性。真正满足车规的自动驾驶芯片需要在严寒酷暑、刮风下雨或长时间运行等恶劣条件下,都有稳定的计算表现。

综上 ASIC专用芯片几乎是自动驾驶量产芯片唯一的解决方案。由于这种芯片仅支持单一算法,对芯片设计者在算法、IC设计上都提出很高要求。

从芯片设计来说,现在ADAS处理器芯片的主要挑战在如下几个方面:

1)车规级的标准,最好过ISO26262,达到ASIL-B甚至ASIL-D级别

2)高计算量以及高带宽,特别是多传感器融合的芯片,需要更高的芯片频率,以及异构设计,以达到快速的数据处理速度,同时传输的吞吐率上也有较高要求。

3) 随着人工智能在ADAS上的应用,针对芯片的设计会考虑增加硬件的深度学习设计,如何在软硬件上做取舍,以及人工智能计算模型与原有软硬件架构以及整个系统设计上做匹配,目前来看还在早期探索阶段。

王小波曾说:我对自己的要求很低:我活在世上,无非想要明白些道理,遇见些有趣的事。倘能如我愿,我的一生就算成功。本公众号就是推广一些有意思的事情,推广一些常识,让生活变得有趣。

码字不易,需要各位帮忙推广,帮忙关注此微信公众号:阿宝1990,每周给你不同的观点和内容。

标签:

资讯播报

乐活HOT

娱乐LOVE

精彩推送