Vitis Acceleration Lab
全流程加速
嵌入式視頻處理通常會(huì)涉及到幾個(gè)部分:視頻采集,、數(shù)據(jù)處理,、視頻顯示,;在一個(gè)機(jī)器學(xué)習(xí)的應(yīng)用中,,數(shù)據(jù)處理一般又分為前處理(比如縮放,、調(diào)整白平衡等),、學(xué)習(xí)推理,、對(duì)結(jié)果作后處理等幾個(gè)步驟,。
在這個(gè)實(shí)驗(yàn)中,我們用 Vitis 一個(gè)工具完成了以上所有任務(wù),,所有的數(shù)據(jù)處理都在 FPGA 側(cè)完成加速,,以保證最佳的實(shí)時(shí)性;ARM 在整個(gè)系統(tǒng)中負(fù)責(zé)任務(wù)管理,,而不進(jìn)行具體計(jì)算,。視頻輸入輸出的功能由 Vitis Platform 負(fù)責(zé);視頻前處理通過調(diào)用 Vitis Vision Library 實(shí)現(xiàn),;學(xué)習(xí)推理通過在 Vitis 中調(diào)用 DPU 實(shí)現(xiàn),。最終結(jié)果可以達(dá)到1080P60,單幀Latency,。
Vitis Acceleration Lab
硬件加速設(shè)計(jì)流程
這個(gè) Lab 通過三個(gè)小實(shí)驗(yàn)介紹了使用 Vitis 進(jìn)行硬件加速設(shè)計(jì)的工作流程與常用工具,。
第一個(gè) Lab:
Vector Addition。
向量加法是硬件加速界的 Hello World,。這個(gè)實(shí)驗(yàn)通過分別介紹使用圖形界面的方法和使用命令行的方法,,來完成一個(gè)向量加法設(shè)計(jì)的功能仿真。
第二個(gè) Lab:
Wide Vector Addition,。
這個(gè)實(shí)驗(yàn)在第一個(gè)實(shí)驗(yàn)的基礎(chǔ)上,,添加一系列優(yōu)化性能的方法,比如增加向量加法器本身的位寬,、獨(dú)占 DDR 等方式,,完成一個(gè)向量加法的硬件級(jí)仿真。這些優(yōu)化方法都是日常設(shè)計(jì)中常用的方法,。在本實(shí)驗(yàn)中,,還特別指出了怎樣使用 Vitis Analyzer 來觀察加速器運(yùn)行狀態(tài)和性能的方法,它可以幫助我們分析設(shè)計(jì)的效果是否達(dá)到預(yù)期,。
第三個(gè) Lab:
使用 Vision Library 來進(jìn)行圖像處理,。
Xilinx 提供了很多常用的硬件加速庫(kù) (Vitis_Libraries) 供用戶使用。本實(shí)驗(yàn)介紹了使用他們的基本方法,。用戶可以使用 Vision 庫(kù)中的 resize 和 blur 功能,,將使用軟件計(jì)算比較耗時(shí)的部分轉(zhuǎn)移到邏輯中做加速,。
Vitis Acceleration Lab
代碼優(yōu)化
使用 Vitis 進(jìn)行加速設(shè)計(jì),既牽涉到加速器(Kernel)的開發(fā),,又涉及到主機(jī)(Host)的開發(fā),。兩者都對(duì)最終運(yùn)行效率有影響。除了基礎(chǔ)實(shí)驗(yàn)中的簡(jiǎn)介流程,,如果要得到最優(yōu)性能,,還需要在編程語(yǔ)言層面對(duì)編譯器以及最終的電路實(shí)現(xiàn)有所理解。這組實(shí)驗(yàn)就介紹了幾個(gè)可能影響性能的幾個(gè)方面,。
第一個(gè)實(shí)驗(yàn)討論了關(guān)于申請(qǐng)內(nèi)存的不同方法導(dǎo)致的性能差別,。
第二個(gè)實(shí)驗(yàn)提供了一種方法,來盡可能保證每個(gè)加速器Kernel都有盡可能高的利用率,,而不是在等待,。
第三個(gè)實(shí)驗(yàn)介紹了怎樣使用 Streaming 接口,在兩個(gè) Kernel 之前傳輸數(shù)據(jù),,保證最有效率的數(shù)據(jù)傳遞,。