很久没有看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. JavaScript Patterns 4.7 Init-Time Branching

    When you know that a certain condition will not change throughout the life of the program, it makes ...

  2. linux 查看系统版本

    博客分类: linux LinuxRedHatDebianSuSE  几种查看linux版本信息的方法: uname -a cat /proc/version cat /etc/issue lsb_r ...

  3. PHP模拟发送POST请求之一、HTTP协议头部解析

    WEB开发中信息基本全是在POST与GET请求与响应中进行,GET因其基于URL的直观,易被我们了解,可POST请求因其信息的隐蔽,在安全的同时,也给开发者们模拟发送带来了麻烦.接下来的几篇博文中,我 ...

  4. hibernate多对多映射关系实现

    Course.hbm.xml: <?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC        &q ...

  5. Redis高级应用

    上一篇博文讲述了Redis的一些常用命令,可以对数据库及数据库服务器进行操作,本篇将讲述Redis的高级应用及配置 安全性 设置密码:修改redis.conf中的requirepass,在其后面添加密 ...

  6. 烂泥:SQL Server 2005数据库备份与恢复

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 服务器的迁移,因为业务使用的数据库是SQL Server 2005,所以就要首先对数据库进行备份. 备份可以分为手动备份和自动备份,我们先来介绍手动备份 ...

  7. java帮助文档下载

    JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和 ...

  8. 用命令测试安装好的OpenStack环境

    OpenStack三个节点icehouse-gre模式部署一文部署了一套OpenStack环境,接下来使用命令测试一遍. 首先要明确几个概念: 外网:可分配floating ip绑定到虚拟机,外部就可 ...

  9. MongoDB日志过大怎么办?

    MongoDB 日志文件过大怎么办? MongoDB的日志文件在设置 logappend=true 的情况下,会不断向同一日志文件追加的,时间长了,自然变得非常大. 解决如下:(特别注意:启动的时候必 ...

  10. TestNG之执行测试类方式

    TestNG提供了很多执行方式,下面做简单介绍. 1.XML指明测试类,按照类名执行,其中可以指定包名,也可指定无包名: 带包名,运行ParameterSample类和ParameterTest类 & ...