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

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

3天内不再提示

RapidStream:FPGA HLS设计的并行物理实现

SSDFans 来源:SSDFans 作者: EVE 2022-05-25 09:50 次阅读

FPGA的布局布线软件向来跑得很慢。事实上,FPGA供应商已经花了很大的精力使其设计软件在多核处理器上运行得更快。

最近,在ACM的FPGA 2022会议上发表了一篇题为“RapidStream: FPGA HLS设计的并行物理实现”的论文,论文中描述了一种非常有趣的方法,通过FPGA设计软件推动HLS设计更快地运行在多核处理器上。

这篇论文由UCLA、AMD-Xilinx、根特大学和康奈尔大学的研究团队撰写,描述了RapidStream自动分区算法,将数据流设计分割成多个“island”,在划分的island之间插入“anchor regions”,然后通过anchor regions中的寄存器将每个island的信号连起来整合到整个设计中。

所有这些划分和拼接背后的目的是将HLS设计分割成小块,交付给现代服务器中的多个核心。这种策略已经有悠久的历史,现在被用于加速FPGA的开发。

这个过程有三个主要的HLS级约束:

1、非重叠分区——并行化不同island的物理实现;

2、流水线化的island间连接——每个island间连接都流水线化,以满足时序要求;

3、直接连接——每个island只能与相邻的island直接连接。当并行化设计布局布线时,这个约束是至关重要的。

(注意:这些约束与用于控制逻辑综合的各种约束完全不同,它处于一个更高的层次。)

RapidStream的开发者将数据流设计定义为一组并行处理元素(processing element,简称PE)和一组根据设计的数据流需求将PE连接起来的FIFO。PE内部可以很复杂,但只能通过FIFO接口与其他PE进行数据通信

如上所述,RapidStream将FPGA fabric划分为两种region:大小相同的region和在相邻region之间以窄列和行放置的anchor region。有趣的是,RapidStream似乎是专门为AMD-Xilinx Virtex UltraScale+ FPGA构建的,这是由FPGAchiplet(AMD-Xilinx语言中的超级逻辑区域,简称SLR)制成的2.5D器件。

a247143c-dbbf-11ec-ba43-dac502259ad0.png

这篇论文包含了几个描述RapidStream工作性能的图表。下图显示了在分区后,六种不同的数据流设计与没有分区的流水线/非流水线版本时钟速率的比较。

a2b9d65c-dbbf-11ec-ba43-dac502259ad0.png

从上图可以看出,RapidStream比所有非流水线版本的时钟速率更高。这是意料之中的,因为流水线是FPGA时钟速度改进的核心。然而,六种情况中,有五种情况RapidStream的结果比相同设计的流水线RTL版本要好,这个结果要引起我们的注意。

下面是布局布线的时间结果对比:

a33394ce-dbbf-11ec-ba43-dac502259ad0.png

RapidStream的布局布线运行时间比未分区设计的结果要好得多。这是因为RapidStream可以将每个分区送给不同的处理器核心来布局布线。

虽然FPGA供应商试图让布局布线算法在多核处理器上工作得更快,但RapidStream的开发人员根据经验发现,如果FPGA设计没有分区,在超过两个处理器核心上运行AMD-Xilinx Vivado设计工具时并没有太大改善。

如果有读者正在用FPGA开发HLS设计——特别是AMD-Xilinx FPGA,那么应该会对RapidStream感兴趣。更细节的内容可以在GitHub上找到。

原文标题:HLS分区加速FPGA布局布线!

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

审核编辑:汤梓红

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

    关注

    1602

    文章

    21320

    浏览量

    593199
  • Xilinx
    +关注

    关注

    70

    文章

    2121

    浏览量

    119373
  • 布局布线
    +关注

    关注

    1

    文章

    82

    浏览量

    15120
  • HLS
    HLS
    +关注

    关注

    1

    文章

    126

    浏览量

    23683

原文标题:HLS分区加速FPGA布局布线!

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何使用FPGA驱动并行ADC和并行DAC芯片?

    ADC和DAC是FPGA与外部信号的接口,从数据接口类型的角度划分,有低速的串行接口和高速的并行接口。
    的头像 发表于 02-22 16:15 2167次阅读
    如何使用<b class='flag-5'>FPGA</b>驱动<b class='flag-5'>并行</b>ADC和<b class='flag-5'>并行</b>DAC芯片?

    AMD-Xilinx的Vitis-HLS编译指示小结

    ;j++) { b = 2; } } 由于这条指令的应用条件十分苛刻,因此很少使用。一般直接通过代码重构的方式对连续循环进行优化。 参考文档 官方vitis-hls的ug1399文档 FPGA并行编程 【流水线】
    发表于 12-31 21:20

    如何用HLS实现UART呢?

    UART 是一种旧的串行通信机制,但仍在很多平台中使用。它在 HDL 语言中的实现并不棘手,可以被视为本科生的作业。在这里,我将通过这个例子来展示在 HLS实现它是多么容易和有趣。
    的头像 发表于 11-20 09:50 354次阅读
    如何用<b class='flag-5'>HLS</b><b class='flag-5'>实现</b>UART呢?

    如何用HLS实现UART

    UART 是一种旧的串行通信机制,但仍在很多平台中使用。它在 HDL 语言中的实现并不棘手,可以被视为本科生的作业。在这里,我将通过这个例子来展示在 HLS实现它是多么容易和有趣。
    的头像 发表于 11-20 09:48 298次阅读
    如何用<b class='flag-5'>HLS</b><b class='flag-5'>实现</b>UART

    使用Vivado高层次综合(HLS)进行FPGA设计的简介

    电子发烧友网站提供《使用Vivado高层次综合(HLS)进行FPGA设计的简介.pdf》资料免费下载
    发表于 11-16 09:33 0次下载
    使用Vivado高层次综合(<b class='flag-5'>HLS</b>)进行<b class='flag-5'>FPGA</b>设计的简介

    基于FPGA的ARM并行总线设计原理

    电子发烧友网站提供《基于FPGA的ARM并行总线设计原理.pdf》资料免费下载
    发表于 10-10 09:31 0次下载
    基于<b class='flag-5'>FPGA</b>的ARM<b class='flag-5'>并行</b>总线设计原理

    Vitis HLS:使用任务级并行性的高性能设计

    电子发烧友网站提供《Vitis HLS:使用任务级并行性的高性能设计.pdf》资料免费下载
    发表于 09-13 17:21 0次下载
    Vitis <b class='flag-5'>HLS</b>:使用任务级<b class='flag-5'>并行</b>性的高性能设计

    Vitis HLS相关问答详解

    需要手工在 C++ 代码里明确指定可并行执行的任务(用 task,添加头文件 hls_task.h),同时可并行执行的 task 接口(对应 C++ 函数的形参)必须是 stream 或 stream_of_blocks。
    的头像 发表于 08-11 11:23 409次阅读

    HLS-1Hin人工智能训练系统

    连接器)。外部以太网链路可以连接到任何交换层次结构。Suchconfiguration可以进行优化,以大规模实现textra大型模型并行性,并可以轻松处理数据并行性或模型和数据并行性的
    发表于 08-04 06:06

    基于HLS之任务级并行编程

      HLS任务级编程第一篇文章可看这里: HLS之任务级并行编程 HLS的任务级并行性(Task-level Parallelism)分为两
    的头像 发表于 07-27 09:22 796次阅读
    基于<b class='flag-5'>HLS</b>之任务级<b class='flag-5'>并行</b>编程

    浅析HLS的任务级并行

    HLS的任务级并行性(Task-level Parallelism)分为两种:一种是控制驱动型;一种是数据驱动型。
    的头像 发表于 07-27 09:21 621次阅读
    浅析<b class='flag-5'>HLS</b>的任务级<b class='flag-5'>并行</b>性

    调用HLS的FFT库实现N点FFT

    HLS中用C语言实现8192点FFT,经过测试,实验结果正确,但是时序约束不到100M的时钟,应该是设计上的延时之类的比较大,暂时放弃这个方案,调用HLS中自带的FFT库(hls:f
    的头像 发表于 07-11 10:05 657次阅读
    调用<b class='flag-5'>HLS</b>的FFT库<b class='flag-5'>实现</b>N点FFT

    调用HLS的FFT库实现N点FFT(hls:fft)

    HLS中用C语言实现8192点FFT,经过测试,实验结果正确,但是时序约束不到100M的时钟,应该是设计上的延时之类的比较大,暂时放弃这个方案
    的头像 发表于 07-07 09:08 1037次阅读
    调用<b class='flag-5'>HLS</b>的FFT库<b class='flag-5'>实现</b>N点FFT(<b class='flag-5'>hls</b>:fft)

    如何使用HLS加速FPGA上的FIR滤波器

    电子发烧友网站提供《如何使用HLS加速FPGA上的FIR滤波器.zip》资料免费下载
    发表于 06-14 15:28 1次下载
    如何使用<b class='flag-5'>HLS</b>加速<b class='flag-5'>FPGA</b>上的FIR滤波器

    并行FIR滤波器MATLAB与FPGA实现

    本文介绍了设计滤波器的FPGA实现步骤,并结合杜勇老师的书籍中的并行FIR滤波器部分进行一步步实现硬件设计,对书中的架构做了复现以及解读,并进行了仿真验证。
    的头像 发表于 05-24 10:57 709次阅读
    <b class='flag-5'>并行</b>FIR滤波器MATLAB与<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>