面向 OpenCL™ 的 英特尔® FPGA SDK 提供您开始设计开发所需要的工具。请浏览开发人员社区,找到帮助您成功实现设计的实例、开发平台和合作伙伴。

 

相关链接

视频

采用 OpenCL 实现光流程和行人探测


采用 OpenCL 和 FPGA 以及我们的低成本、低功耗 SoC 开始工作,加速运动估算和行人探测算法。

 

 

采用神经网络实现物体探测和识别


了解我们的合作伙伴 iAbra 怎样在 FPGA 上使用 OpenCL,通过卷积神经网络算法演示机器学习,以加速物体探测和识别。

 

 

 

在我们的 SoC 上使用 OpenCL,提高单芯片解决方案的功效


了解 OpenCL 是怎样加速光线跟踪算法的性能的。在这一演示中,我们对比了所编写代码的性能,一种是只运行在嵌入式 ARM® Cortex®-A9 处理器上,另一种使用 ARM 处理器作为主机,在Cyclone® V FPGA 中进行了 FPGA 加速。

 

OpenCL 统一的异构编程

 

 

观看 OpenCL 怎样为异构计算提供统一的平台。在这一演示中,我们将为图形处理单元 (GPU) 编写的 NVIDIA 代码重新定位到 Stratix® V FPGA 上。

 

 

 

采用 OpenCL,卸载到 FPGA 中提高算法性能

 

观看 OpenCL 是怎样加速 Mandelbrot 算法性能的,这是一种需要大量计算的浮点迭代算法。

 

 


 

 

英特尔 FPGA OpenCL 应用开发者提供服务、软件和其他知识产权 (IP),有助于增强您基于 OpenCL 的产品开发。英特尔的开发合作伙伴在很多应用领域有丰富的经验,包括:

  • 高性能计算
  • 金融交易、仿真和分析
  • 国防、情报和航空航天
  • 图像处理、医疗系统和生物信息
  • 石油和天然气勘察计算
 

设计实例

下面的实例演示了怎样在 OpenCL 中通过其相应的主应用程序来描述各种应用,您可以在支持面向 OpenCL 的 英特尔 FPGA SDK 的 FPGA 电路板主机上进行编译并执行。

基本实例

设计实例 特性 优点 说明

Hello World

 

  • OpenCL 应用程序接口 (API),初始化器件并运行内核
  • 开始设计
这一简单的设计实例演示了一个基本 OpenCL 内核,它包括了一个 printf 调用及其相应的主程序。

Vector Addition

 

  • OpenCL API
  • 在多个器件上划分一个大问题
  • OpenCL 事件和事件分析
  • 开始设计
这一简单的设计实例演示了一个基本矢量加法 OpenCL 内核及其相应的主程序。
Multithread
Vector Operation
  • 多线程主机
  • 高级主机代码
两个主机线程启动两个同时内核。
OpenCL库
  • OpenCL库
  • 高级内核代码

使用包含Verilog和VHDL代码的OpenCL库来实现自定义函数的示例设计。

网络平台实例

计实例 特性 优点 说明

OPRA FAST 解析器

 

  • 一个工作项目内核
  • I/O 通道
  • 低延时
  • 10G 链路饱和
这一设计实例演示了高频交易算法中常用的流解析器。解析器接收 OPRA FAST 数据流,分解字段以便上游使用。向您展示了怎样高效的处理流消息,实现 10G 链路饱和。

HPC 平台实例

设计实例 特性 优点 说明

通道器

 

  • 内核通道
  • 多个同时内核
  • 一个工作项目内核
  • 性能
  • 采用内核通道开始工作
这一设计实例演示了使用 OpenCL 的一个高性能通道器设计。通道器结合了多相滤波器块 (PFB) 和快速傅里叶变换,减小了最终频谱的频谱泄漏效应。
文档过滤
  • 使用24位整数
  • 性能
本设计示例演示了使用Bloom过滤器进行高性能文档过滤。

有限差分计算 (3D)

 

  • 单精度浮点优化
  • 一个工作项目内核
  • 进行优化以减少对冗余存储器的使用
  • 性能
这一设计实例演示了使用 OpenCL 的一个高性能3D有限差分仅特征位计算。介绍了怎样高效的描述一个滑动窗口数据重用模式。

FFT (1D)

 

  • 单精度浮点优化
  • 一个工作项目内核
  • 性能
这一设计实例演示了使用 OpenCL 实现高性能 1D 4 基数复数快速傅里叶变换 (FFT) 以及快速傅里叶反变换 (FFT) 引擎。这一实例采用了高效的滑动窗口数据重用模式。

片上 FFT (1D)

 

  • 单精度浮点优化
  • 内核通道
  • 优化存储器访问
  • 性能
  • 采用内核通道开始工作
这一设计实例是高性能实现一个一百万点的FFT。这么大规模的FFT无法完全在 FPGA 中实现,这一实例演示了怎样高效的管理存储器访问。

FFT (2D)

 

  • 单精度浮点优化
  • 内核通道
  • 存储器访问模式优化
  • 多个同时内核
  • 一个工作条目和 NDRange 内核混合
  • 性能
  • 采用内核通道开始工作
这一设计实例演示了使用 OpenCL 实现高性能 2D 4 基数复数 FFT/IFFT 引擎。这一引擎面向大规模问题 (默认1024x1024),使用了全局存储器来存储中间变换值。这一实例的一个亮点是在全局存储器中高效的进行矩阵变换。

Gzip 压缩

 

  • 一个工作项目内核
  • 类似流的处理
  • 提供实现及其结果的公开论文
  • 高性能 (相对于CPU、RTL、ASIC)
  • 可参数赋值的性能和压缩质量
这一设计实例展示了使用面向 英特尔 FPGAs 的 OpenCL 来实现高性能 Gzip 压缩。

JPEG 解码器

 

  • 一个工作项目内核
  • 内核通道
  • 叠加存储器传送和内核调用
  • 可视输出
  • 性能可扩展
  • 采用内核通道开始工作
这一设计实例展示了一个高性能 JPEG 解码解决方案。

Mandelbrot 分形渲染

 

  • 双精度浮点优化
  • 多个设备划分
  • 可视输出
  • 性能可扩展
这一设计实例包括一个实现 Mandelbrot 分形融合算法的内核,在屏幕上显示结果。

矩阵乘法

 

  • 单精度浮点优化
  • 本地存储器缓冲
  • 编译器优化
  • 多个器件执行
  • 性能可扩展
  • 采用优化方法开始工作
这一实例介绍了发挥计算固有的数据重用优势,使用循环块优化基本矩阵乘法运算。

Monte Carlo Black-Scholes 亚洲期权定价

 

  • 双精度浮点优化
  • 内核通道
  • 多个器件执行
  • 多个同时内核
  • 可扩展
  • 高功效性能
  • 采用内核通道开始工作
这一设计实例实现了亚洲期权定价的 Monte Carlo Black-Scholes 仿真。这一实例介绍了通过 扩展渠道供应商,怎样同时运行多个内核,每一个执行仿真的不同部分 (随机数发生、通路仿真和累加) 并进行通信。

Sobel 滤波器

 

  • 整数算术
  • 一个工作项目内核
  • 高效的 2D 滑动窗口行缓冲
  • 可视输出
  • 性能可扩展
这一设计实例展示了采用 OpenCL 实现的 Sobel 滤波器无缝软件解决方案,对图像进行边沿探测,在屏幕上显示过滤后的最终图像。

时域 FIR 滤波器

 

  • 单精度浮点优化
  • 高效的 1D 滑动窗口缓冲实现
  • 一个工作项目内核
  • 优化方法
  • 性能
  • 采用优化方法开始工作
这一设计实现了 HPEC 挑战基准测试套装 的时域有限冲击响应 (FIR) 滤波器基准测试。这一设计实例很好的展示了 FPGA 怎样实现比图形处理单元 (GPU) 体系结构性能更好的浮点FIR滤波器。

视频下转换

 

  • 内核通道
  • 多个同时内核
  • 存储器访问模式优化
  • 性能
  • 采用内核通道开始工作
这一设计实例实现了一个视频下转换器,处理 1080p 输入视频,以每秒 110 帧输出 720p 视频。这一实例使用了多个内核来高效的读写全局存储器。

Cyclone® V SoC 平台实例

设计实例 特性 优点 说明

多功能打印机误差扩散

  • 一个工作项目内核
  • 滑动窗口设计模式
  • 多功能打印机系统的组成
  • 性能
这一设计是内核打印机流水线的一部分。它实现了一种 Floyd Steinberg 误差扩散算法。内核处理 CMYK 图像,对每一像素进行半调和处理,产生等价的图像。这一输出是在打印机内部将其送到激光系统之前图像处理的最后一级。这一实例还提供了白皮书,“使用 OpenCL,通过 FPGA 加速多功能打印机图像处理”。

光流程

  • 一个工作项目内核
  • 滑动窗口设计模式
  • 减少资源使用的方法
  • 可视输出
  • 性能
这一设计实例是 Lucas Kanade 光流程算法的 OpenCL 实现。在  Cyclone V SoC 开发套件上展示了一个密集、非迭代、非椎体版本,窗口大小是 52x52,每秒在 80 帧以上。

OpenCL 和 OpenCL 标识是苹果有限公司的商标,使用时经过了 Khronos 的授权。

 

* 产品基于公开的 Khronos 规范,通过了 Khronos 一致性测试过程。可以在 www.khronos.org/conformance 上找到目前一致性状态的信息。

 

为发挥 FPGA 的灵活性,实现各种可定制硬件体系结构,我们引入了参考平台这一概念,实现更好的 “开箱即用” 式体验,完成 OpenCL 评估,建立定制 OpenCL 应用,开发采用了 FPGA 加速器的定制电路板。参考平台同时含有硬件和软件层,支持参考设计与电路板进行通信。

传统的 OpenCL 模型有一个主机,通过 Express® (PCIe®) 将数据传送给加速器系统。对于高性能计算 (HPC) 平台,系统需要大量的本地存储块,处理主机发送给加速器的数据。这些应用需要大量的存储器带宽,系统中计算能力是最重要的。这一平台是 OpenCL 加速器的标准平台。

要开始评估标准 HPC 平台体系结构,您能够:

  • 下载 能够运行在 HPC 平台上的参考设计,学习 OpenCL 应用开发流程
  • 通过我们的英特尔 FPGA 优选电路板供应商电路板之一下载 HPC 平台
  • 点击下面的标识,从我们的英特尔 FPGA 优选电路板供应商那里购买支持 HPC 平台的商用货架 (COTS) 电路板
BittWare Pico Computing
Nallatech

Terasic

GIDEL

如果需要学习怎样使用参考平台来开发自己的定制电路板,请参考下面的 "定制" 标签。

网络平台源自传统的 OpenCL 模型,从 PCIe 命令和状态通路中提取出了数据通路。现在使用 I/O 通道将数据送入内核,主机不需要与两个 10 Gb 用户数据报协议 (UDP) 端口进行交互。这种流体系结构支持主机配置数据通路流水线,与此不同的是,数据处理通路延时要比传统的 FPGA 开发人员所使用的小很多。使用这一平台的应用更关注获得低延时结果。

要开始评估低延时网络平台体系结构,您能够:

  • 下载 能够运行在网络平台上的参考设计,学习 OpenCL 应用开发流程
  • 通过我们的英特尔 FPGA 优选电路板供应商电路板之一下载网络平台
  • 请点击下面的标识,从我们的英特尔 FPGA 优选电路板供应商那里购买支持网络平台的 COTS 电路板
BittWare Nallatech

SoC 平台类似于传统的 OpenCL 模型,具有共享全局存储器,用于在 ARM® 主机和 FPGA 加速器之间传送数据,在这一情形中,是相同的数据包。还有可选版本的体系结构,在 FPGA 加速器侧增加了 Scratch DDR3 SDRAM 接口。

要开始评估 Cyclone® V SoC 平台,您能够:

  • 下载 能够运行在网络 SoC 平台上的参考设计,学习 OpenCL 应用开发流程
  • 下载 英特尔 FPGA 面向 OpenCL 的 SDK,它随 Cyclone V SoC 的 SoC 参考平台一同发售
  • 从下面列出的我们的英特尔 FPGA 优选电路板供应商那里购买支持网络平台的 COTS 电路板
Terasic  

相关链接

虽然这些现有的分类中有 FPGA 加速器体系结构会比较方便,但并不是必须的。这些参考平台是帮助您开发自己定制 FPGA 的起点。从现有的 SoC 或者网络平台开始,按照您自己的需要来去掉或者修改组件接口,重新开发它。这使用了传统的 FPGA 设计来建立 OpenCL 内核的 “I/O 环”,与您定制电路板上的 I/O 接口进行通信。

为能够开发自己的定制 FPGA 加速器电路板,您需要一些必要的准备。从空白模板开始开发定制电路板支持包时,可以采用定制平台工具包。

 

文档

 

定制平台工具包:  Windows 或者 Linux 下载

  • 平台原始模板
  • 电路板测试内核,练习 I/O 接口。
  • MMD 头文件,开始开发驱动
  • HPC 平台移植文本文件 (来自 13.1 版)

从现有平台开始并修改它时,这里提供了目前可以使用的参考平台:

 

Stratix® V 网络参考平台:: s5_net (w/ PLDA UDP 堆栈):

 

Cyclone® V SoC 参考平台

几家英特尔合作伙伴已经开发了电路板,以评估模式或者全产品的方式,为方便购买其电路板而提供参考平台。这些第三方产品电路板按照英特尔 FPGA 面向 OpenCL 的优选电路板合作伙伴计划的严格要求进行了测试。只有经过优选的电路板才适合最新的英特尔 FPGA 器件体系结构和设计软件。英特尔与这些选出的合作伙伴密切合作,进行了 9,000 多次回归测试,保证了他们的电路板一直能够满足这些标准。面向 OpenCL 的英特尔 FPGA 优选电路板一般含有以下组成:

  • 专用 OpenCL 电路板设计文件 (包括平台)
  • Quartus® Prime 开发套件版软件 (1 年评估许可)
  • 面向 OpenCL 的英特尔 FPGA SDK 许可
  • 参考设计
  • 文档

第三方电路板

可以直接从英特尔 FPGA 优选电路板合作伙伴那里购买第三方优选电路板。对于每一认证电路板的许可,不同的合作伙伴会有不同的许可条款和条件。第三方合作伙伴仔细开发了面向 OpenCL 的英特尔 FPGA 优选电路板,尽可能保证最佳质量。如果查出问题来自优选电路板,由合作伙伴负责解决这些问题。如果问题出在英特尔 FPGA 面向 OpenCL 的 SDK,英特尔 FPGA 会提供相应的 工程支持 。

 

质保

对于英特尔 FPGA 面向 OpenCL 的 SDK 第三方优选电路板,英特尔不提供质保。对于合作伙伴提供的电路板,英特尔不提供任何质保,不论是明确的还是隐含的,包括,但不限于,对销售产品的隐含质保,也适用于特殊目的、所有权和非侵权。英特尔 FPGA 优选电路板合作伙伴会提供对设计性能和功能的保证和担保。请联系各家合作伙伴,了解详细信息。

优化培训

 

OpenCL 优化方法:安全哈希算法 (SHA-1) 实例 (7 分钟)

这一培训简要介绍了针对 FPGA 来优化 OpenCL 实现能够采用的优化方法,使用了安全哈希算法 (SHA-1) 作为实例。

 

OpenCL 优化方法:图像处理算法实例 (8 分钟)

这一培训简要介绍了针对 FPGA 上的 OpenCL 实现图像处理算法时可以采用的体系结构优化方法。

 

单线程和多线程内核对比 (17 分钟)

理解循环流水线和并行线程之间的不同,知道什么时候应该使用单线程 (Task) 和多线程 (NDRange) 流水线。

 

面向 OpenCL 的英特尔 FPGA SDK 优化和仿真流程 (6 分钟)

了解您怎样采用仿真器和详细优化报告特性,优化 FPGA 加速应用程序。

 

怎样做到减少 (PDF)

 

对存储器访问要仔细 第 1 部分 (PDF)

 

对存储器访问要仔细 第 2 部分 (PDF)

 

面向英特尔 FPGAs 优化 OpenCL (1 天)

这一培训的重点是编写针对英特尔 FPGAs 进行了优化的内核函数,包括手动操作练习。

 

OpenCL 培训

 

软件编程人员使用 OpenCL 实现 FPGA 加速入门 (23 分钟)

这一培训介绍您使用 OpenCL 面向 FPGA 来建立定制加速系统的方法,其功耗只是竞争加速器的五分之一,还介绍了 FPGA 成为加速软件执行重要资源的发展趋势,以及 OpenCL 怎样帮助软件开发人员来使用它们。

 

FPGA 与 GPGPU (21 分钟)

请观看这一简短的视频,了解 FPGA 与 GPGPU 相比怎样提供高功效加速功能,而且限制更少,更灵活。基于其相对于 GPGPU 固定体系结构的灵活性,我们对比了解决问题的方法。

 

英特尔 SoC FPGA 上的 PenCL (Linux 主机)

第 1 部分 – 工具下载和设置 (5 分钟)

第 2 部分 – 采用仿真器运行矢量加法实例 (4 分钟)

第 3 部分 – SoC FPGA 内核程序和主代码编译 (4 分钟)

第 4 部分 – 运行时环境设置 (7 分钟)

这些培训课程帮助您在 Linux 环境中开始 SoC 上的 OpenCL 设计。

 

采用 OpenCL 进行并行计算入门 (30 分钟)

简要了解 OpenCL 标准,以及使用英特尔 OpenCL 解决方案的优势。

 

为英特尔 FPGAs 编写 OpenCL 程序 (1 小时)

理解 OpenCL 标准基础,学习编写简单的程序。

 

在 英特尔 FPGAs 上运行 OpenCL (30 分钟)

了解面向 OpenCL 的英特尔 FPGA SDK,学习在英特尔 FPGAs 上编译并运行 OpenCL 程序。

 

为面向 OpenCL 的英特尔 FPGA  SDK 开发定制平台 (1 小时)

学习怎样建立定制电路板支持包,用在您的电路板上以及面向 OpenCL 的 英特尔 FPGAs SDK 上。

 

采用 OpenCL Workshop 进行并行计算 (1 天)

简要了解这一培训的并行计算、OpenCL 标准和面向 FPGA 的 OpenCL 设计流程。该培训的重点并不是编写内核,而是介绍为硬件加速建立 OpenCL 环境的 FPGA 相关部分。