首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

深度学习与FPGA

深度学习与FPGA

为什么选择FPGAFPGA(Field Programmable Gate Array)是在PAL、GAL、CPLD等可编程逻辑器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了全定制电路的不足,又克服了原有可编程逻辑器件门电路数有限的缺点[3]。FPGA的开发相对于传统PC、单片机的开发有很大不同。FPGA以并行运算为主,以硬件描述语言来实现;相比于PC或单片机(无论是冯诺依曼结构还是哈佛结构)的顺序操作有很大区别。FPGA开发需要从顶层设计、模块分层、逻辑实现、软硬件调试等多方面着手。FPGA可以通过烧写位流文件对其进行反复编程,目前,绝大多数 FPGA 都采用基于 SRAM(Static Random Access Memory 静态随机存储器)工艺的查找表结构,通过烧写位流文件改变查找表内容实现配置。
下面讨论几种可实现深度学习算法的硬件[4]。
  • 使用CPU。在2006年的时候,人们还是用串行处理器处理机器学习的问题,当时Mutch 和 Lowe开发了一个工具FHLib(feature hierarchy library)用来处理hierarchical 模型。对于CPU来说,它所要求的编程量是比较少的并且有可迁移性的好处,但是串行处理的特点变成了它在深度学习领域的缺点,而这个缺点是致命的。时至今日,据2006年已经过去了十年,过去的十年集成电路的发展还是遵循着摩尔定律,CPU的性能得到了极大的提升,然而,这并没有让CPU再次走入深度学习研究者的视野。尽管在小数据集上CPU能有一定的计算能力表现,多核使得它能够并行处理,然而这对深度学习来说还是远远不够的。
  • 使用GPU。GPU走进了研究者的视线,相比于CPU,GPU的核心数大大提高了,这也让它有更强大的并行处理能力,它还有更加强大的控制数据流和储存数据的能力。在[5]中,Chikkerur进行了CPU和GPU在处理目标识别能力上的差别,最终GPU的处理速度是CPU的3-10倍。
  • 使用ASIC。专用集成电路芯片(ASIC)由于其定制化的特点,是一种比GPU更高效的方法。但是其定制化也决定了它的可迁移性低,一旦专用于一个设计好的系统中,要迁移到其它的系统是不可能的。并且,其造价高昂,生产周期长,使得它在目前的研究中是不被考虑的。当然,其优越的性能还是能在一些领域胜任。[6]用的就是ASIC 的方案,在640×480pixel的图像中识别速率能达到 60帧/秒。
  • 使用FPGA。FPGA在GPU和ASIC中取得了权衡,很好的兼顾了处理速度和控制能力。一方面,FPGA是可编程重构的硬件,因此相比GPU有更强大的可调控能力;另一方面,与日增长的门资源和内存带宽使得它有更大的设计空间。更方便的是,FPGA还省去了ASIC方案中所需要的流片过程。FPGA的一个缺点是其要求使用者能使用硬件描述语言对其进行编程。但是,已经有科技公司和研究机构开发了更加容易使用的语言比如Impulse Accelerated Technologies Inc. 开发了C-to-FPGA编译器使得FPGA更加贴合用户的使用[7],耶鲁的E-Lab 开发了Lua脚本语言[8]。这些工具在一定程度上缩短了研究者的开发时限,使研究更加简单易行。
返回列表