文档章节

采用OpenCL标准实现FPGA设计

DB_Terrill
 DB_Terrill
发布于 2017/09/12 10:45
字数 1561
阅读 11
收藏 1
点赞 0
评论 0

OpenCL标准简介

OpenCL应用程序含有两部分。OpenCL主程序是纯软件例程,以标准C/C++编写,可以运行在任何类型的微处理器上。例如,这类处理器可以是FPGA中的嵌入式软核处理器、硬核ARM处理器或者外置x86处理器,如图4所示。

   在这一主软件例程执行期间的某一点,某一功能有可能需要很大的计算量,这就可以受益于并行器件的高度并行加速功能,例如CPU、GPU、FPGA等器件。要加速的功能被称为OpenCL内核。采用标准C编写这些内核;但是,采用结构对其进行注释,以设定并行处理操作和存储器等级。图5中的例子对两个数组a和b进行矢量加法,将结果写回输出数组应答中。矢量的每一元素都采用了并行线程,当采用像FPGA这类具有大量精细粒度并行单元的器件进行加速时,能够很快的计算出结果。主程序使用标准OpenCL应用程序接口(API),支持将数据传送至FPGA,调用FPGA内核,传回得到的数据。

1Khronos集团网站对OpenCL标准进行了详细的介绍。

       与CPU和GPU不同,其并行线程可以在不同的内核中执行,而FPGA能够提供不同的策略。可以把内核功能传送到专用深度流水线硬件电路中,它使用了流水线并行处理概念,在本质上就是多线程的。这些流水线的每一条都可以复制多次,与一条流水线相比,提供更强的并行处理功能。如图5所示,可以通过级联功能单元实现矢量加法内核,在OpenCL描述中实现每一操作,进行复制以满足实际应用的吞吐量和延时要求。

       虽然所显示的只是一个简单表征,但每个功能单元都可以是深度流水线,以保证最终电路的工作频率足够高。此外,编译器可以建立电路来管理与外部系统的通信。在这个例子中,DDRx控制器和PHY连接至内核,使其能够高效访问片外阵列。类似的,PCI Express?(PCIe?)IP自动例化,连接至内核,这样,x86主机能够通过OpenCLAPI与FPGA加速器进行通信。

在FPGA上实现OpenCL标准的优势

       使用OpenCL描述来开发FPGA设计,与基于HDL设计的传统方法相比,具有很多优势。最显著的优势如图6所示。开发软件可编程器件的流程一般包括进行构思、在C等高级语言中对算法编程,然后使用自动编译器来建立指令流。

       这一方法可以与传统基于FPGA的设计方法相比。这里,设计人员的主要工作是对硬件按照每个周期进行描述,用于实现其算法。传统流程涉及到建立数据通路,如图7所示,通过状态机来控制这些数据通路,使用系统级工具(例如,SOPCBuilder、PlatformStudio)连接至底层IP内核,由于必须要满足外部接口带来的约束,因此,需要处理时序收敛问题。OpenCL编译器的目的是帮助设计人员自动完成所有这些步骤,使他们能够集中精力定义算法,而不是重点关注乏味的硬件设计。以这种方式进行设计,设计人员很容易移植到新FPGA,性能更好,功能更强,这是因为OpenCL编译器将相同的高级描述转换为流水线,从而发挥了FPGA新器件的优势。

案例:MonteCarloBlack-Scholes方法

       在金融市场上最重要的一个基准测试方法是通过Monte Carlo Black-Scholes方法计算期权价格。该方法基于对底层股票价格的随机仿真,以及数百万不同路径上的平均预期收益。图8以图形化的方式显示了这类仿真的一个例子。

       图9显示了进行这一计算的高级算法结构。首先采用Mersenne旋转随机数发生器来创建均匀分布的数值。将随机数序列送入逆正态累积密度函数,以产生正态分布序列。然后,使用几何布朗运动,这些随机数用于仿真股票价格的变化。在每一仿真通路的最后,记录看涨期权的收益,进行平均来产生收益预期值。整个算法通过大约300行的OpenCL代码来实现,可以从FPGA移植到CPU、GPU。

 

       利用针对Altera FPGA开发的OpenCL工作台,可以产生很好的基准测试结果,如表1所示。与相应的GPU相比,面向Stratix? IV FPGA EP4SGX530的OpenCL工作台在吞吐量上超过了CPU和GPU。与相应的GPU相比,在执行相同的代码时,FPGA解决方案不但提高了吞吐量,保守估计,功耗也只有其五分之一。速率和高功效相结合,降低了大计算量应用的功耗需求。

 

结论

       利用FPGA上的OpenCL标准,与目前的硬件体系结构(CPU、GPU,等)相比,能够大幅度提高性能,同时降低了功耗。此外,与使用Verilog或者VHDL等底层硬件描述语言(HDL)的传统FPGA开发方法相比,使用OpenCL标准、基于FPGA的混合系统(CPU+FPGA)具有明显的产品及时面市优势。Altera于2010年加入Khronos集团,为标准建设做出了积极贡献。

原文转自:http://www.ednchina.com/ART_8800501745_19_35499_AN_a996b8f4.HTM

本文转载自:http://www.ednchina.com/ART_8800501745_19_35499_AN_a996b8f4.HTM

共有 人打赏支持
DB_Terrill
粉丝 24
博文 120
码字总数 18616
作品 0
大连
高级程序员
GPU编程--OpenCL基本概念

本篇结构: 背景 OpenCL是什么 框架组成 基本概念 编写OpenCL程序的基本步骤 参考博文 一、背景 在过去利用GPU对图像渲染进行加速的技术非常成熟,因为GPU是典型的单指令多数据(SIMD)的体系...

w1992wishes ⋅ 05/23 ⋅ 0

苹果弃用 OpenCL 和 OpenGL ,OpenCL 或遭全面淘汰

随着昨天 MacOS 10.14 Mojave 的发布,苹果悄然证实,他们已弃用 OpenGL 和 OpenCL 。 在 MacOS 10.14 的更新文档中,苹果表示使用 OpenGL 和 OpenCL 构建的应用可以继续在 macOS 10.14 中运...

王练 ⋅ 06/06 ⋅ 0

【F3简介】一张图看懂FPGA-F3实例

近期,阿里云宣布全新一代FPGA云服务器F3正式上线,并且开通邀测。实现云上 FPGA 加速业务的快速研发、安全分发、一键部署和弹性伸缩能力。为人工智能产业、图片视频转码、基因计算提供强有力...

孟蓁蓁 ⋅ 05/10 ⋅ 0

为何GPU受到服务器厂商的热捧?

经过多年的尝试,图形处理单元(GPU)开始受到主流服务器厂商的重视,戴尔和IBM是第一批在高性能计算机(HPC)上采用GPU的一线服务器厂商。GPU通常用在桌面PC上,主要作为电子游戏的高速图形...

u011945809 ⋅ 04/12 ⋅ 0

异构计算加速平台有效满足AI及高性能计算业务需求

近日,致力于提供异构计算加速整体解决方案、业界领先的异构加速和业务卸载方案厂商——杭州加速云信息技术有限公司(简称:加速云)正式启动跨越北京、上海、成都、西安四大城市的 “加速新...

yssycz ⋅ 04/24 ⋅ 0

RenderScript高斯模糊等与图片处理/计算机视觉-Android

> RenderScript Google 官方RenderScript- https://developer.android.com/guide/topics/renderscript/compute RenderScript在3.0引入,而一些内置的compute kernel在JELLYBEANMR1中引入,为......

shareus ⋅ 05/03 ⋅ 0

Futhark 0.5.1 发布,小型全新的函数式编程语言

Futhark 0.5.1 已发布。 Futhark 是一个小型全新的函数式编程语言,可编译为高性能的 GPU 代码。使用静态类型、并行数据以及纯函数数组语言。该语言对编译器提前进行重度的优化,通过 OpenCL...

局长 ⋅ 06/03 ⋅ 0

FFmpeg 4.0.0 正式发布,多媒体处理工具合集

FFmpeg 4.0.0 已正式发布,代号 “Wu” ,更新亮点包括: MagicYUV 编解码器(实验性) Bitstream 过滤器,用于在 H.264,HEVC 和 MPEG-2 流中编辑元数据 TiVo ty/ty demuxer 原生 aptX 和 ...

王练 ⋅ 04/21 ⋅ 8

HPC高性能计算知识: 异构并行计算

当摩尔定律还是行业的铁律时,计算机编程几乎一直都是串行的,绝大多数的程序只存在一个进程或线程。大家还过着“我写个程序,性能达不到就睡个觉,等硬件工艺刷新硬件性能,性能就达标了”的...

btb5e6nsu1g511eg5xeg ⋅ 04/23 ⋅ 0

一文了解南京云栖阿里云重磅产品发布

关于数字化转型需要做什么事情?昨天,云栖大会·南京峰会期间,我们讲了很多案例。 近年来,在驱动中国的使命下,城市、交通、金融、工业、农业等各个领域都在不断创新。在这个过程当中,云...

阿里云头条 ⋅ 04/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周六乱弹 —— 假如你被熊困到树上

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》 《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》- 谢...

小小编辑 ⋅ 38分钟前 ⋅ 4

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 今天 ⋅ 1

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部