博客專欄

EEPW首頁 > 博客 > AI 引擎工具和流程用戶指南

AI 引擎工具和流程用戶指南

發(fā)布人:12345zhi 時間:2022-12-08 來源:工程師 發(fā)布文章

Versal AI Core 系列可借助 AI 引擎提供突破性的 AI 推斷加速。此系列應用范圍廣泛,包括用于云端動態(tài)工作負載以及超高帶寬網絡,同時還可提供高級安全性功能。AI 和數據科學 家以及軟硬件開發(fā)者均可充分利用高計算密度的優(yōu)勢來加速提升任何應用的性能。

AI 引擎是超長指令字 (VLIW) 處理器陣列,具有高度優(yōu)化的單指令流多數據流 (SIMD) 矢量單元,專用于各種計算密集 型應用,尤其是數字信號處理 (DSP)、5G 無線應用和人工智能 (AI) 技術(如機器學習 (ML))等。同時,AI 引擎還是硬化的塊,可提供多級并行處理能力,包括指令級并行處理和數據級并行處理。

本指南闡述了對 AI 引擎 graph 應用進行編譯與仿真、使用 Vitis 工具流程來集成應用、使用 Vitis IDE、調試 AI 引擎應用、映射器/布線器方法論、AI 引擎硬件剖析和調試方法論等內容。

本文選取 AI 引擎架構概述部分。

AI 引擎陣列編程要求充分理解要實現的算法、AI 引擎的功能以及各功能單元之間的整體數據流。AI 引擎陣列支持三種 級別的并行度: 

■ SIMD:通過矢量寄存器,允許并行計算多個元素。

■ 指令級別:通過 VLIW 架構,允許在單個時鐘周期內執(zhí)行多項指令。

■ 多核:通過 AI 引擎陣列,即可在其中并行執(zhí)行數百個 AI 引擎。

雖然對于 AI 引擎而言,大部分標準 C 語言代碼均可編譯,但代碼可能需要大幅重構才能在 AI 引擎陣列上實現最優(yōu)性能。AI 引擎的優(yōu)勢在于,它能夠在每個時鐘周期內執(zhí)行矢量 MAC 運算、為下一項運算加載 2 個 256 位矢量、存儲來自上一項運算的單個 256 位矢量并遞增一個指針或執(zhí)行另一次標量運算。AI 引擎編譯器不會執(zhí)行任何自動矢量化或基于編譯指示的矢量化。代碼必須重寫后才能使用 SIMD 內部數據類型(例如,v8int32)和矢量內部函數(例如, mac(…)),而這些都必須在單個流水打拍循環(huán)內執(zhí)行,才能達成最優(yōu)性能。32 位標量 RISC 處理器具有一個 ALU、 部分非線性函數和數據類型轉換。每個 AI 引擎所能訪問的存儲器量是有限的,這表示大型數據集需要分區(qū)。

AI 引擎內核即 AI 引擎上運行的函數,這些函數構成數據流 graph 規(guī)范的基本構建塊。數據流 graph 是 Kahn 進程網絡,具有確定性行為,不依賴于各種計算延遲或通信延遲。AI 引擎內核聲明為空的 C/C++ 函數,通過提取窗口實參或串流實參來建立 graph 連接。內核還可包含靜態(tài)數據和運行時參數實參,包括異步實參或觸發(fā)實參。每個內核都應在其自己的源文件內定義。

為了達成總體系統(tǒng)性能,必須廣泛閱讀了解有關架構、分區(qū)、AI 引擎數據流 graph 生成和數據流連接最優(yōu)化等方面的 知識,積累相關經驗。

AMD 賽靈思提供了 DSP 和通信庫,其中包含經最優(yōu)化的代碼,可用于 AI 引擎,應盡可能多加利用。其中提供的源代碼也提供了強大的資源,供用戶學習有關 AI 引擎內核編碼的信息。

AI 引擎組件

■ AI 引擎陣列由二維 AI 引擎拼塊 (tile) 陣列構成,其中每個 AI 引擎拼塊均包含一個 AI 引擎、存儲器模塊和拼塊互連模 塊。

■ AI 引擎:每個 AI 引擎都是一個超長指令字 (VLIW) 處理器,其中包含一個標量單元、一個矢量單元、兩個加載單元和一個存儲單元。

■ AI 引擎拼塊:每個 AI 引擎拼塊都包含一個 AI 引擎、一個本地存儲器模塊,搭配多條通信路徑以促進拼塊間的數據交換。

■  AI 引擎陣列:AI 引擎陣列是指 AI 引擎拼塊的完整二維陣列。

AI 引擎程序:AI 引擎程序包含以 C/C++ 編寫的數據流 graph 規(guī)范。該程序是使用 AI 引擎工具鏈來編譯并執(zhí)行的。

■ AI 引擎內核:內核是使用 AI 引擎矢量數據類型和內部函數以 C/C++ 編寫的。這些函數均為 AI 引擎上運行的計算函數。內核構成數據流 graph 規(guī)范的基本構建塊。

■ ADF graph:ADF graph 是具有單個 AI 引擎內核或多個 AI 引擎內核(以數據串流連接)的網絡。它憑借如下特定構造來與可編程邏輯、全局存儲器和處理器系統(tǒng)進行交互,此類構造有:PLIO(graph 編程中的端口屬性,用于建立往來可編程邏輯的串流連接)、GMIO(graph 編程中的端口屬性,用于建立往來全局存儲器的外部存儲器映射連接)和 RTP。

工具

Vitis 集成設計環(huán)境

Vitis? 集成設計環(huán)境 (IDE) 可用于為賽靈思器件執(zhí)行系統(tǒng)編程,包括含多個 AI 引擎內核的 Versal? 器件。在此工具中,有下列功能特性可用。

■ 最優(yōu)化 C/C++ 編譯器,用于編譯內核與 graph 代碼,執(zhí)行所有必要的連接、布局和檢查以確保器件上的各項功能正常工作。

■ 周期近似的仿真器、加速的功能仿真器和剖析工具。

■ 調試環(huán)境,可在仿真環(huán)境和硬件環(huán)境下使用。

Vitis 命令行工具

命令行工具可用于構建、仿真以及生成輸出文件和報告。捕獲由 IDE 生成的命令行輸出后,有助于后續(xù)集成到客戶構建環(huán)境內。Vitis 分析器 IDE 可用于查看報告并分析由命令行工具生成的輸出文件和報告。

Vitis Model Composer

Vitis? Model Composer 可提供基于 MATLAB? 和 Simulink? 的高層次圖形輸入環(huán)境,用于包含 AI 引擎、HLS 和 RTL 組件的設計仿真與代碼生成。

■ 將 AI 引擎內核、graph、HLS 內核與基于 RTL 的塊導入同一個 Simulink? 設計,用于快速協(xié)同仿真。

■ 從 Simulink 庫瀏覽器中,將經過最優(yōu)化的 AI 引擎函數(例如,有限脈沖響應 (FIR) 和 FFT 濾波器)拖放到設計中。

■ 使用 MATLAB 或 Simulink 中生成的激勵來驗證設計、直觀顯示結果并將結果與黃金參考結果進行比較。生成 graph 代碼并測試矢量。

■ 匯編導入的代碼和塊庫代碼以供饋送到下游工具中。

*博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。

存儲器相關文章:存儲器原理




關鍵詞: AI 引擎 推斷加速

相關推薦

技術專區(qū)

關閉