很久没有看FPGA了,本来想继续学习HLS,就上Xilinx的网站看了看。结果发现了SDx 开发环境,很新的一个东西。由于我对这方面了解不多,本篇博文仅仅只是资料的整合和介绍。

1.SDx开发环境

Xilinx官网这样解释SDx:SDx™ 是一种面向系统和软件工程师的开发环境。 SDx 让没有 FPGA 专业知识的系统和软件工程师也能通过使用高层次编程语言,来获益于带有业界标准处理器的可编程硬件的强大威力。SDAccel 是首个面向 OpenCL、C 和 C++进行架构优化的编译器,并结合了#库、开发板,可在FPGA上实现类似 CPU/GPU 的开发运行体验 。

    FPGA的结构,FPGA、GPU、CPU之间的优势劣势在我的FPGA学习之基本结构高层次综合(HLS)-简介中略有涉及,网上也有大量的资料。简单来说,FPGA是一种可编程的器件,采用HDL语言来编写改变其结构。其全并行等特性使得FPGA有极强的计算能力。但FPGA开发是困难的,之前的集成开发环境是ISE,通常采用VHDL或Verilog HDL编写代码。HDL,即硬件描述语言,所以这个时候是和软件工程师没什么关系的(不知道这样说对不对)。

后来主推Vivado,有了HLS(高层次综合),倒有几份文档是面向软件工程师的,但具体怎么样,我也不太清楚——我并没有使用过Vivado。但毫无疑问的是,Vivado不是面向“软件工程师”的。

由此看来,SDx开发平台对Xilinx应该具有很大的意义。而SDAccel是其中最新的一个组成部分(另一个是SDNet,“软”定义网络),Xilinx的对SDAccel描述如下

首个面向 OpenCL、 C 和 C++进行架构优化的编译器

2.FPGA计算

FPGA用于高效能计算,这个想法出项很长时间了。各大公司也进行了一些尝试,下一代计算设备CPU/GPU/FPGA:FPGA规模商用还需时日中提到了FPGA、CPU、GPU和DSP之间的对比,大体结果是GPU性能最强而FPGA具有更高的性能功耗比。文中还提到了微软利用FPGA对Bing数据中心进行加速的计划,以及Baidu在这方面的研究。

关于微软的项目,Microsoft, Baidu find speedier search results through specialized chips中有更详细的介绍。这一项目中利用了Altera的FPGA,文中写道Xilinx的V6系列FPGA曾经被尝试使用并被放弃。

置于百度,Xilinx官方给出的背景资料中提到了Baidu的研究。总结来说,FGPA计算在功率受限下具有很高的性能,可以用在数据中心的加速中。在Machine Learning中,FPGA在实现深度神经网络(Deep Neural Network,DNN)上有很好的表现。(百度采用Mid-range FPGAs,利用的是K7系列XC7K480T)

这一点点的优势的背后是巨大的劣势。首先,FPGA的计算能力不是最强的;其次,FPGA的开发环境不成熟,难度较大,时间周期长;其三,FPGA局限性大,支持性差。

3.SDAccel简介

本节内容主要来自或参考于SDAccel背景资料

这份文档的副标题是“Bringing The Best Performance/Watt to the Data Center”,也就是说这是对于功率受限的数据中心提出的,另一份白皮书中提到是“Tomorrow’s Data Center”这是其自身的定位。图中可以看出FPGA极高的效能比(不知道纵坐标具体指什么……)

文中指出开发者希望数据中心有以下几个特性:

  1. 高效能
  2. 完整的软件开发环境
  3. 利于升级的设计

然而这些正是SDAccel所能带给我们的,关于SDAccel有这样一则新闻赛灵思推出针对OpenCL、 C和 C++的SDAccel开发环境。SDAccel设计思路如下图,它强调的是“FPGA 上类似GPU/GPU的开发体验”。

背景资料中仅对SDAccel特性做了简要说明。

开发体验:CPU/GPU开发者可以通过重用或维护OpenCL,C,C++代码轻易将应用程序迁移到FPGA上。SDAccel报还一些基本的库(OpenCL built-ins, DSP, Video, and linear algebra libraries),同时Auviz还提供了OpenCV和BLAS。程序调试成型之前并不需要FPGA参与,之后需要进行RTL仿真

升级:SDAccel可以实现即时的硬件动态重配,FPGA硬件可复用,因此应用可以平滑的升级。

性能和总结:SDAccel生成的代码在某些方面甚至超过了手工编写的HDL code,和其他编译器相比较更是有巨大优势。

背景资料中并没有提供更多的信息,总结起来就是——Xilinx说他的产品很好。

4.其他

25倍说得很模糊,单词用的是“表现”。本文的标题取自Xilinx,如果从GFLOPs衡量的话,Xilinx官网给出了下面一个图(高性能计算应用)。图中采用K10进行对比,最新的K80在保持K10功耗下,计算能力大概变成了原来的两倍。Virtex7差不多是最新的  FPGA(20nm),因此FPGA相对于GPU的优势并不明显。

就仅有的资料而言,Xilinx对其作出了很多限制(譬如数据中心,功耗限制),无疑在这些方面FPGA有很大的优势。但前景到底如何呢?

SDAccel-FPGA将带来至多25倍单位功耗性能提升的更多相关文章

  1. 【笔记】直接使用protocol buffers的底层库,对特定场景的PB编解码进行处理,编码性能提升2.4倍,解码性能提升4.8倍

    接上一篇文章:[笔记]golang中使用protocol buffers的底层库直接解码二进制数据 最近计划优化prometheus的remote write协议,因为业务需要,实现了一个remote ...

  2. M内核迎来大BOSS,ARM发布Cortex-M55配NPU Ethos-U55 ,带来无与伦比的性能提升

    说明: 全球顶级嵌入式会展Embedded Word2020这个月底就开了,各路厂家都将拿出看家本领. 先回顾下去年的消息: 1.去年年初的时候ARM发布Armv8.1-M架构,增加了Arm Heli ...

  3. 查询性能提升3倍!Apache Hudi 查询优化了解下?

    从 Hudi 0.10.0版本开始,我们很高兴推出在数据库领域中称为 Z-Order 和 Hilbert 空间填充曲线的高级数据布局优化技术的支持. 1. 背景 Amazon EMR 团队最近发表了一 ...

  4. Web 应用性能提升 10 倍的 10 个建议

    转载自http://blog.jobbole.com/94962/ 提升 Web 应用的性能变得越来越重要.线上经济活动的份额持续增长,当前发达世界中 5 % 的经济发生在互联网上(查看下面资源的统计 ...

  5. Nacos 2.0 正式发布,性能提升 10 倍!!

    3月20号,Nacos 2.0.0 正式发布了! Nacos 简介: 一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. 通俗点讲,Nacos 就是一把微服务双刃剑:注册中心 + 配置中 ...

  6. 用一个性能提升了666倍的小案例说明在TiDB中正确使用索引的重要性

    背景 最近在给一个物流系统做TiDB POC测试,这个系统是基于MySQL开发的,本次投入测试的业务数据大概10个库约900张表,最大单表6千多万行. 这个规模不算大,测试数据以及库表结构是用Dump ...

  7. 重构、插件化、性能提升 20 倍,Apache DolphinScheduler 2.0 alpha 发布亮点太多!

    点击上方 蓝字关注我们 社区的小伙伴们,好消息!经过 100 多位社区贡献者近 10 个月的共同努力,我们很高兴地宣布 Apache DolphinScheduler 2.0 alpha 发布.这是 ...

  8. Git 2.7: 一个新的带来许多新特性和性能提升的主要版本

    在2.6版本发布两个月之后,Git 2.7发布.该版本带来了许多新特性以及性能的提升. 本文选取了Git 2.7带来的主要变化: git remote支持get-url子命令,可以显示指定远端的URL ...

  9. 在MongoDB中创建一个索引而性能提升1000倍的小例子

    在https://www.cnblogs.com/xuliuzai/p/9965229.html的博文中我们介绍了MongoDB的常见索引的创建语法.部分同学还想看看MongoDB的威力到底有多大,所 ...

随机推荐

  1. JDK自带工具一览表。妈妈再也不用担心你到处去下载小软件了~~

    原来JDK早早就给我准备好了要用到的工具..反编译,JVM性能监视.诊断. JDK(Java Development Kit)是Java程序员最核心的开发工具,没有之一. JDK是一个功能强大的Jav ...

  2. 快速解决mysql Lost connection to MySQL server at 'reading initial communication packet及can't connect to mysql server on 'localhost'

    今天在使用Navicat连一个远程mysql时,总是提示连接不成功,提示Lost connection to MySQL server at 'reading initial communicatio ...

  3. 烂泥:KVM安装Windows Server 2008 R2使用virtio硬盘

    本文首发于烂泥行天下. 在上一篇文章中,我们介绍了使用IDE硬盘来安装Windows Server 2008 R2,这篇文章我们来介绍使用virtio硬盘来安装Windows Server 2008 ...

  4. Python 元组知识点

    1.元组是一个有序的集合,2.元组和列表一样可以使用索引.切片来取值.3.创建元组后不能在原地进行修改替换等操作.4.元组支持嵌套,可以包含列表.字典和不同元组.5.元组支持一般序列的操作,例如:+. ...

  5. POJ 2823 Sliding Window

    Sliding Window Time Limit: 12000MSMemory Limit: 65536K Case Time Limit: 5000MS Description An array ...

  6. td内元素居顶,td元素不随高度的撑开而变位置

    如下图,右边内容变高了,左边元素位置就下降到居中 设置居顶不变的方法 <table width="200" border="1"> <tr&g ...

  7. 利用HttpListener创建简单的HTTP服务

    using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using ...

  8. 第23章 SEH结构化异常处理(2)_编译器对系统SEH机制的封装

    23.2 编译器层面对系统SEH机制的封装 23.2.1 扩展的EXCEPTION_REGISTRATION级相关结构:VC_EXCEPTION_REGISTRATION (1)VC_EXCEPTIO ...

  9. AC日记——搞笑世界杯 codevs 1060(dp)

    题目描述 Description 随着世界杯小组赛的结束,法国,阿根廷等世界强队都纷纷被淘汰,让人心痛不已. 于是有 人组织了一场搞笑世界杯,将这些被淘汰的强队重新组织起来和世界杯一同比赛.你和你的朋 ...

  10. Android应用中菜单(Menu)的位置显示问题

    http://blog.csdn.net/songjinshi/article/details/17381245 注意:为了适配4.0菜单能够横向显示,建议在activity中添加android:th ...