很久没有看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. Mongo 的相关增删改查

    1,Mongod 下载安装,请看https://www.mongodb.com/download-center 2,插入语句: MongoDB后台管理 Shell 如果你需要进入MongoDB后台管理 ...

  2. 计算机信息统计.vbs

    temp=0 set wshshell=wscript.createobject("wscript.shell") Set WshNetwork = WScript.Createo ...

  3. git一些常用设置

    用法:git config [选项] 配置文件位置    --global              使用全局配置文件    --system              使用系统级配置文件    -- ...

  4. 查看Ubuntu版本

    一.查看Ubuntu版本号 方法一 root@wiki:~# cat /etc/issue Ubuntu 14.04.1 LTS \n \l 方法二 root@wiki:~# sudo lsb_rel ...

  5. Java 如何有效地避免OOM:善于利用软引用和弱引用

    Java 如何有效地避免OOM:善于利用软引用和弱引用 想必很多朋友对OOM(OutOfMemory)这个错误不会陌生,而当遇到这种错误如何有效地解决这个问题呢?今天我们就来说一下如何利用软引用和弱引 ...

  6. 如何判断两个String是否是Anagrams_java实现

    Anagrams:是颠倒字母顺序的字符串 本文提供三个方法,分别分析时间空间复杂度 方法一:暴力遍历 时间复杂度:O(n^2) 方法二:基于排序算法,Sorting的时间复杂度是O(n*log(n)) ...

  7. uva 572 oil deposits——yhx

    Oil Deposits  The GeoSurvComp geologic survey company is responsible for detecting underground oil d ...

  8. 《TCP/IP详解 卷一》读书笔记-----TCP超时重传

    1.TCP提供的是可靠传输,它通过接收方发送一个确认报文ACK来提供这种可靠性.但是数据报文和确认报文都可能会丢失,所以TCP会给发出的数据报文设置一个时间,如果超时了则进行重传 2.Karn's A ...

  9. ZBrush中如何才能快速完成脸部雕刻(下)

      骨骼,是一门基础艺术,几百年来一直为伟大的艺术大师所研究,它曾经,也将一直是创作现实且可信角色的关键,提高骨骼知识更将大大提高雕刻技能. 查看更多内容请直接前往:http://www.zbrush ...

  10. 如何为自己的项目在pycharm中设置debug?

    比方说我们的某一个项目运行需要走这个指令: (MyObject)blaxon@debian:~/Desktop/checkmato$ python checkmato/nose_plugin/plug ...