谈谈GPU与FPGA的一些看法

从几个方面来介绍一下GPU和FPGA。
从峰值性能来说,GPU(10Tflops)远远高于FPGA(<1TFlops)。GPU上面成千上万个core同时跑在GHz的频率上还是非常壮观的,最新的GPU峰值性能可达10TFlops以上。GPU的架构经过仔细设计(例如使用深度流水线,retiming等技巧),在电路实现上是基于标准单元库而在critical path上可以用手工定制电路,甚至在必要的情形下可以让半导体fab依据设计需求微调工艺制程,因此可以让许多core同时跑在非常高的频率。相对而言,FPGA首先设计资源受到很大的限制,例如GPU如果想多加几个core只要增加芯片面积就行,但FPGA一旦你型号选定了逻辑资源上限就确定了(浮点运算在FPGA里会占用很多资源)。而且,FPGA里面的逻辑单元是基于SRAM-查找表,其性能会比GPU里面的标准逻辑单元差好多。最后,FPGA的布线资源也受限制(有些线必须要绕很远),不像GPU这样走ASIC flow可以随意布线,这也会限制性能。
除了芯片性能外,GPU相对于FPGA还有一个优势就是内存接口。GPU的内存接口(传统的GDDR,最近更是用上了HBM和HBM2)的带宽远好于FPGA的传统DDR接口,而众所周知服务器端机器学习算法需要频繁访问内存。

但是从灵活性来说,FPGA远好于GPU。FPGA可以根据特定的应用去编程硬件(例如如果应用里面的加法运算非常多就可以把大量的逻辑资源去实现加法器),但是GPU一旦设计完那就没法改动了,没法根据应用去调整硬件资源。目前机器学习大多数适合使用SIMD架构(即只需一条指令可以平行处理大量数据),因此用GPU很适合。但是有些应用是MISD(即单一数据需要用许多条指令平行处理,微软在2014年ISCA paper里面就举了一个MISD用于并行提取feature的例子),这种情况下用FPGA做一个MISD的架构就会比GPU有优势。不过FPGA的编程对于程序员来说并不容易,所以为了能让机器学习程序员能方便地使用FPGA往往还需要在FPGA公司提供的编译器基础上进行二次开发,这些都是只有大公司才能做。
FPGA实现的机器学习加速器在架构上可以根据特定应用优化所以比GPU有优势,但是GPU的运行速度(>1GHz)相比FPGA有优势(~200MHz)。

所以,对于平均性能,看的就是FPGA加速器架构上的优势是否能弥补运行速度上的劣势。如果FPGA上的架构优化可以带来相比GPU架构两到三个数量级的优势,那么FPGA在平均性能上会好于GPU。例如,百度在HotChips上发布的paper显示,GPU的平均性能相比FPGA在矩阵运算等标准batch data SIMD bench上远好于FPGA;但是在处理服务器端的少量多次处理请求(即频繁请求但每次请求的数据量和计算量都不大)的场合下,平均性能会比GPU更好。

功耗方面,虽然GPU的功耗(200W)远大于FPGA的功耗(10W),但是如果要比较功耗应该比较在执行效率相同时需要的功耗。如果FPGA的架构优化能做到很好以致于一块FPGA的平均性能能接近一块GPU,那么FPGA方案的总功耗远小于GPU,散热问题可以大大减轻。反之,如果需要二十块FPGA才能实现一块GPU的平均性能,那么FPGA在功耗方面并没有优势。
能效比的比较也是类似,能效指的是完成程序执行消耗的能量,而能量消耗等于功耗乘以程序执行的时间。虽然GPU的功耗远大于FPGA的功耗,但是如果FPGA执行相同程序需要的时间比GPU长几十倍,那FPGA在能效比上就没有优势了;反之如果FPGA上实现的硬件架构优化得很适合特定的机器学习应用,执行算法所需的时间仅仅是GPU的几倍或甚至于接近GPU,那么FPGA的能效比就会比GPU强。
文章参考来源:GPU以及FPGA技术相关网站
版权所有权归卿萃科技 杭州FPGA事业部,转载请注明出处
作者:杭州卿萃科技ALIFPGA
原文地址:杭州卿萃科技FPGA极客空间 微信公众号

扫描二维码关注杭州卿萃科技FPGA极客空间
谈谈GPU与FPGA的一些看法的更多相关文章
- 深度学习硬件:CPU、GPU、FPGA、ASIC
人工智能包括三个要素:算法,计算和数据.人工智能算法目前最主流的是深度学习.计算所对应的硬件平台有:CPU.GPU.FPGA.ASIC.由于移动互联网的到来,用户每天产生大量的数据被入口应用收集:搜索 ...
- 谈谈自己对java的学习看法
从明天起,开始整理java的基础知识,进行巩固学习. 今天呢,谈谈自己的一点想法.很多人不知道java怎么学,学什么,有的是直接在网上找一些视频来看,不懂的地方到处跑群里问,结果效果并不是太好,怎么办 ...
- 深入理解CPU和异构计算芯片GPU/FPGA/ASIC (上篇)
王玉伟,腾讯TEG架构平台部平台开发中心基础研发组资深工程师,专注于为数据中心提供高效的异构加速云解决方案.目前,FPGA已在腾讯海量图片处理以及检测领域已规模上线. 随着互联网用户的快速增长,数据体 ...
- 转 让FPGA替代GPU的6大顾虑,你确定不看看吗?
最近FPGA又频频被各AI领域的巨头看好,比如微软.百度.科大讯飞都对FPGA应用前景有所期待.那么如果让你选择FPGA作为AI计算系统的主力军,你会有什么样的顾虑? 这几天,已经退役的AlphaGo ...
- GPU 、APU、CUDA、TPU、FPGA介绍
购买显卡主要关注:显存.带宽和浮点运算数量 GPU :图形处理器(英语:Graphics Processing Unit,缩写:GPU),又称显示核心.视觉处理器.显示芯片,是一种专门在个人电脑. ...
- 第二篇-FPGA学习之RoadMap
古语云:知己知彼,百战不殆.那么既然选择了FPGA之路,欲练此功,必先-- 必先了解清楚,FPGA的特点,FPGA善于/不善于解决什么类型问题,以及FPGA应用的方向,FPGA学习的要素等等. 一.F ...
- Apache Spark 3.0 将内置支持 GPU 调度
如今大数据和机器学习已经有了很大的结合,在机器学习里面,因为计算迭代的时间可能会很长,开发人员一般会选择使用 GPU.FPGA 或 TPU 来加速计算.在 Apache Hadoop 3.1 版本里面 ...
- 了解FPGA市场现状和未来趋势
转, 来源: http://www.sohu.com/a/204640373_740053 可编程的“万能芯片” FPGA——现场可编程门阵列,是指一切通过软件手段更改.配置器件内部连接结构和逻辑单元 ...
- [CB]Intel 2018架构日详解:新CPU&新GPU齐公布 牙膏时代有望明年结束
Intel 2018架构日详解:新CPU&新GPU齐公布 牙膏时代有望明年结束 北京时间12月12日晚,Intel在圣克拉拉举办了架构日活动.在五个小时的演讲中,Intel揭开了2021年CP ...
随机推荐
- vue基础指令
- C++进阶4.C++知识整理
C++知识整理(多益笔试) 20131012 前言: 还是关于笔试知识的整理,主要是面向对象的知识还有一些常见的语法知识. 1.还是C++内存管理的知识 C++中程序的内存分布如下: 栈:向下增长,可 ...
- yum的搭建
搭建本地yum仓库的步骤 . 创建光盘目录,挂载光盘 . 进入/etc/yum/repos.d目录下,备份所有配置文件 . 利用一个含有大写M的配置文件作为配置文件的模板 . 在模板里将enabled ...
- Python中函数装饰器及练习
)]) ,,],)
- ios Label TextFile 文本来回滚动 包括好用的三方
通常显示不够了,比如八个字.只能显示6个字 .产品要求 来回滚动 下面有两种 方法 : 一种UIScrollView 一种 View动画 如果不能满足你 请点击这个 https://github ...
- js检测三角形是否包含一个点
pointInTriangle:function(x0, y0, x1, y1, x2, y2, x3, y3) { var divisor = (y2 - y3)*(x1 - x3) + (x3 - ...
- sublime忽略打开工程中某些文件夹,不在搜索之列
{ "folders": [ { "follow_symlinks": true, "path": ".", " ...
- BZOJ1857 Scoi2010 传送带 【三分】
BZOJ1857 Scoi2010 传送带 Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P ...
- 使用 ExceptionDispatchInfo 捕捉并重新抛出异常
当你跑起了一个异步线程,并用 await 异步等待时,有没有好奇为什么能够在主线程 catch 到异步线程的异常? 当你希望在代码中提前收集好异常,最后一并把收集到的异常抛出的时候,能不能做到就像在原 ...
- String.format(2)
转载:https://blog.csdn.net/feng_870906/article/details/6870788 String.format是在JDK1.5中新增的静态方法,功能强.它主要功能 ...