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