xt860706的个人空间 https://blog.eetop.cn/235459 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

Altera的野望——OpenCL FPGA

已有 3196 次阅读| 2012-3-21 20:47 |个人分类:FPGA设计

  

去年11月Altera"悄悄的"发布了Altera面向FPGA的OpenCL计划,内容仅仅是一个网页和一份仅仅8页的白皮书,没有可以实现的工程。内容虽少,但是难掩Alter在可配置计算领域的野心。

OpenCL为何物?

OpenCL (Open Computing Language,开放计算语言) 是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。OpenCL由一门用于编写kernels (在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成。OpenCL提供了基于任务分割和数据分割的并行计算机制。传统上,OpenCL应用于CPU、GPU等通用设备,在OpenCL 1.2中,提供了对其他设备的支持。

FPGA它极强的可配置性能在很多领域发挥作用。随着工艺的提高,FPGA的功能也越来越强大,可以在某些领域替代CPU、GPU的计算功能。但是传统的FPGA设计极为复杂,不仅设计思路同在CPU、GPU上设计软件完全不同,还需要大量的考虑如约束等非常细节的物理底层问题。因为传统FPGA设计不仅门槛很高,而且设计周期也远长于纯软件设计。

如果能把OpenCL标准引入到FPGA中,开发人员利用OpenCL能够自然的描述在 FPGA 中实现的并行算法,其抽象级要比VHDL或者Verilog等硬件描述语言(HDL)高得多。

OpenCL标准简介

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

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

CPU与GPU的并行性来自于把并行线程在不同的内核中执行,而FPGA是把内核内核功能传送到专用深度流水线硬件电路中,使用流水线并行处理概念,而本质上就是多线程的。这些流水线的每一条都可以复制多次,与一条流水线相比,提供更强的并行处理功能。如图示,可以通过级联功能单元实现矢量加法内核,在 OpenCL描述中实现每一操作,进行复制以满足实际应用的吞吐量和延时要求。虽然所显示的只是一个简单表征,但每个功能单元都可以是深度流水线,以保证最终电路的工作频率足够高。此外,编译器可以建立电路来管理与外部系统的通信。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 0

    评论
  • 910

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-3 19:18 , Processed in 0.013725 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部