"); //-->
FPGA是什么?
场效可编程逻辑闸阵列FPGA运用硬件语言描述电路,根据所需要的逻辑功能对电路进行快速烧录。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者的需要而改变,这就好像一个电路试验板被放在了一个芯片里,所以FPGA可以完成所需要的逻辑功能。
FPGA和GPU内都有大量的计算单元,因此它们的计算能力都很强。在进行神经网络运算的时候,两者的速度会比CPU快很多。但是GPU由于架构固定,硬件原生支持的指令也就固定了,而FPGA则是可编程的。其可编程性是关键,因为它让软件与终端应用公司能够提供与其竞争对手不同的解决方案,并且能够灵活地针对自己所用的算法修改电路。
同样是擅长并行计算的FPGA和GPU,谁能够占领人工智能的高地,并不在于谁的应用更广泛,而是取决于谁的性能更好。在服务器端,有三个指标可供对比:峰值性能、平均性能与功耗能效比。当然,这三个指标是相互影响的,不过还是可以分开说。
GPU上面成千上万个核心同时跑在GHz的频率上是非常壮观的,最新的GPU峰值性能甚至可以达到10TFlops 以上。GPU的架构经过仔细设计,在电路实现上是基于标准单元库而在关键路径上可以用手工定制电路,甚至在必要的情形下可以让半导体fab依据设计需求微调工艺制程,因此可以让许多core同时跑在非常高的频率上。
相对而言,FPGA首先设计资源受到很大的限制,例如GPU如果想多加几个核心只要增加芯片面积就行,但FPGA一旦型号选定了逻辑资源上限就确定了。而且,FPGA里面的逻辑单元是基于SRAM查找表,其性能会比GPU里面的标准逻辑单元差很多。最后,FPGA的布线资源也受限制,因为有些线必须要绕很远,不像GPU这样走ASIC flow可以随意布线,这也会限制性能。
FPGA可以根据特定的应用去编程硬件,例如如果应用里面的加法运算非常多就可以把大量的逻辑资源去实现加法器,而GPU一旦设计完就不能改动了,所以不能根据应用去调整硬件资源。
目前机器学习大多使用SIMD架构,即只需一条指令可以平行处理大量数据,因此用GPU很适合。但是有些应用是MISD,即单一数据需要用许多条指令平行处理,这种情况下用FPGA做一个MISD的架构就会比GPU有优势。
所以,对于平均性能,看的就是FPGA加速器架构上的优势是否能弥补运行速度上的劣势。如果FPGA上的架构优化可以带来相比GPU架构两到三个数量级的优势,那么FPGA在平均性能上会好于GPU。
功耗能效比:功耗方面,虽然GPU的功耗远大于FPGA的功耗,但是如果要比较功耗应该比较在执行效率相同时需要的功耗。如果FPGA的架构优化能做到很好以致于一块FPGA的平均性能能够接近一块GPU,那么FPGA方案的总功耗远小于GPU,散热问题可以大大减轻。反之,如果需要二十块FPGA才能实现一块GPU的平均性能,那么FPGA在功耗方面并没有优势。
能效比的比较也是类似,能效指的是完成程序执行消耗的能量,而能量消耗等于功耗乘以程序执行的时间。虽然GPU的功耗远大于FPGA的功耗,但是如果FPGA执行相同程序需要的时间比GPU长几十倍,那FPGA在能效比上就没有优势了;反之如果FPGA上实现的硬件架构优化得很适合特定的机器学习应用,执行算法所需的时间仅仅是GPU的几倍或甚至于接近GPU,那么FPGA的能效比就会比GPU强。
来讲讲 FPGA 就业前景:
1.传统上FPGA的主要应用领域在通信(应付协议升级而不能做成ASIC),军工等小规模市场(用量小,不足以支持摊薄专门流片的费用)以及芯片的原型验证等领域。因此市场总的容量小,提供的就业岗位少。但开发和使用的难度却不低。原来Xilinx和Altera都活苦哈哈的。在学校里搞这方面的老师其实不太多,前几年随着硬件的整体颓势又转行走了不少人。
2.FPGA的新兴市场在计算加速上。FPGA的从业者是希望FPGA像GPU一样从某个领域的专用器件转型成被广泛使用的“基础设施”。很多人认为这是趋势,包括Intel。
3.有传闻说水果要给Mac Pro配FPGA加速卡。
4.传统的FPGA开发方法和芯片设计类似,都是以硬件描述语言作为输入,然后搞综合,时序分析,布局布线优化等等。但是现在随着Intel收购Altera后,一些船新的开发方法被搞出来了。本质上是为了让只懂软件编程而对时序、架构、逻辑设计以及FPGA内部硬件结构等知识不熟悉的工程师上手使用。这是两种完全不同的开发套路,但目前后者还很不成熟。
5.由于以上的变化,现在搞FPGA的大学老师又多起来了。不过不都是以前转行出去的人又回来了,很多是由于算法加速这个新方向而新加入进来的。三个月前我电信软学院搞嵌入式系统软件的老师从我这借了几块DE5-net的板子走,说要搞什么网络应用加速。前几天反馈说已经跑起来了,很感谢我(意思是板子估计就一时半会还不了啦,人家费半天劲跑起来了好意思让人家拆了还吗?)
综上所述,传统的FPGA开发方向,用途有限、学习难度大、岗位偏少。不过好处是学的人也少,就业对口比较稳定。至于和软件开发比如何,那要看软件开发的“行情”。
前几年互联网爆红的时期自然比不了。FPGA开发人才在最近几年应该还是很紧缺的,Intel专门在重庆搞了一个FPGA创新中心来在全力推动相关的人才培养。
随着科技的进展,制造业走向更高度的自动化与智能化,对工业控制技术等领域不断产生新的需求,在未来的工业制造领域,FPGA将有更大的发展空间。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。