0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺析HLS的任務級并行性

FPGA技術驛站 ? 來源:FPGA技術驛站 ? 2023-07-27 09:21 ? 次閱讀

HLS的任務級并行性(Task-level Parallelism)分為兩種:一種是控制驅動型;一種是數(shù)據(jù)驅動型。對于控制驅動型,用戶要手工添加DATAFLOWpragma,工具會在該pragma指定的區(qū)域內判別任務之間的并行性,生成各進程之間的模塊級控制信號。對于數(shù)據(jù)驅動型,用于需要明確指定可并行執(zhí)行的任務。

從描述手段來看,控制驅動型本質上是由工具判定各任務能否并行執(zhí)行。用戶在對各函數(shù)描述時只要遵守DATAFLOW的要求即可。例如:讀取輸入數(shù)據(jù)應該位于DATAFLOW區(qū)域的起始位置,寫入輸出數(shù)據(jù)應位于該區(qū)域的終止位置。DATALOW區(qū)域內的所有變量遵循“一次讀一次寫”原則。除非使用hls::stream,否則不支持反饋支路。不支持在指定條件下才執(zhí)行函數(shù)。不支持for在指定條件下退出(使用break語句)。但控制驅動型比較靈活,這是因為DATAFLOW的作用對象可以是for循環(huán)也可以是函數(shù)。

控制驅動器適合于順序執(zhí)行的C函數(shù)??刂乞寗有湍P蛶淼暮锰幇ǎ寒斍昂瘮?shù)在結束執(zhí)行之前后續(xù)函數(shù)可以開始執(zhí)行;函數(shù)在結束執(zhí)行之前可以重新開始執(zhí)行;兩個或更多順序函數(shù)可以同時開始執(zhí)行。我們看一個例子。如下圖所示,頂層函數(shù)diamond調用了4各函數(shù)funcA~funcD。

557fca60-2c11-11ee-a368-dac502259ad0.png



在沒有添加DATAFLOW的情況下,工具能自動探測出funcB和funcC的并行性,這可從Schedule視圖中看到,如下圖所示。

5592c2be-2c11-11ee-a368-dac502259ad0.png



添加DATAFLOW之后,對兩者性能進行對比,如下圖所示(NO_TLP為沒有添加DATAFLOW的solution),從Latency角度看,兩者相當,但從interval角度看,DATAFLOW帶來的效果還是很明顯的。Interval從457降到了175。

55a328e8-2c11-11ee-a368-dac502259ad0.png



再看數(shù)據(jù)驅動型。數(shù)據(jù)驅動型要求任務之前以stream作為接口,允許反饋支路。用戶需要明確通過hls::task指定可并行執(zhí)行的任務。對于上述函數(shù),我們可以將其改造為數(shù)據(jù)驅動型,如下圖所示。代碼第98行聲明了4個stream,第99行~第102行通過hls::task指定并行任務。

55b74472-2c11-11ee-a368-dac502259ad0.png



將三者放在一起對比,如下圖所示。可以看到數(shù)據(jù)驅動型無論在性能還是資源上都獲得最佳表現(xiàn)。

55ccb1ae-2c11-11ee-a368-dac502259ad0.png

那么兩種類型能否混合使用呢?答案是肯定的,但是有限制的,這源于兩者的自身特征??梢栽诳刂乞寗有椭星度霐?shù)據(jù)驅動型,但反過來是不允許的。我們將上面的例子改造為控制驅動型嵌入數(shù)據(jù)驅動型的模式,如下圖所示。這里需要注意的是代碼第137行的DATAFLOWpragma,同時代碼第141行和第142行都設置了task,task接口為stream。此外也給出了Vitis HLS的Schedule視圖和Dataflow視圖。Dataflow視圖中也顯示了KPN。

55e44418-2c11-11ee-a368-dac502259ad0.png

5605458c-2c11-11ee-a368-dac502259ad0.png

5614649a-2c11-11ee-a368-dac502259ad0.png






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 驅動器
    +關注

    關注

    52

    文章

    8102

    瀏覽量

    145828
  • 控制驅動器
    +關注

    關注

    0

    文章

    2

    瀏覽量

    5724
  • HLS
    HLS
    +關注

    關注

    1

    文章

    128

    瀏覽量

    23995

原文標題:再談HLS之任務級并行編程

文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于HLS任務并行編程

    ? HLS任務編程第一篇文章可看這里: HLS任務并行
    的頭像 發(fā)表于 07-27 09:22 ?1182次閱讀
    基于<b class='flag-5'>HLS</b>之<b class='flag-5'>任務</b><b class='flag-5'>級</b><b class='flag-5'>并行</b>編程

    Python中的并行性和并發(fā)性分析

      在Python編程語言當中,很多人對Python中的并行性和并發(fā)性不了解。今天我們將討論python中的并發(fā)和并行性www.zpedu.com。在這里,我們將研究Python的多線程,多處
    發(fā)表于 08-21 17:45

    阻止任務級別并行性的常見情況

    粗粒度并行優(yōu)化的任務流水阻止任務級別并行性的常見情況
    發(fā)表于 03-09 06:58

    淺析java異步回調和同步回調

    CompletableFuture為什么它在依賴于不同的異類異步執(zhí)行任務的交互的編程系統(tǒng)中如此有用?以及它如何補充fork / join樣式的并行性?
    發(fā)表于 10-19 07:13

    HLS-1Hin人工智能訓練系統(tǒng)

    連接器)。外部以太網鏈路可以連接到任何交換層次結構。Suchconfiguration可以進行優(yōu)化,以大規(guī)模實現(xiàn)textra大型模型并行性,并可以輕松處理數(shù)據(jù)并行性或模型和數(shù)據(jù)并行性的組合。 GAUDI
    發(fā)表于 08-04 06:06

    算法隱含并行性的物理模型

    算法隱含并行性的物理模型:利用物理學原理對算法的隱含并行性進行了分析,提出算法的不確定性和高熵態(tài)是隱含并行性出現(xiàn)的根源,但算法的隱含并行性會導致算法結果的不確定
    發(fā)表于 10-21 08:23 ?10次下載

    英特爾架構中的多線程優(yōu)化和擴展并行性的編程技術

    有效并行縮減和擴展并行性的編程技術。
    的頭像 發(fā)表于 11-01 06:24 ?2190次閱讀

    矢量化數(shù)據(jù)并行性的程序方面的作用

    矢量化在加速具有算法固有的數(shù)據(jù)并行性的程序方面起著至關重要的作用。 英特爾C ++編譯器提供了顯式的矢量編程方法,以提高性能。
    的頭像 發(fā)表于 11-06 06:31 ?2170次閱讀

    有關 Dataflow 指令的原理

    在本文中,我們將重點放在如何能夠在不需要特殊的庫或類的情況下修改代碼風格以實現(xiàn)C代碼實現(xiàn)并行性。Xilinx HLS 編譯器的顯著特征是能夠將任務級別的并行性和流水線與可尋址的存儲器
    的頭像 發(fā)表于 02-09 10:34 ?1244次閱讀

    如何在不需要特殊庫或類的情況下實現(xiàn)C代碼并行性?

    提取實現(xiàn)任務 (task_level) 的硬件并行算法是設計高效的HLS IP內核的關鍵。 在本文中,我們將重點放在如何能夠在不需要特殊的庫或類的情況下修改代碼風格以實現(xiàn)C代碼實現(xiàn)
    的頭像 發(fā)表于 02-11 11:05 ?1403次閱讀
    如何在不需要特殊庫或類的情況下實現(xiàn)C代碼<b class='flag-5'>并行性</b>?

    Dataflow | 粗粒度并行優(yōu)化的任務流水

    在本文中,我們將重點放在如何能夠在不需要特殊的庫或類的情況下修改代碼風格以實現(xiàn)C代碼實現(xiàn)并行性。Xilinx HLS 編譯器的顯著特征是能夠將任務級別的并行性和流水線與可尋址的存儲器
    發(fā)表于 03-02 06:19 ?12次下載
    Dataflow | 粗粒度<b class='flag-5'>并行</b>優(yōu)化的<b class='flag-5'>任務</b><b class='flag-5'>級</b>流水

    HPEC應用子程序線程推測并行性實驗分析

    推測的剖析機制及核心數(shù)據(jù)結構,選取HPEC中7個具有代表的程序,挖掘其子程序的最大潛在并行性并結合線程粒度、并行覆蓋率、子程序調用次數(shù)、數(shù)據(jù)依賴及源碼,對程序的加速比進行分析。實驗
    發(fā)表于 03-30 13:52 ?8次下載
    HPEC應用子程序線程推測<b class='flag-5'>并行性</b>實驗分析

    通過利用現(xiàn)代處理器架構的并行性提高SDR的性能

      MVR 通過利用現(xiàn)代處理器架構提供的多維并行性來解決這個問題,從而在不降低基于軟件的設備的積極優(yōu)勢的情況下推動性能提升一個數(shù)量級。通過利用一種以便攜和可編程方式保持性能的方法,MVR 代表了下一代基帶設計的未來。
    的頭像 發(fā)表于 06-14 16:12 ?974次閱讀
    通過利用現(xiàn)代處理器架構的<b class='flag-5'>并行性</b>提高SDR的性能

    研討會:如何利用最新Vitis HLS提高任務并行性?

    當前在 AI、無線、視頻/圖像處理、醫(yī)療和消費領域使用的算法,復雜已顯著提升。 Vitis? 高層次綜合 (HLS) 可通過在選定的 AMD 器件上將 C/C++ 代碼綜合為可編程邏輯的 RTL
    的頭像 發(fā)表于 07-05 08:15 ?664次閱讀
    研討會:如何利用最新Vitis <b class='flag-5'>HLS</b>提高<b class='flag-5'>任務</b><b class='flag-5'>級</b><b class='flag-5'>并行性</b>?

    Vitis HLS:使用任務并行性的高性能設計

    電子發(fā)燒友網站提供《Vitis HLS:使用任務并行性的高性能設計.pdf》資料免費下載
    發(fā)表于 09-13 17:21 ?0次下載
    Vitis <b class='flag-5'>HLS</b>:使用<b class='flag-5'>任務</b><b class='flag-5'>級</b><b class='flag-5'>并行性</b>的高性能設計