大赞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. ES在MySQL、PHP中的使用
  2. PHP之斐波那契数列的N种算法
  3. 小知识大学问的注册 PHP 函数
  4. Hyperf日志如何查看组件
  5. 编译PHP扩展的方法
  6. 解决PHP里大量数据循环时内存耗尽问题的
  7. 简易实现HTTPS之自签名证书
  8. 21个php常用方法汇总
  9. php如何整合qq互联登录
  10. PHP实现手机网站支付(兼容微信浏览器)