0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

将OpenCL编译到FPGA

李建设 来源:云汉007 作者:云汉007 2022-08-29 08:07 次阅读

异构计算是指不断增长的一类系统,其中应用程序在不同的处理器和加速器设备的混合上执行以最大化吞吐量。在这种系统上执行程序需要一种编程范式,该范式向应用程序开发人员提供一致的系统视图。OpenCL 框架是为解决异构计算系统的需求和挑战而创建的行业标准。

在最基本的层面上,OpenCL 框架为应用程序程序员提供了与设备供应商无关的平台定义和跨所有实现该标准的设备的单一内存模型。这些特性使 OpenCL 程序员能够专注于正在开发的应用程序的核心挑战,而不是特定计算设备的特定细节。

OpenCL 框架的第一个组件是平台,它定义了可用于执行程序的资源。在一个 OpenCL 平台中,总是有一个主机处理器和至少一个加速设备。主机处理器负责将作业分派给加速器以及启动主机/加速器内存传输。此主机始终使用 CPU 实现,加速器可以是 CPU、GPUFPGA。这些加速设备的控制是通过一组通用的 API 函数来实现的,这些 API 函数是 OpenCL 标准的一部分。

加速设备上的作业采用内核执行的形式。内核是运行在加速设备上的应用程序的计算功能。OpenCL 中的一个应用程序可能有一个或多个内核,每个内核的特点是表达一个数据并行操作。例如,图 1 显示了将在 CPU 上执行的程序转换为适合 OpenCL 的数据和任务并行表示。

poYBAGL0iA-AJB-WAACxDyvwwLI066.jpg

图 1:从顺序到 sata 和任务并行应用程序

在图 1 中代码的顺序版本中,函数 f、g 和 h 在“for”循环内执行。每个函数将数据集 X 和 Y 作为输入源并产生一个输出 T,它不会被“for”循环内的任何其他函数消耗。因此,代码的顺序版本中的循环可以分配给函数 f、g 和 h,以创建应用程序的任务并行表示,如图 1 的中心列所示。如果函数 f、g 和 h 的每次调用独立于上一个和下一个调用,则应用程序是任务和数据并行的,如图 1 的右侧列所示。函数 f、g 或 h 的每次调用代表加速设备执行的一个工作项。根据可用的计算资源,

除了为应用程序员提供与设备无关的数据并行编程模型外,OpenCL 还提供了统一的内存模型层次结构,如图 2 所示。

pYYBAGL0iBKAIurRAAC-Mg_PPqc376.jpg

图 2:OpenCL 内存模型

在模型的应用层,内存空间分为主机内存和设备内存。与设备相关的内存进一步分为三个层次结构,包括全局内存、本地内存和私有内存。全局内存由连接到设备的内存组件(如 SDRAM)创建。映射到全局内存的缓冲区的管理由主机代码应用程序通过使用 OpenCL API 函数来处理。OpenCL API 函数用于确定缓冲区的大小以及对缓冲区的读写访问。在 OpenCL 内存模型支持的所有内存类型中,请务必记住,全局内存是容量最大、延迟最长的内存,

OpenCL 和 FPGA

FPGA 可以在制造后针对不同的算法进行编程,如图 3 所示,具有执行逻辑操作的查找表 (LUT)、存储 LUT 结果的触发器 (FF) 以及元件之间的连接和 I/O 焊盘,用于将数据输入和输出 IC。当代 FPGA 架构包含额外的计算 (DSP)、数据存储 (BRAM)、高速串行收发器和片外存储器控制器块。这些元素的组合为 FPGA 提供了为给定软件工作负载实现自定义逻辑的灵活性。

poYBAGL0iBSAbTnrAADG3oMSFa0783.jpg

图 3:FPGA 的基本结构

在 OpenCL 的上下文中,由于内核代码的数据并行特性,FPGA 架构非常适合这种工作负载。与其他能够执行 OpenCL 内核的设备不同,FPGA 架构可以使用针对特定内核完全优化的内核进行定制,从而允许内核执行的并行性随 FPGA 设备的大小而扩展。

在加速器计算单元上执行的 OpenCL 应用程序内核。计算单元是指执行内核功能中的操作的处理器内核或加速器逻辑。

SHA-1 算法

SHA-1 算法是最常用的加密哈希函数之一。使用这些功能确保和检查数据完整性的能力已经成为在线签名和作为电子商务解决方案核心的安全套接字层 (SSL) 的基础。该函数非常适合 FPGA,因为它是通过 80 轮处理对 512 位数据集的与、异或、旋转、加法或移位操作组成的。每轮计算中使用的 512 位数据负载可以并行或块方式计算。

poYBAGL0iBeAfqgZAAC5wk9Cv6Q576.jpg

图 4:用于 SHA-1 的 FPGA 计算单元

SHA-1 功能的 FPGA 实现如图 4 所示。在此设计中,关键元素是创建自定义计算单元,以包含计算单个 SHA-1 所需的 80 轮处理。通过将所有 80 轮处理分组到同一个处理逻辑中,应用程序设计人员可以最大限度地减少与标准 CPU 实现所需的高速缓存或内存元素的交互。这反过来又增加了此功能的吞吐量并降低了维持所达到的吞吐量所需的功耗。下表总结了 FPGA 实现与 CPU 实现的优势:

pYYBAGL0iBqAdvi-AACSthKU7vw990.jpg

对于此比较,英特尔 Haswell CPU 有 12 个内核,能够执行任何 OpenCL 内核代码,但未针对任何特定工作负载进行优化。相比之下,FPGA 实现有 16 个内核优化为仅执行 SHA1 工作负载。加速器计算单元定制级别的差异直接转化为该工作负载的两个设备之间的性能差异。

Xilinx FPGA 结果是通过使用适用于 OpenCL、C 和 C++ 的 SDAccel 开发环境编译 SHA1 算法并在 Xilinx Virtex 7 器件上运行生成的二进制程序生成的。SDAccel 利用 FPGA 为数据中心应用程序加速提供高达 25 倍的性能功耗比,并结合了业界第一个支持 OpenCL、C 和 C++ 内核的任意组合的架构优化编译器,以及库、开发板和第一个完整的 CPU/GPU类似 FPGA 的开发和运行时经验。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21323

    浏览量

    593214
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10443

    浏览量

    206565
  • OpenCL
    +关注

    关注

    2

    文章

    47

    浏览量

    33126
收藏 人收藏

    评论

    相关推荐

    基于OpenCL标准的FPGA设计

    FPGA上使用OpenCL标准,与目前的硬件体系结构(CPU、GPU,等)相比,能够大幅度提高性能,同时降低了功耗。此外,与使用Verilog或者VHDL等底层硬件描述语言(HDL)的传统FPGA
    发表于 05-26 09:10 3994次阅读

    Altera OpenCL

    各位大牛晚上好,是这样的,小弟目前在做一个Altera OpenCL的工作,具体是OpenCL的kernel通过Altera提供的工具转换成aocx和Quartus工程,然后下载到FPGA
    发表于 03-11 20:32

    FPGA编译openCL内核文件出错

    ` 用openCL写了个机器学习算法,用a10gx的板子的BSP编译运行没问题,但是a10gx板子太贵了。 于是准备买DE10-Standard 来做研究,下了BSP在bashrc里改了文件后,编译
    发表于 04-18 17:30

    什么是OpenCL?面向FPGAOpenCL有什么优点?

      很多工程师朋友对OpenCL以及面向FPGAOpenCL很感兴趣,也有很多相关问题提出。这里发一篇小小的技术普及文章,以供大家参考学习,欢迎参考...  
    发表于 09-17 08:26

    opencl fpga 的仿真 有大神会吗。

    opencl 写好代码之后,现在没有fpga板,怎么仿真运行一下,求大神解答
    发表于 04-13 14:38

    Altera发布业界第一个面向FPGAOpenCL计划

    Altera公司(NASDAQ: ALTR)今天发布FPGA和SoC FPGA的开放计算语言(OpenCL™)标准开发计划。OpenCL标准是基于C语言的开放标准,适用于并行编程。Al
    发表于 11-16 16:12 614次阅读

    面向Altera FPGAOpenCL:提高性能和设计效能

    开放计算语言(OpenCL)编程模型与Altera的并行FPGA体系结构相结合,实现了功能强大的系统加速解决方案。面向OpenCL的Altera SDK为您提供了设计环境,工程师很容易在FPG
    发表于 11-06 14:56 1101次阅读

    用于OpenCL的英特尔FPGA SDK资料

    用于OpenCL的英特尔FPGA SDK
    发表于 03-22 15:02 8次下载

    C/C++/OpenCL 应用编译的SDSoC开发

    应用大比拼开擂 基于vivado HLS的帧差图像实现 基于FPGA的实时移动目标的追踪 类似嵌入式 C/C++/OpenCL 应用开发的体验 SDSoC 开发环境可为异构 Zynq SoC 及 MPSoC 部署
    发表于 05-21 14:16 2021次阅读

    如何建立OpenCL开发环境编译和执行DE1 SoC的示例项目的详细概述

    DE1 SoC是Altera片上系统(SOC)FPGA构建的一个健壮的硬件设计平台,它是Altera的OPENCL首选板合作伙伴计划的Altera认证委员会。本文介绍了如何建立OpenCL开发环境
    发表于 06-19 08:00 30次下载
    如何建立<b class='flag-5'>OpenCL</b>开发环境<b class='flag-5'>编译</b>和执行DE1 SoC的示例项目的详细概述

    针对OpenCL、C和 C++的SDAccel开发环境可利用FPGA实现数据中心应用加速

    系列的最新成员,将业界首款支持 OpenCL、C 和 C++ 内核任意组合的架构优化编译器、库、开发板完美结合在一起,在 FPGA 上首次实现了完全类似 CPU/GPU 的开发和运行时间体验。
    发表于 08-30 17:00 1045次阅读

    利用C/C++和OpenCLFPGA计算加速应用

    Xilinx与Nimbix公司合作,Nimbix公司是大数据和机器学习的异构加速器云的领先提供商,利用C / C ++和OpenCLFPGA计算密度创建下一代应用。
    的头像 发表于 11-29 06:11 3295次阅读

    如何使用OpenCL轻松实现FPGA应用编程

    应用能够有更高的性能,您需要熟悉如下介绍的硬件。另外,将会介绍编译优化选项,有助于将您的 OpenCL 应用更好的实现 RTL 的转换和映射,并部署到 FPGA 上执行。
    发表于 07-16 17:58 6069次阅读
    如何使用<b class='flag-5'>OpenCL</b>轻松实现<b class='flag-5'>FPGA</b>应用编程

    Intel Cyclone V 开发板OpenCL使用手册免费下载

    开发环境,以及如何编译和执行C5P的示例项目。请注意,OpenCL编码指令不在本文档的范围内,但用户可以参考Intel FPGA SDK for OpenCL Programming
    发表于 09-01 08:00 7次下载
    Intel Cyclone V 开发板<b class='flag-5'>OpenCL</b>使用手册免费下载

    使用OpenCL for FPGA设计200万点频域滤波器

      本文介绍如何使用 Altera OpenCL SDK for FPGA 设计 200 万点频域滤波器。所有功能验证均使用软件样式的仿真完成,并且每个硬件编译都能正常工作。我们没有打开硬件模拟器,也从不担心时序收敛。
    的头像 发表于 06-09 16:21 1192次阅读
    使用<b class='flag-5'>OpenCL</b> for <b class='flag-5'>FPGA</b>设计200万点频域滤波器