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

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

3天内不再提示

如何使用SLX FPGA优化人脸检测数据中心的OpenCL AI内核?

电子工程师 来源:虹科FPGA团队 作者:虹科FPGA团队 2021-05-08 14:55 次阅读

本案例介绍了如何使用Silexica的SLX FPGA优化人脸检测数据中心的OpenCL AI内核。

引言

FPGA正越来越多地被用作数据中心的协处理器。这一转变背后的驱动力是利用FPGA的并行特性的AI应用。Xilinx Alveo系列加速器卡使用PCI Express接口连接到x86处理器,在这个领域非常流行。对于这些加速器卡的编程,你可以使用自上而下的方法,从顶级的C/C++和OpenCL应用程序开始,然后向低级别的内核工作,或者使用自下而上的方法,将内核块编译成Xilinx对象(.xo),然后可以在以后的阶段连接成二进制。

与自顶向下的流相比,自底向上的流程有几个优点。(1) 它允许将内核的设计、验证和优化与主应用程序分开。(2) 它通过将设计分割成更小的组件,为内核的开发和优化提供更快的迭代周期。(3) 它有利于重复使用;一个(.xo)文件的集合可以像库一样被重复使用。

在本应用案例中,我们使用人脸检测应用作为参考设计,展示设计者在使用Vitis自下而上流程时,如何使用SLX FPGA来优化内核。请注意,同样的方法也适用于从头开始设计内核或从Vitis HLS导入现有内核。

开发流程

创建该应用需要使用Silexica和Xilinx的以下开发工具。

● SLX FPGA版本2020.4-sp1● VitisLibraries 2020.2版● Vitis高级合成2020.2版

● Vitis统一软件平台2020.2版

整个端到端流程如图1所示。该流程从创建一个新的SLX项目开始。但是,如果您有一个现有的Vitis HLS项目,SLX FPGA可以直接导入它。

54e32fa6-a9f6-11eb-9728-12bb97331649.png

图1:Vitis自底向上项目的SLX FPGA工作流程

一、创建并配置SLX FPGA项目

54baee24-a9f6-11eb-9728-12bb97331649.png启动SLX FPGA,点击“New SLX project”图标,启动项目创建向导。创建一个新的SLX FPGA项目,如图2所示。下一步是配置这个项目。

5536701c-a9f6-11eb-9728-12bb97331649.png

图2:创建一个新的SLX FPGA项目

当你创建一个新的项目时,配置编辑器会自动出现,但你也可以通过点击橙色的齿轮按钮随时调出它。如图3所示,将你的应用程序源文件拖放到项目的spec文件夹中。在本案例中,我们从Rosette基准1中抽取人脸检测应用。接下来,你需要指定FPGA部件号和构建选项。对于这个应用,我们的目标是Alveo U280 FPGA。在FPGA部件栏,选择xcu280-fsvh2892-2L-e。要设置构建选项,输入clean、build和run命令,如图3所示。对于‘make’项目,如图,请确认makefile没有使用硬编码编译器,而是使用(CC)和(CXX)环境变量来分别引用C和C++编译器。SLX将在不同的分析阶段用其专有的编译器覆盖这些变量。Run命令执行testbench(也包括在基准套件中),以确保功能的正确性,也用于分析应用程序的动态行为。

5560afda-a9f6-11eb-9728-12bb97331649.png

图3:配置一个新的SLX FPGA项目

54baee24-a9f6-11eb-9728-12bb97331649.png这些基本配置完成后,我们可以继续为我们的应用程序选择顶级硬件函数,并设置正确的接口。点击“函数映射”按钮,打开功能映射编辑器。如果你确定顶层硬件函数,检查它的可综合性问题,并使用函数映射编辑器中的右键菜单将其映射到FPGA上。或者,运行自动选择FPGA功能,让SLX自动选择顶层的硬件函数。对于这个人脸识别应用,我们选择face_detect_sw作为我们的顶级硬件函数。一旦正确选择了顶层硬件函数,函数映射编辑器将看起来像图4,所有映射到FPGA的函数将有一个红色边框。

557e236c-a9f6-11eb-9728-12bb97331649.png

图4:SLX FPGA函数映射编辑器

现在我们准备为这个函数选择接口。在函数映射编辑器中选择顶级硬件函数后,点击properties标签,用左侧的菜单打开接口选择,如图5所示。为所有数组和指针接口选择axi_m接口,为标量选择s_axilite接口。这将生成在Alveo加速器卡上使用Xilinx对象所需的接口pragmas。此外,SLX的优化引擎现在意识到了接口限制,并相应地选择了优化原则。

559d341e-a9f6-11eb-9728-12bb97331649.png

图5:SLX FPGA接口选择

在正确选择了所有接口后,我们现在设置使用SLX FPGA优化和生成pragmas。

二、在SLX FPGA中生成HLS pragmas

54baee24-a9f6-11eb-9728-12bb97331649.png

生成HLS pragmas有两个步骤:

1. 在FPGA中查找并并行化循环

2. 生成插入HLS注释的代码

在第一步中,SLX的优化引擎搜索可能的解决方案的设计空间,以确定最优的实用程序和参数集。设计空间包括:(1)循环的不同并行化选项,即针对不同展开因子采用流水线或unroll;(2)数组的多维分割和重构选项(完全分割或循环分割);

(3)函数层次结构:内联或阻塞。

对于这个特定的例子,这将导致大约1.32 x e19的设计点,SLX的优化引擎将在70秒内收敛到一个解决方案。

55cd78b8-a9f6-11eb-9728-12bb97331649.png

图6:SLX FPGA提示视图

图6显示了SLX FPGA提示视图。提示视图中的第四列和第五列显示了应用程序中不同函数和循环的CPU总成本和FPGA总成本。FPGA总成本是对特定功能或回路的延迟估计。这对于帮助开发人员集中精力进行优化特别有用。例如,第33行(图6)上的weekClassifier函数在纯软件实现中花费24.4%的CPU时间。然而,它对FPGA实现中的关键路径延迟的贡献仅为3.63%。

相比之下,在纯软件实现中,cascadeClassifier函数的第4行上的循环(图6)花费了79.9%的CPU时间,但贡献了97.2%的FPGA关键路径延迟。提示视图还突出显示了携带依赖关系的关键循环。请注意,SLX FPGA不认为所有的lcd都是相等的,并将可以忽略的lcd(例如,归纳和缩减变量)从关键的lcd中分离出来。这些信息可以帮助开发人员节省时间,使他们能够将精力集中在FPGA实现中真正重要的应用程序部分。

55de6cfe-a9f6-11eb-9728-12bb97331649.png

图7:显示自动编译插入的SLX FPGA代码生成向导单击“Generate HLS Code”按钮 将打开代码转换向导,如图7所示。在这里,用户可以检查生成的代码与原始版本的代码并选择/取消代码生成的pragmas,以便对实现进行微调。

三、在Vitis应用项目中导入Xilinx对象

54baee24-a9f6-11eb-9728-12bb97331649.png在一个SLX FPGA项目的hls文件夹包含一个Vitis hls项目SLX优化的源代码。我们使用VitisHLS打开这个项目,并将RTL导出为Xilinx对象,如图8所示。在导出到Vitis之前,我们需要添加Extern“C”包装器以确保C链接。

55f760b0-a9f6-11eb-9728-12bb97331649.png

图8:从Vitis HLS导出Xilinx对象

在Vitis工作空间中,创建一个新的应用程序,使用一个alveso U280卡作为目标设备,如图9所示。

56066d3a-a9f6-11eb-9728-12bb97331649.png

图9:在Vitis统一平台中创建应用程序项目创建项目之后,我们将.xo文件导入内核的src文件夹,如图10所示。导入.xo文件后,单击“添加硬件功能”按钮,并选择列表face_detect_sw。

562db9bc-a9f6-11eb-9728-12bb97331649.png

图10:在Vitis应用程序项目中导入内核开发人员现在可以利用加速的face_detect_sw内核创建更广泛的应用程序,该应用程序运行在x86主机上。

5655493c-a9f6-11eb-9728-12bb97331649.png

图11:Vitis Analyzer系统图

性能改进

在综合设计的基础上,对SLX优化后的内核与未优化前的内核的性能和资源利用率进行了比较。对于这个特殊的设计,我们允许SLX FPGA使用选定设备上的所有可用资源;但是,如果有必要,还可以添加其他约束。表1显示了结果的摘要。我们发现LUT增加3倍,延迟减少7.8倍,FF增加2.4倍,DSP块增加2.7倍。对于alveso卡来说,这种资源利用率的增加并不是一个大问题,因为所有资源的利用率仍然低于5%。如果需要更高的性能,SLXFPGA中可以提供大量额外的分析功能,以帮助指导设计者更快更有效地重构他们的代码。

结论

本案例展示了如何利用Vitis自下而上的内核流程,将SLX FPGA用于优化针对PCIe连接Alveo卡的内核。在这个例子中,SLX FPGA能够减少一个常用的人工智能内核的延迟,用于人脸检测。该方法可应用于大多数基于赛灵思的数据中心应用,包括亚马逊F1实例。无论是从头开始开发应用,还是重复使用现有的设计并根据需求进行定制,都可以应用这种方法。

原文标题:虹科方案 | 使用HLS优化人脸识OpenCL AI内核

文章出处:【微信公众号:FPGA技术支持】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

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

    关注

    1602

    文章

    21309

    浏览量

    593129
  • AI
    AI
    +关注

    关注

    87

    文章

    26424

    浏览量

    264030
  • Vitis
    +关注

    关注

    0

    文章

    144

    浏览量

    7154

原文标题:虹科方案 | 使用HLS优化人脸识OpenCL AI内核

文章出处:【微信号:HK-FPGA_Dep,微信公众号:FPGA技术支持】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    #mpo极性 #数据中心mpo

    数据中心MPO
    jf_51241005
    发布于 :2024年04月07日 10:05:13

    #mpo光纤跳线 #数据中心光纤跳线

    光纤数据中心
    jf_51241005
    发布于 :2024年03月22日 10:18:31

    是德科技推出AI数据中心测试平台

    是德科技近期宣布,针对蓬勃发展的AI和ML基础设施生态系统,隆重推出了全新的AI数据中心测试平台。该平台专为加速AI/ML网络验证与优化而设
    的头像 发表于 03-08 10:17 246次阅读

    #MPO预端接 #数据中心机房 #机房布线

    数据中心MPO
    jf_51241005
    发布于 :2024年03月01日 11:12:47

    是德科技推出AI数据中心测试平台旨在加速AI/ML网络验证和优化的创新

    2024年2月29日,是德科技(Keysight Technologies,Inc.)宣布,针对人工智能(AI)和机器学习(ML)基础设施生态系统,推出了 AI数据中心测试平台,旨在加速AI
    的头像 发表于 02-29 09:32 245次阅读
    是德科技推出<b class='flag-5'>AI</b><b class='flag-5'>数据中心</b>测试平台旨在加速<b class='flag-5'>AI</b>/ML网络验证和<b class='flag-5'>优化</b>的创新

    #永久链路 #信道测试 #数据中心

    数据中心
    jf_51241005
    发布于 :2024年02月23日 10:17:58

    #紧套光缆 #松套光缆 #数据中心

    数据中心光缆
    jf_51241005
    发布于 :2024年01月26日 09:44:11

    数据中心变“绿“要点有哪些?

    数据中心作为一个复杂的系统,存储着大量敏感信息和重要数据,又是能耗“大户”,需要应对不断提升的“绿”电、节能要求,全面及时的检测维护对于数据中心尤为重要,
    的头像 发表于 01-25 11:12 342次阅读

    #光缆水峰 #综合布线光缆 #数据中心

    数据中心光缆
    jf_51241005
    发布于 :2024年01月15日 09:43:26

    #预端接光缆 #24芯光缆 #数据中心

    数据中心光缆
    jf_51241005
    发布于 :2023年12月08日 11:01:21

    大模型时代,数据中心将转向何方?

    数据中心大模型
    脑极体
    发布于 :2023年11月22日 09:01:41

    数据中心为什么要部署FPGA

    点击上方 蓝字 关注我们 FPGA 芯片具有灵活性高、应用开发成本低、上市时间短等优势使其应用场景覆盖了包括工业控制、网络通信、消费电子、数据中心、汽车电子、人工智能等广泛的下游市场。 各大应用领域
    的头像 发表于 11-21 11:50 404次阅读

    数据中心为什么要部署FPGA

    FPGA 芯片在数据中心领域主要用于硬件加速,在云服务器厂商中已有广泛部署。数据中心使用 FPGA 芯片代替传统的 CPU 方案后,处理其自定义算法时可实现显著的加速效果。因此近年来,
    发表于 11-16 09:55 447次阅读
    <b class='flag-5'>数据中心</b>为什么要部署<b class='flag-5'>FPGA</b>?

    适用于数据中心AI 时代的网络

    十多年来,传统的云数据中心一直是计算基础设施的基石,满足了各种用户和应用程序的需求。然而,近年来,为了跟上技术的进步和对 AI 驱动的计算需求的激增,数据中心进行了发展。 本文探讨了网络在塑造
    的头像 发表于 10-27 20:05 249次阅读
    适用于<b class='flag-5'>数据中心</b>和 <b class='flag-5'>AI</b> 时代的网络

    AI智能呼叫中心

    对这些数据的深入分析,呼叫中心可以有效改进服务质量、优化流程并提升业绩,此外,AI智能呼叫中心还可以基于
    发表于 09-20 17:53