吴忠躺衫网络科技有限公司

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

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

3天內不再提示

基于HLS之任務級并行編程

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

HLS任務級編程第一篇文章可看這里:

HLS之任務級并行編程

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

從描述手段來看,控制驅動型本質上是由工具判定各任務能否并行執行。用戶在對各函數描述時只要遵守DATAFLOW的要求即可。例如:讀取輸入數據應該位于DATAFLOW區域的起始位置,寫入輸出數據應位于該區域的終止位置。DATALOW區域內的所有變量遵循“一次讀一次寫”原則。除非使用hls::stream,否則不支持反饋支路。不支持在指定條件下才執行函數。不支持for在指定條件下退出(使用break語句)。但控制驅動型比較靈活,這是因為DATAFLOW的作用對象可以是for循環也可以是函數??刂?a target="_blank">驅動器適合于順序執行的C函數。控制驅動型模型帶來的好處包括:當前函數在結束執行之前后續函數可以開始執行;函數在結束執行之前可以重新開始執行;兩個或更多順序函數可以同時開始執行。我們看一個例子。如下圖所示,頂層函數diamond調用了4各函數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 再看數據驅動型。數據驅動型要求任務之前以stream作為接口,允許反饋支路。用戶需要明確通過hls::task指定可并行執行的任務。對于上述函數,我們可以將其改造為數據驅動型,如下圖所示。代碼第98行聲明了4個stream,第99行~第102行通過hls::task指定并行任務。

55b74472-2c11-11ee-a368-dac502259ad0.png 將三者放在一起對比,如下圖所示??梢钥吹綌祿寗有蜔o論在性能還是資源上都獲得最佳表現。

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

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

https://en.wikipedia.org/wiki/Kahn_process_networks

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

責任編輯:彭菁

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

    關注

    88

    文章

    3637

    瀏覽量

    93981
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62969
  • HLS
    HLS
    +關注

    關注

    1

    文章

    130

    瀏覽量

    24208
收藏 人收藏

    評論

    相關推薦

    淺析HLS任務并行

    HLS任務并行性(Task-level Parallelism)分為兩種:一種是控制驅動型;一種是數據驅動型。
    的頭像 發表于 07-27 09:21 ?1006次閱讀
    淺析<b class='flag-5'>HLS</b>的<b class='flag-5'>任務</b><b class='flag-5'>級</b><b class='flag-5'>并行</b>性

    UCOSIII任務優先任務搶占的影響

    有兩個任務:task1任務優先 3task2任務優先 4(當設置task2的優先小于10時
    發表于 05-05 04:36

    【正點原子FPGA連載】第一章HLS簡介-領航者ZYNQHLS 開發指南

    主要可以從“設計的重用”和“抽象層級的提升”這兩個方面來考慮。Xilinx推出的Vivado HLS工具可以直接使用C、C++或System C來對Xilinx系列的FPGA進行編程,從而提高抽象的層級
    發表于 10-10 16:44

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

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

    FPGA高層次綜合HLSVitis HLS知識庫簡析

    1、HLS最全知識庫介紹高層次綜合(High-level Synthesis)簡稱HLS,指的是將高層次語言描述的邏輯結構,自動轉換成低抽象語言描述的電路模型的過程。對于AMD Xilinx而言
    發表于 09-07 15:21

    HLS-1Hin人工智能訓練系統

    Habana Labs System 1H(HLS-1H)為數據中心帶來了新水平的Al計算性能和電源效率,以及大規模的可擴展性。 HLS-1Hin包含四個Gaudi HL-205 Mezzanine
    發表于 08-04 06:06

    FPGA并行編程:基于HLS技術優化硬件設計

    作為集成電路設計領域現場可編程門陣列 (FPGA) 技術的創造者之一,賽靈思一直積極推廣高層次綜合 (HLS) 技術,通過這種能夠解讀所需行為的自動化設計流程打造出可實現此類行為的硬件。賽靈思剛剛推出了一本專著,清晰介紹了如何使用 HL
    發表于 11-10 11:01 ?2950次閱讀

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

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

    Dataflow | 粗粒度并行優化的任務流水

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

    基于數據驅動的任務并行多重網格應用

    多重網格是數值計算領域中一種加速迭代收斂的重要技術,被廣泛應用。近年來,大規模并行計算系統向多核化、異構眾核化發展,多重網格應用也亟須適應新的并行計算平臺。文中采用一種數據驅動的任務并行
    發表于 05-13 10:41 ?8次下載

    hlsxfopencv

    vivado本身集成了opencv庫以及hls視頻庫了,opencv不能被綜合導出為RTL電路,hls視頻庫的功能有所欠缺,因此引入xfopencv作為既可以被綜合導出為RTL電路,也能夠實現opencv豐富的功能。
    的頭像 發表于 09-09 15:07 ?1915次閱讀

    FPGA基礎HLS

    1、HLS簡介 HLS(High-Level Synthesis)高層綜合,就是將 C/C++的功能用 RTL 來實現,將 FPGA 的組件在一個軟件環境中來開發,這個模塊的功能驗證在軟件環境中來
    的頭像 發表于 12-02 12:30 ?5569次閱讀

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

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

    Vitis HLS相關問答詳解

    需要手工在 C++ 代碼里明確指定可并行執行的任務(用 task,添加頭文件 hls_task.h),同時可并行執行的 task 接口(對應 C++ 函數的形參)必須是 stream
    的頭像 發表于 08-11 11:23 ?797次閱讀

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

    電子發燒友網站提供《Vitis HLS:使用任務并行性的高性能設計.pdf》資料免費下載
    發表于 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>性的高性能設計
    百家乐娱乐城送分| 威尼斯人娱乐平台反| 百家乐官网视频双扣| 百家乐博彩金| 百家乐官网网站出售| 百家乐专业赌博| 百家乐官网网络视频游戏| 百家乐任你博娱乐场| 稳赢的百家乐官网投注方法| 永利博百家乐的玩法技巧和规则| 网络百家乐官网网站| 大发888娱乐亚洲| 百家乐软件辅助| 长宁区| 牌九百家乐的玩法技巧和规则| 百家乐官网换房| 汇丰百家乐的玩法技巧和规则| 百家乐官网娱乐网送68元| 德州扑克英文| 百家乐全自动分析软件| 神木县| 百家乐博赌城| 速博国际娱乐| 正品百家乐电话| 百家乐官网的珠盘| 皇冠网热门小说| 金沙百家乐的玩法技巧和规则| 百家乐官网娱乐城注册| 老虎机破解方法| 百家乐官网真人百家乐官网皇冠| 二八杠游戏平台| 缅甸百家乐官网娱乐场开户注册| 海王星国际娱乐| 七匹狼百家乐的玩法技巧和规则| 百利宫百家乐官网的玩法技巧和规则| 走地皇娱乐城| 百家乐玩法| 百家乐庄家抽水| 澳门百家乐官网威尼斯| 大发888老虎机下载免费| 百家乐在线投注网|