【Vitis Accel】2 - Vitis 应用加速开发平台简介
- 前言
- Vitis 應(yīng)用加速開發(fā)平臺(tái)
- 1. 組成模塊
- 軟件(Host) 與 硬件(Kernel)
- 軟硬件交互
- 2. 執(zhí)行過(guò)程
- 3. 示例:數(shù)據(jù)中心應(yīng)用加速的開發(fā)
- 4. 示例:嵌入式應(yīng)用加速的開發(fā)
- 5. 建立目標(biāo)文件 Target
前言
上篇文章主要介紹了 HLS 是什么,這篇文章將從宏觀上了解 Vitis 應(yīng)用加速開發(fā)平臺(tái)的組成和運(yùn)行過(guò)程。
Vitis 應(yīng)用加速開發(fā)平臺(tái)
1. 組成模塊
軟件(Host) 與 硬件(Kernel)
Vitis 應(yīng)用加速開發(fā)(The Vitis application acceleration development flow)提供了一個(gè)用于使用軟硬件的標(biāo)準(zhǔn)編程語(yǔ)言開發(fā) FPGA 加速應(yīng)用的框架。 主要分為軟硬件兩部分,或者主機(jī)(host)和內(nèi)核(kernel)兩部分:
- 軟件部分(host program):使用 C/C++ 開發(fā),可在 x86 或嵌入式處理器上運(yùn)行,并調(diào)用 OpenCL? API 來(lái)與加速器交互
- 硬件部分(kernel):可以使用 C/C++、OpenCL C 或 RTL 進(jìn)行開發(fā)。
軟硬件交互
主機(jī)(Host processor) 與硬件加速器(Hardware accelertor)之間的交互通過(guò) XRT(Xilinx Runtime Library) 管理的 API 調(diào)用完成。 主機(jī)和內(nèi)核之間的通信,包括控制和數(shù)據(jù)傳輸,位于 PCIe 總線或嵌入式平臺(tái)的 AXI 總線上。 雖然控制信息僅在硬件中的特定內(nèi)存位置之間傳輸,但用于在主機(jī)和內(nèi)核之間的數(shù)據(jù)傳輸使用的是全局內(nèi)存(global memory)。 主機(jī)和硬件加速器都可以訪問(wèn)全局內(nèi)存,而主機(jī)內(nèi)存(host memory)只能由主機(jī)應(yīng)用程序訪問(wèn)。
- 例如,在應(yīng)用中,主機(jī)首先將內(nèi)核要操作的數(shù)據(jù)從主機(jī)內(nèi)存?zhèn)鬏數(shù)饺謨?nèi)存中。 內(nèi)核隨后對(duì)數(shù)據(jù)進(jìn)行操作,將結(jié)果存儲(chǔ)回全局內(nèi)存。 內(nèi)核完成后,主機(jī)將結(jié)果傳輸回主機(jī)內(nèi)存。
上述數(shù)據(jù)傳輸過(guò)程顯然會(huì)引入延遲(latency),這對(duì)整個(gè)應(yīng)用程序來(lái)說(shuō)可能是代價(jià)高昂的。 因此,為了在真實(shí)系統(tǒng)中實(shí)現(xiàn)加速,硬件加速所獲得的好處必須足夠多。
2. 執(zhí)行過(guò)程
開發(fā)平臺(tái)由 FPGA 加速內(nèi)核(kernel)、全局內(nèi)存(global memory)和用于內(nèi)存?zhèn)鬏?DMA 組成。 內(nèi)核可以有一個(gè)或多個(gè)可編程的全局內(nèi)存接口。 Vitis 核心執(zhí)行過(guò)程可以分解為以下步驟:
FPGA 可以在加速器上運(yùn)行多個(gè) Kernel 實(shí)例,包括不同類型的 Kernel ,以及同一 Kernel 的多個(gè)實(shí)例。 XRT 負(fù)責(zé)協(xié)調(diào)這一交互過(guò)程。
3. 示例:數(shù)據(jù)中心應(yīng)用加速的開發(fā)
4. 示例:嵌入式應(yīng)用加速的開發(fā)
5. 建立目標(biāo)文件 Target
Vitis 編譯器提供三種不同的構(gòu)建目標(biāo)(build target),其中前兩個(gè)是用于調(diào)試和驗(yàn)證目的的仿真目標(biāo)(emulation target),最后一個(gè)是用于生成實(shí)際 FPGA 二進(jìn)制文件的默認(rèn)硬件目標(biāo)(hardware target)
-
軟件仿真 Software Emulation (sw_emu)
Host 和 Kernel 的代碼都被編譯在 Host 上運(yùn)行。這可以通過(guò)快速構(gòu)建和運(yùn)行循環(huán),完成迭代算法的細(xì)調(diào)(refinement)。通常用于識(shí)別語(yǔ)法錯(cuò)誤、對(duì)與應(yīng)用程序一起運(yùn)行的 kenel 代碼進(jìn)行源代碼(source code)級(jí)調(diào)試,以及系統(tǒng)行為驗(yàn)證。
-
硬件仿真 Hardware Emulation (hw_emu)
Kernel 代碼被編譯成硬件模型 (RTL),該模型在專用模擬器中運(yùn)行。這個(gè)構(gòu)建和運(yùn)行循環(huán)需要更長(zhǎng)的時(shí)間,但提供了 Kernel 詳細(xì)的、周期準(zhǔn)確的行為仿真。用于測(cè)試將寫入 FPGA 的邏輯功能,并獲得初始性能估計(jì)。
-
硬件 Hardware
Kernel 被編譯成一個(gè)硬件模型 (RTL),然后在 FPGA 上實(shí)現(xiàn),產(chǎn)生一個(gè)將在實(shí)際 FPGA 上運(yùn)行的二進(jìn)制文件。
Reference: Vitis Unified Software Development Platform 2020.2 Documentation
總結(jié)
以上是生活随笔為你收集整理的【Vitis Accel】2 - Vitis 应用加速开发平台简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MKL_THREADING_LAYER=
- 下一篇: 如何使用CorelDRAW 2019绘制