資料介紹
本文轉(zhuǎn)載自: XILINX開(kāi)發(fā)者社區(qū)微信公眾號(hào)
HLS 優(yōu)化設(shè)計(jì)的最關(guān)鍵指令有兩個(gè):一個(gè)是流水線 (pipeline) 指令,一個(gè)是數(shù)據(jù)流(dataflow) 指令。正確地使用好這兩個(gè)指令能夠增強(qiáng)算法地并行性,提升吞吐量,降低延遲但是需要遵循一定的代碼風(fēng)格。展開(kāi) (unroll) 指令是只針對(duì) for 循環(huán)的展開(kāi)指令,和流水線指令關(guān)系密切,所以我們放在一起首先我們來(lái)看一下這三個(gè)指令在 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 循環(huán)的代碼區(qū)域進(jìn)行優(yōu)化,這個(gè)指令不包含流水線執(zhí)行的概念,單純地將循環(huán)體展開(kāi)使用更多地硬件資源實(shí)現(xiàn),保證并行循環(huán)體在調(diào)度地過(guò)程中是彼此獨(dú)立的。
Pipeline 指令在循環(huán)和函數(shù)兩個(gè)層級(jí)都可以使用,通過(guò)增加重復(fù)的操作指令(如增加資源使用量等等)來(lái)減小初始化間隔。
Dataflow 指令是一個(gè)任務(wù)級(jí)別的流水線指令,從更高的任務(wù)層次使得循環(huán)或函數(shù)可以并行執(zhí)行,目的在于減小延遲增加吞吐量。
Unroll 和 Pipeline 指令相互重合的關(guān)系在于,當(dāng)對(duì)函數(shù)進(jìn)行流水線處理時(shí),以下層次結(jié)構(gòu)中的所有循環(huán)都會(huì)自動(dòng)展開(kāi),而使用展開(kāi)指令的循環(huán)并沒(méi)有給定對(duì)II的約束。在最新版本的 Vitis HLS 工具中,工具會(huì)自動(dòng)分析數(shù)據(jù)之間的流水線操作關(guān)系,以II=1為目標(biāo)優(yōu)化,但是還是會(huì)受限于設(shè)計(jì)本身的算法和代碼風(fēng)格。下圖非常清晰地闡明了Unroll 和 Pipeline 指令的關(guān)系,Pipeline 指令放置的循環(huán)層次越高,循環(huán)展開(kāi)的層次也越高,最終會(huì)導(dǎo)致使用更大面積的資源去實(shí)現(xiàn),同時(shí)并行性也更高。

這里如果循環(huán)的邊界是變量的話,則無(wú)法展開(kāi)。這將組織函數(shù)被流水線化,可以通過(guò)添加tripcount 等指令,指定循環(huán)在綜合時(shí)大概的最大最小邊界。
在循環(huán)流水線優(yōu)化的過(guò)程中,有一個(gè)完美循環(huán),半完美循環(huán)和非完美循環(huán)的代碼風(fēng)格概念,只有當(dāng)流水線循環(huán)完美或半完美時(shí),才可以將嵌套循環(huán)徹底并行展開(kāi)。
完美循環(huán):只有最里面的循環(huán)才具有主體內(nèi)容,在循環(huán)語(yǔ)句之間沒(méi)有指定邏輯,循環(huán)界限是恒定的。
半完美循環(huán):只有最里面的循環(huán)才具有主體 (內(nèi)容), 在循環(huán)語(yǔ)句之間沒(méi)有指定邏輯,只有最外面的循環(huán)邊界可以是可變的。
非完美循環(huán):循環(huán)的主體內(nèi)容分布在循環(huán)的各個(gè)層次或內(nèi)層循環(huán)的邊界是變量。

當(dāng)我們要爭(zhēng)去最大流水線循環(huán)的成功執(zhí)行,就需要將非完美循環(huán)手動(dòng)修改成完美或半完美循環(huán)。 以下代碼例子給出了完美循環(huán)(左邊)和非完美循環(huán)(右邊)在Vitis HLS 中的執(zhí)行結(jié)果。


綜合完畢后,我們可以在分析窗口和綜合報(bào)告中都很清晰的看出,完美循環(huán)在執(zhí)行的時(shí)候,工具自動(dòng)將內(nèi)層循環(huán)LOOP_J和外層循環(huán)LOOP_I合并為一整個(gè)大循環(huán),并實(shí)現(xiàn)了整個(gè)大循環(huán)的流水線操作,延遲的周期數(shù)為: (400-1) *1+8-1 =406個(gè)周期數(shù),延遲大約為 408*2.5 = 1,020 ns
非完美循環(huán)中,內(nèi)層和外層循環(huán)沒(méi)有合并,只有內(nèi)層循環(huán)LOOP_J 實(shí)現(xiàn)了流水線執(zhí)行,進(jìn)出內(nèi)循環(huán)的浪費(fèi)的時(shí)鐘周期增加了整個(gè)循環(huán)的時(shí)鐘周期,同時(shí)還有一些命令行沒(méi)有辦法跨越循環(huán)的層級(jí)實(shí)現(xiàn)調(diào)度上的優(yōu)化,這些因素都導(dǎo)致了設(shè)計(jì)的延遲的增加。
本文關(guān)于pipeline 以及 unroll 指令的介紹到此結(jié)束,下篇文章我們將著重介紹 daraflow 指令。
- 基于BiLSTM-CRF的細(xì)粒度知識(shí)圖譜問(wèn)答模型 4次下載
- 基于文本的細(xì)粒度美妝圖譜視覺(jué)推理問(wèn)題 1次下載
- 結(jié)合非局部和多區(qū)域注意力機(jī)制的細(xì)粒度識(shí)別方法 3次下載
- 基于卷積神經(jīng)網(wǎng)絡(luò)多層面二階特征融合模型 4次下載
- 基于深度圖注意力卷積CNN的三維模型識(shí)別方法 6次下載
- 關(guān)于類(lèi)腦和神經(jīng)計(jì)算 10次下載
- 基于LSTM模型的多時(shí)間尺度融合預(yù)測(cè)方法 19次下載
- 一種利用GPU并行計(jì)算提升雜波生成實(shí)時(shí)性的方法 12次下載
- 使用深度模型遷移進(jìn)行細(xì)粒度圖像分類(lèi)的方法說(shuō)明 5次下載
- 基于ABS細(xì)粒度隱私隔絕的身份追溯研究 0次下載
- 一種細(xì)粒度云存儲(chǔ)數(shù)據(jù)完整性檢測(cè) 0次下載
- 具有細(xì)粒度訪問(wèn)控制的密碼學(xué)的云存儲(chǔ)系統(tǒng) 0次下載
- 一種細(xì)粒度的面向產(chǎn)品屬性的用戶情感模型 0次下載
- 基于AOP的細(xì)粒度RBAC模型研究 20次下載
- 面向多客體的細(xì)粒度RBAC模型及應(yīng)用
- 淺析SpinalHDL中Pipeline中的復(fù)位定制 1090次閱讀
- 什么是pipeline?Go中構(gòu)建流數(shù)據(jù)pipeline的技術(shù) 649次閱讀
- 數(shù)倉(cāng)中搭建細(xì)粒度容災(zāi)應(yīng)用的主要步驟 440次閱讀
- ICLR 2024 清華/新國(guó)大/澳門(mén)大學(xué)提出一模通吃的多粒度圖文組合檢索MUG:通過(guò)不確定性建模,兩行代碼完成部署 686次閱讀
- 一種面向標(biāo)識(shí)公共遞歸解析節(jié)點(diǎn)的數(shù)據(jù)安全加固策略 716次閱讀
- Kubernetes RBAC:掌握權(quán)限管理的精髓 493次閱讀
- 基于PyTorch的模型并行分布式訓(xùn)練Megatron解析 3200次閱讀
- Pipeline中throwIt的用法 585次閱讀
- CVPR2023 I BUFFER:點(diǎn)云配準(zhǔn)中卓越精度、高效性和泛化性的完美平衡 1058次閱讀
- 論文插圖也能自動(dòng)生成了!用到了擴(kuò)散模型,還被ICLR 2023接收! 584次閱讀
- 基于實(shí)體和動(dòng)作時(shí)空建模的視頻文本預(yù)訓(xùn)練 790次閱讀
- Leptos利用細(xì)粒度的響應(yīng)式來(lái)構(gòu)建聲明性用戶界面 1168次閱讀
- 通過(guò)對(duì)比學(xué)習(xí)的角度來(lái)解決細(xì)粒度分類(lèi)的特征質(zhì)量問(wèn)題 2390次閱讀
- 細(xì)粒度圖像分析任務(wù)在發(fā)展過(guò)程中面臨著獨(dú)特的挑戰(zhàn) 4923次閱讀
- 一個(gè)能通過(guò)空間條件坐標(biāo)和隱變量生成圖像片、并合成完整圖片的網(wǎng)絡(luò)模型 4317次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費(fèi)下載
- 0.00 MB | 1491次下載 | 免費(fèi)
- 2單片機(jī)典型實(shí)例介紹
- 18.19 MB | 95次下載 | 1 積分
- 3S7-200PLC編程實(shí)例詳細(xì)資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識(shí)別和講解說(shuō)明
- 4.28 MB | 18次下載 | 4 積分
- 5開(kāi)關(guān)電源原理及各功能電路詳解
- 0.38 MB | 11次下載 | 免費(fèi)
- 6100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 7基于單片機(jī)和 SG3525的程控開(kāi)關(guān)電源設(shè)計(jì)
- 0.23 MB | 4次下載 | 免費(fèi)
- 8基于AT89C2051/4051單片機(jī)編程器的實(shí)驗(yàn)
- 0.11 MB | 4次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費(fèi)
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費(fèi)
- 4LabView 8.0 專(zhuān)業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費(fèi)
- 5555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33562次下載 | 免費(fèi)
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費(fèi)
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費(fèi)
- 8開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21539次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537793次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191183次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183277次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138039次下載 | 免費(fèi)
評(píng)論