資料介紹
本文轉載自: XILINX開發者社區微信公眾號
HLS 優化設計的最關鍵指令有兩個:一個是流水線 (pipeline) 指令,一個是數據流(dataflow) 指令。正確地使用好這兩個指令能夠增強算法地并行性,提升吞吐量,降低延遲但是需要遵循一定的代碼風格。展開 (unroll) 指令是只針對 for 循環的展開指令,和流水線指令關系密切,所以我們放在一起首先我們來看一下這三個指令在 Xilinx 官方指南中的定義:
Unroll: Unroll for-loops to create multiple instances of the loop body and its instructions that can then be scheduled independently.
Pipeline:Reduces the initiation interval by allowing the overlapped execution of operations within a loop or function.
Dataflow:Enables task level pipelining, allowing functions and loops to execute concurrently. Used to optimize through output and/or latency.
Unroll 指令在 for 循環的代碼區域進行優化,這個指令不包含流水線執行的概念,單純地將循環體展開使用更多地硬件資源實現,保證并行循環體在調度地過程中是彼此獨立的。
Pipeline 指令在循環和函數兩個層級都可以使用,通過增加重復的操作指令(如增加資源使用量等等)來減小初始化間隔。
Dataflow 指令是一個任務級別的流水線指令,從更高的任務層次使得循環或函數可以并行執行,目的在于減小延遲增加吞吐量。
Unroll 和 Pipeline 指令相互重合的關系在于,當對函數進行流水線處理時,以下層次結構中的所有循環都會自動展開,而使用展開指令的循環并沒有給定對II的約束。在最新版本的 Vitis HLS 工具中,工具會自動分析數據之間的流水線操作關系,以II=1為目標優化,但是還是會受限于設計本身的算法和代碼風格。下圖非常清晰地闡明了Unroll 和 Pipeline 指令的關系,Pipeline 指令放置的循環層次越高,循環展開的層次也越高,最終會導致使用更大面積的資源去實現,同時并行性也更高。
這里如果循環的邊界是變量的話,則無法展開。這將組織函數被流水線化,可以通過添加tripcount 等指令,指定循環在綜合時大概的最大最小邊界。
在循環流水線優化的過程中,有一個完美循環,半完美循環和非完美循環的代碼風格概念,只有當流水線循環完美或半完美時,才可以將嵌套循環徹底并行展開。
完美循環:只有最里面的循環才具有主體內容,在循環語句之間沒有指定邏輯,循環界限是恒定的。
半完美循環:只有最里面的循環才具有主體 (內容), 在循環語句之間沒有指定邏輯,只有最外面的循環邊界可以是可變的。
非完美循環:循環的主體內容分布在循環的各個層次或內層循環的邊界是變量。
當我們要爭去最大流水線循環的成功執行,就需要將非完美循環手動修改成完美或半完美循環。 以下代碼例子給出了完美循環(左邊)和非完美循環(右邊)在Vitis HLS 中的執行結果。
綜合完畢后,我們可以在分析窗口和綜合報告中都很清晰的看出,完美循環在執行的時候,工具自動將內層循環LOOP_J和外層循環LOOP_I合并為一整個大循環,并實現了整個大循環的流水線操作,延遲的周期數為: (400-1) *1+8-1 =406個周期數,延遲大約為 408*2.5 = 1,020 ns
非完美循環中,內層和外層循環沒有合并,只有內層循環LOOP_J 實現了流水線執行,進出內循環的浪費的時鐘周期增加了整個循環的時鐘周期,同時還有一些命令行沒有辦法跨越循環的層級實現調度上的優化,這些因素都導致了設計的延遲的增加。
本文關于pipeline 以及 unroll 指令的介紹到此結束,下篇文章我們將著重介紹 daraflow 指令。
- 基于BiLSTM-CRF的細粒度知識圖譜問答模型 4次下載
- 基于文本的細粒度美妝圖譜視覺推理問題 1次下載
- 結合非局部和多區域注意力機制的細粒度識別方法 3次下載
- 基于卷積神經網絡多層面二階特征融合模型 4次下載
- 基于深度圖注意力卷積CNN的三維模型識別方法 6次下載
- 關于類腦和神經計算 10次下載
- 基于LSTM模型的多時間尺度融合預測方法 19次下載
- 一種利用GPU并行計算提升雜波生成實時性的方法 12次下載
- 使用深度模型遷移進行細粒度圖像分類的方法說明 5次下載
- 基于ABS細粒度隱私隔絕的身份追溯研究 0次下載
- 一種細粒度云存儲數據完整性檢測 0次下載
- 具有細粒度訪問控制的密碼學的云存儲系統 0次下載
- 一種細粒度的面向產品屬性的用戶情感模型 0次下載
- 基于AOP的細粒度RBAC模型研究 20次下載
- 面向多客體的細粒度RBAC模型及應用
- 淺析SpinalHDL中Pipeline中的復位定制 828次閱讀
- 什么是pipeline?Go中構建流數據pipeline的技術 431次閱讀
- 數倉中搭建細粒度容災應用的主要步驟 321次閱讀
- ICLR 2024 清華/新國大/澳門大學提出一模通吃的多粒度圖文組合檢索MUG:通過不確定性建模,兩行代碼完成部署 471次閱讀
- 一種面向標識公共遞歸解析節點的數據安全加固策略 488次閱讀
- Kubernetes RBAC:掌握權限管理的精髓 358次閱讀
- 基于PyTorch的模型并行分布式訓練Megatron解析 2291次閱讀
- Pipeline中throwIt的用法 413次閱讀
- CVPR2023 I BUFFER:點云配準中卓越精度、高效性和泛化性的完美平衡 756次閱讀
- 論文插圖也能自動生成了!用到了擴散模型,還被ICLR 2023接收! 454次閱讀
- 基于實體和動作時空建模的視頻文本預訓練 653次閱讀
- Leptos利用細粒度的響應式來構建聲明性用戶界面 1038次閱讀
- 通過對比學習的角度來解決細粒度分類的特征質量問題 2122次閱讀
- 細粒度圖像分析任務在發展過程中面臨著獨特的挑戰 4700次閱讀
- 一個能通過空間條件坐標和隱變量生成圖像片、并合成完整圖片的網絡模型 4123次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1491次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 95次下載 | 1 積分
- 3S7-200PLC編程實例詳細資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關電源原理及各功能電路詳解
- 0.38 MB | 11次下載 | 免費
- 6100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 7基于單片機和 SG3525的程控開關電源設計
- 0.23 MB | 4次下載 | 免費
- 8基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關電源設計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537793次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論
查看更多