程序猿们遇福音,可轻松开发令硬件工程师望而生畏的FPGA

SDAccel开发环境系统程序员也可以开发令硬件工程师望而生畏的FPGA
作者 张国斌

猜猜以下三个场景和什么器件有关?
场景一、老王吃了一顿自认为有史以来最好吃的凉皮,莫名亢奋的他用手机拍下凉皮的照片并分享到微信上。
场景二、远隔千里的老张看到了老王的微信,用ipad打开看老王拍的照片
场景三、某互联网公司开发人员在思考春节的抢红包的几种玩法,并考虑如何去实现规则,但是他要考虑规则改变给服务器带来的巨大负载。
这几个场景和什么器件有关?首先,这些场景肯定都是服务器有关了,服务器里有什么?CPU? GPU? 恭喜你,答对了,传统上,这些场景应用都和CPU、GPU有关的。不过从现在乃至未来,服务器将也将采用另外一个器件,它,就,是,FPGA!

为什么是FPGA?

“由于移动互联的普及,带来了图片处理、搜素、转化等方面需求的暴涨,数据中心的功耗压力非常大,要在1U 2U的同等机架上用传统处理维持同能功耗难度非常大,所以数据中心的开发人员一直在寻找可以提升性能同时不增加功耗的办法。现在这个方法终于找到了。”在近日赛灵思SDAccel开发环境媒体发布会上,赛灵思亚太地区销售与市场副总裁杨飞出,“赛灵思在近日召开的2014国际超算大会(Super Computing 2014)上宣布推出针对OpenCL™、C和C++的SDAccel开发环境SDAccel,将单位功耗性能提高达25倍,从而利用FPGA实现数据中心应用加速。”

针对OpenCL™、C和C++的SDAccel开发环境SDAccel
针对OpenCL™、C和C++的SDAccel开发环境SDAccel

实际上,多年以来,数据中心运维人员一直在不断寻求更高的服务器性能。目前,他们主要是通过易于编程的多核CPU和GPU来开发应用,但CPU和GPU都遇到了单位功耗性能的瓶颈壁垒。从事海量数据中心应用开发(如密钥加速、图像识别、语音转录、加密和文本搜索等)的设计人员既希望GPU易于编程,同时又希望硬件具有低功耗、高吞吐量和最低时延功能。然而,多核CPU和GPU加速器在可扩展性上存在严重的问题:客户希望用简单的全高度插入式PCIe开发板作为数据中心服务器的应用加速器。这种开发板经配置可运行高功率图形卡,但客户同时希望功耗不超过25W,以便最大化可扩展性并最小化总功耗。

最近赛灵思同瑞士苏黎世联邦理工学院(ETH Zurich)联合开展的一系列研究发现,基于FPGA的应用加速想比CPU/GPU实现方案,单位功耗性能可提升25倍,而时延则缩短了50到75倍,与此同时还能实现出色的I/O集成(PCIe、DDR4 SDRAM接口、高速以太网等)。换言之,FPGA能在单芯片上提供高能效硬件应用加速所需的核心功能,并同时提供每个开发板目标功耗低于25W的的解决方案。

而中国BAT三巨头之一的百度公司也是多年来在寻找更好的能效方案,对CPU、GPU和FPGA在数据中心的应用进行调查和对比,和在最近美国加州圣何塞举行的2014年热门芯片研讨会上他们介绍了支持性调查结果。百度的结论如下:
1、中端FPGA能够实现375 GFLOPS的性能,功耗仅为10-20W
2、基于FPGA的加速器可部署在所有类型的服务器中。
3、和CPU和GPU相比, FPGA在深度神经网络(DNN)预测系统中性能更加出色。DNN系统用于语言识别、图像搜索、OCR、面部识别、网页搜索以及自然语言处理等各种不同应用。
这是将赛灵思Kintex-7、Nvdia K10和英特尔至强处理器搜索对比:在多线程情况下,FPGA的优势非常明显,在这个百度开发的400Gflop软件定义加速器中,它采用的赛灵思Kintex®-7 480t-2l PCI Express FPGA开发板可以插入到任何类型的1U或2U服务器中。在不同工作负载下,百度发现Kintex 7 FPGA开发板的性能均比GPU高出4倍,比CPU则高出9倍,同时在实际生产系统中功耗仅为10-20W。

不过百度指出应用FPGA解决方案的一大壁垒就是开发时间长,百度建议用好的工具解决这个问题,这也是Xilinx SDAccel环境推出的主因之一。这个开发环境可以让系统开发人员像开发传统CPUGPU一样开发FPGA。

数据中心如何用FPGA?

杨飞介绍说,将FPGA应用的数据中心很简单,首先,将FPGA插入数据中心服务器PCIE插槽中,然后就可以利用赛灵思提供更多SDAccel环境进行开发就可以了。



SDAccel配套提供编程器用Eclipse IDE以及一系列基于C语言的FPGA优化库和数据中心用现成商用平台。现在已经有Convey Computer、Alpha Data Parallel Systems和Pico Computing等公司可提供数据中心用加速板卡,2015年年初还将增加更多商用现货(COTS)合作伙伴。

SDAccel库包括内置OpenCL函数、DSP、视频和线性代数库,能支持高性能低功耗实现方案。针对特定领域加速,赛灵思联盟合作成员Auviz Systems公司还提供优化的 OpenCV和BLAS SDAccel兼容库。

应用开发人员完全能在X86仿真空间下开始使用SDAccel使其代码开始工作。一旦其确信其算法开发人员就能对代码进行特性分析,找到受益于加速的代码片段。然后开发人员就可以利用这些有针对性的片段,无缝采用快速自动生成的周期精确内核仿真,从而实现加速。这些快速仿真可用来调试和优化加速量,同时能在架构层面工作。业经验证的应用能方便地移植到主机/FPGA系统。SDAccel开发环境可支持所有这些来自同一控制中心(cockpit)的活动。

一旦应用经过初始调试和特性分析,需要硬件加速的关键功能可通过编译实现协同仿真,加速功能运行在基于CPU的RTL仿真器上。这时,软件开发团队可观察所得的性能,确定应用能否满足性能目标要求。RTL仿真能准确给出FPGA硬件加速的性能情况,这就能让开发团队得到很好的性能估算,而且能高度确保所得的FPGA配置能精确重现应用源代码的行为和结果。

杨飞介绍说,以前软件开发人员在开发新的功能的时候,需要硬件人员在硬件上进行协调,现在,他们可以直接用FPGA进行加速。“这是第一个在FPGA上提供完全类似CPU/GPU的运行时间体验的开发环境”他强调,“我们目前主要针对以X86为主的服务器架构。”

性能表现突出

杨飞表示SDAccel的架构优化编译器使软件开发者能够优化并编译流媒体、低时延以及定制数据路径应用。SDAccel编译器主要针对高性能赛灵思FPGA并支持OpenCL,C 和C++任意组合的源代码。

SDAccel编译器相比高端CPU性能提高达10倍,而功耗仅为GPU的1/10,同时能保持代码的兼容性和一个传统的软件编程模式,以便于应用移植并节约成本。根据客户基准,SDAccel编译器相比同类竞争FPGA解决方案,性能和资源效率均提升了3倍。SDAccel编译器自动生成的设计甚至比手动编码的RTL设计方案的性能还高,在某些情况下可高出20%之多。

SDAccel编译器可以自动对应用源代码实施一系列基础甚至高级的优化方案。下表列出了SDAccel编译器针对加速应用所进行的一系列优化。

优化

描述

分配

在硬件资源和性能之间实现最佳平衡

阵列优化

阵列整合/分区/重塑,以提高性能和利用率

数据打包(ocl矢量数据类型)

打包数据成员,以减少端口并提高性能

数据流

提取粗精度并行

流水线

提取细精度并行

平衡

平衡表达,以提高性能

循环整合

整合循环,以提高性能和利用率

循环扁平化

使循环嵌套扁平化,以提高性能

循环展开

展开部分或全部循环,以优化性能

流(ocl:流水线)

形成数据流,以提高性能和利用率

接口

高级接口综合

资源

资源选择,提高性能和利用率

内联

去除函数边界,暴露优化机会

实例化

函数实例化,实现更高性能

依赖性

内部和相互之间的依赖性提取

Bitwidthmin

比特宽度最小化,以提高性能和利用率

记录数学

高级浮点优化

ROM推理

只要可能,便可将复杂计算转化到ROM

SDAccel编译器针对加速应用所进行的一系列优化。

杨飞表示SDAccel采用的是已被1,000多名程序员广泛使用的基础编译器技术。SDAccel充分利用该编译器的功能,使软件开发人员能够利用新的或现有的OpenCL、C和C++ 代码创建高性能加速器,并针对计算搜索、图像识别、机器学习、编码转换、存储压缩和加密等各种数据中心应用中的存储器、数据流和流水线技术进行了精心优化。

杨飞表示,即使SDAccel与市场同类FPGA对比,效果也很突出,“这是因为我们专门针对FPGA开发的高层次综合工具,所以即使用同样的open CL语言,我们的效果也很突出。”如下图所示,用SDAccel开发环境开发的FPGA应用,其面积竟然比手动编写的代码还要好。

即使SDAccel与市场同类FPGA对比,效果也很突出

所以,有好的FPGA,还需要有好的开发工具,才能将其特性发挥出来,如下图所示,“用SDAccel开发环境让赛灵思FPGA在单位功耗性能和开发简便性方便实现了鱼与熊掌兼得的效果。”杨飞强调。“我们估计一个FPGA板卡相当于四个传统服务器。”
在单位功耗性能和开发简便性方便实现了鱼与熊掌兼得
在单位功耗性能和开发简便性方便实现了鱼与熊掌兼得

实际上,不仅是数据中心可以应用SDAccel开发环境,其他一些应用如工业、物流、医疗等与大数据处理相关的应用都可以应用到这个工具,杨飞表示随着高级工艺的采用,FPGA已经变得日益强大,赛灵思现在一个重点是降低FPGA的开发门槛,用以高级抽象工具拓展FPGA的用户群,赛灵思会推动以软件定义为主的产品系列,自今年5月推出SDNet软件定义规范环境后,现在又推出了SDAccel开发环境,未来还会推出更多SDX开发环境,目前SDAccel已经可以供货,了解更多信息请点击这里 china.xilinx.com/sdaccel 。