看FPGA如何击败GPU和GPP
种用途和重复使用。另一方面,专用集成电路(ASIC)可提供高性能,但代价是不够灵活且生产难度更大。这些电路专用于某特定的应用程序,并且生产起来价格昂贵且耗时。
FPGA是这两个极端之间的折中。FPGA属于一类更通用的可编程逻辑设备(PLD),并且简单来说,是一种可重新配置的集成电路。因此,FPGA既能提供集成电路的性能优势,又具备GPP可重新配置的灵活性。FPGA能够简单地通过使用触发器(FF)来实现顺序逻辑,并通过使用查找表(LUT)来实现组合逻辑。现代的FPGA还含有硬化组件以实现一些常用功能,例如全处理器内核、通信内核、运算内核和块内存(BRAM)。另外,目前的FPGA趋势趋向于系统芯片(SoC)设计方法,即ARM协处理器和FPGA通常位于同一芯片中。目前的FPGA市场由Xilinx主导,占据超过85%的市场份额。此外,FPGA正迅速取代ASIC和应用专用标准产品(ASSP)来实现固定功能逻辑。 FPGA市场规模预计在2016年将达到100亿美元。
对于深度学习而言,FPGA提供了优于传统GPP加速能力的显著潜力。 GPP在软件层面的执行依赖于传统的冯?诺依曼架构,指令和数据存储于外部存储器中,在需要时再取出。这推动了缓存的出现,大大减轻了昂贵的外部存储器操作。该架构的瓶颈是处理器和存储器之间的通信,这严重削弱了GPP的性能,尤其影响深度学习经常需要获取的存储信息技术。相比较而言,FPGA的可编程逻辑原件可用于实现普通逻辑功能中的数据和控制路径,而不依赖于冯?诺伊曼结构。它们也能够利用分布式片上存储器,以及深度利用流水线并行,这与前馈性深度学习方法自然契合。现代FPGA还支持部分动态重新配置,当FPGA的一部分被重新配置时另一部分仍可使用。这将对大规模深度学习模式产生影响,FPGA 的各层可进行重新配置,而不扰乱其他层正在进行的计算。这将可用于无法由单个FPGA容纳的模型,同时还可通过将中间结果保存在本地存储以降低高昂的全球存储读取费用。
最重要的是,相比于GPU,FPGA为硬件加速设计的探索提供了另一个视角。GPU和其它固定架构的设计是遵循软件执行模型,并围绕自主计算单元并行以执行任务搭建结构。由此,为深度学习技术开发GPU的目标就是使算法适应这一模型,让计算并行完成、确保数据相互依赖。与此相反,FPGA架构是为应用程序专门定制的。在开发FPGA的深度学习技术时,较少强调使算法适应某固定计算结构,从而留出更多的自由去探索算法层面的优化。需要很多复杂的下层硬件控制操作的技术很难在上层软件语言中实现,但对FPGA执行却特别具有吸引力。然而,这种灵活性是以大量编译(定位和回路)时间为成本的,对于需要通过设计循环快速迭代的研究人员来说这往往会是个问题。
除了编译时间外,吸引偏好上层编程语言的研究人员和应用科学家来开发FPGA的问题尤为艰难。虽然能流利使用一种软件语言常常意味着可以轻松地学习另一种软件语言,但对于硬件语言翻译技能来说却非如此。针对FPGA 最常用的语言是Verilog和VHDL,两者均为硬件描述语言(HDL)。这些语言和传统的软件语言之间的主要区别是,HDL只是单纯描述硬件,而例如 C语言等软件语言则描述顺序指令,并无需了解硬件层面的执行细节。有效地描述硬件需要对数字化设计和电路的专业知识,尽管一些下层的实现决定可以留给自动合成工具去实现,但往往无法达到高效的设计。因此,研究人员和应用科学家倾向于选择软件设计,因其已经非常成熟,拥有大量抽象和便利的分类来提高程序员的效率。这些趋势使得FPGA领域目前更加青睐高度抽象化的设计工具。
FPGA深度学习研究里程碑:
1987VHDL成为IEEE标准
1992GANGLION成为首个FPGA神经网络硬件实现项目(Cox et al.)
1994Synopsys推出第一代FPGA行为综合方案
1996VIP成为首个FPGA的CNN实现方案(Cloutier et al.)
2005FPGA市场价值接近20亿美元
2006首次利用BP算法在FPGA上实现5 GOPS的处理能力
2011Altera推出OpenCL,支持FPGA
出现大规模的基于FPGA的CNN算法研究(Farabet et al.)
2016在微软Catapult项目的基础上,出现基于FPGA的数据中心CNN算法加速(Ovtcharov et al.)
未来展望
深度学习的未来不管是就FPGA还是总体而言,主要取决于可扩展性。要让这些技术成功解决未来的问题,必须要拓展到能够支持飞速增长的数据规模和架构。 FPGA技术正在适应这一趋势,而硬件正朝着更大内存、更少的特征点数量、更好的互连性发展,来适应FPGA多重配置。英特尔收购了Altera,IBM 与Xilinx合作,都昭示着FPGA领域的变
- GPU性能不够跑VR?这项技术或许能解决难题(03-29)
- VR设计:如何实现GPU和显示器高度集成(05-11)
- 基于CUDA技术的视频显示系统的设计方案(06-08)
- 笔记本电脑中温度传感器的应用(06-14)
- 双GPU设计 打造最简单与最快速的加速方案(05-25)
- Intel第六代处理器 Skylake CPU、GPU、主板完全解析(09-06)