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é);視頻前處理通過(guò)調(diào)用 Vitis Vision Library 實(shí)現(xiàn);學(xué)習(xí)推理通過(guò)在 Vitis 中調(diào)用 DPU 實(shí)現(xiàn)。最終結(jié)果可以達(dá)到1080P60,單幀Latency。
Vitis Acceleration Lab
硬件加速設(shè)計(jì)流程
這個(gè) Lab 通過(guò)三個(gè)小實(shí)驗(yàn)介紹了使用 Vitis 進(jìn)行硬件加速設(shè)計(jì)的工作流程與常用工具。
第一個(gè) Lab:
Vector Addition。
向量加法是硬件加速界的 Hello World。這個(gè)實(shí)驗(yàn)通過(guò)分別介紹使用圖形界面的方法和使用命令行的方法,來(lái)完成一個(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 來(lái)觀察加速器運(yùn)行狀態(tài)和性能的方法,它可以幫助我們分析設(shè)計(jì)的效果是否達(dá)到預(yù)期。
第三個(gè) Lab:
使用 Vision Library 來(lái)進(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)的開(kāi)發(fā),又涉及到主機(jī)(Host)的開(kāi)發(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)提供了一種方法,來(lái)盡可能保證每個(gè)加速器Kernel都有盡可能高的利用率,而不是在等待。
第三個(gè)實(shí)驗(yàn)介紹了怎樣使用 Streaming 接口,在兩個(gè) Kernel 之前傳輸數(shù)據(jù),保證最有效率的數(shù)據(jù)傳遞。