大赞Xilinx SDAccel:把FPGA开发带入软件定义时代

杨东 FPGA开发圈

作者:杨东


众所周知,Xilinx公司是FPGA芯片厂商的领导者,如今已经成立了30个年头,为我们电子开发者提供了很多优秀的迭代产品,同时不断优化的FPGA开发工具软件。但是随着互联网时代的到来,FPGA的可扩展、高性能等优势使其可以在多领域大展身手,例如Intel、 百度等商业巨头都开始着手使用FPGA作为他们的数据中心,利用FPGA实现一些深度学习、人工神经网络算法等。

六年前Xilinx便开始了一项打破传统FPGA开发流程的研究项目,使软件开发的一套流程能够移植到FPGA开发上来,现在SDAccel开发环境终于与大家见面了。做为Xilinx SDx生态系统中的一员,SDAccel是首个面向OpenCL、C和C++进行架构优化的编译器,能够让开发者在FPGA上实现类似CPU/GPU的开发体验,例如编译、调试和优化等,例如其实现的FPGA数据中心加速服务相比CPU/GPU单位功耗性能提升了25倍,时延则缩短了50到70倍。

Xilinx推出SDAccel:打破传统


下面的百度公司在2014年热门芯片研讨会上公布的一份调查结果显示:

  • 中端 FPGA能够实现375 GFLOPS 的性能,功耗仅为10-20W。
  • 基于FPGA 的加速器可部署在所有类型的服务器中。
  • 和 CPU 和 GPU 相比, FPGA 在深度神经网络(DNN)预测系统中性能更加出色。DNN 系统用于语言识别、图像搜索、OCR、面部识别、网页搜索以及自然语言处理等各种不同应用。

传统的FPGA开发设计使用Verilog语言实现RTL设计,这种开发设计周期长、一些算法的verilog实现相比软件编程语言更加的晦涩难懂,而借助一些软件库可以轻松实现我们的想法,加快产品的研发周期,SDAccel开发环境让没有FPGA开发经验的软件工程师也能够受益于FPGA平台的优势。

SDAccel FPGA软开发三步走



图1 SDAccel开发环境

编译:


软件开发过程中编译代码是第一阶段,而且代码的编译结果与CPU/GPU资源的使用规则一般都是固定的,程序开发人员只需要关心算法的具体实现就可以了。而FPGA的编译过程则是一大难题:编译结果怎么在FPGA的可编程逻辑资源中实现以及FPGA程序代码的存储方式等问题。

SDAccel解决了这些问题,它能够识别选定FPGA型号的逻辑资源和内部存储结构类型,编译器能够在不同状态之间提取并行语句,使用基于阵列读写方式的自动内存结构,完成整个FPGA代码的编译过程。

调试:


在软件开发过程中,完成编译过程并不代表应用程序开发正确,我们还需要在目标硬件上进行不断的调试,发现问题改正错误,软件的调试是一个非常容易理解的问题,但是FPGA得调试却是另一回事,为了能够实现FPGA的调试功能,SDAccel引用了软件调试中经常使用的printf和GBD。

Printf的FPGA实现会浪费一些逻辑资源,这些资源本可以用于实现一些算法功能的,但是这里SDAccel做了一些改进优化,将printf的数据生成与解码显现分离开来,从硬件角度来看,生成printf数据只需要消耗非常少的逻辑资源,数据解码显示则完全有上位机完成,这样实现printf功能几乎对FPGA逻辑资源是零损耗。

程序开发人员可以使用SDAccel的仿真模式进入在线仿真功能,可以像软件调试一样设置断点、单步调试等操作。

优化:


FPGA应用的优化准则与CPU上的优化准则是一样的,只是实现方法不同,CPU上的优化是要关注处理的缓存大小和运算单元数量,而FPGA上的应用优化则关心所选器件型号的逻辑资源和运行时的性能。

总结展望


Xilinx推出的SDAccel让我们看到FPGA开发新的形式,可以让我们像软件一样完成FPGA应用的开发,同样的编译、调试、优化改进操作流程。Xilinx近年来的不断创新带来了一些业界传统变革,如最近提出的All Programmable 概念、SDx开发生态系统,同时她也不再是传统的可编程逻辑公司。这些创新不仅让FPGA应用到更多的领域,也预示着一个新的时代的到来——软件定义时代,我们能做的只有不断学习,紧追时代脚步。

©著作权归作者所有:来自51CTO博客作者mb5fd86d05a0afe的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 前端开发」一篇文章概括目前流行的前端开发框架
  2. PHP Mysql教程 PHP初中级开发者必学的MySQL教程
  3. 是德科技:高速数字化仪上自定义信号实时处理应用
  4. JavaWeb系统自学,全栈学习路线图,百度网盘全套视频教程大合集
  5. 迪芝伦(Digilent)推出全新开发板PYNQ-Z1,支持python
  6. 惊人!Python+FPGA 实现FPGA开发大提速?!!
  7. iOS开发进阶之路,打破平庸,杜绝淘汰!
  8. Python自动化测试开发实战 一门能就业的测试课
  9. 石油勘探开发数据治理初探

随机推荐

  1. Android(安卓)平台下使用 i2c-tools调试I
  2. Android BroadCastReciver学习笔记
  3. android的color值
  4. 《Android音频焦点机制深入理解》
  5. Android(安卓)修改状态栏颜色
  6. #Android Training# Animations
  7. Android Interprocess Communication(三)
  8. android上的漏洞挖掘方式和Fuzz
  9. Android 仿 WP7 布局
  10. Android Services组件