AI 引擎工具和流程用戶(hù)指南
Versal AI Core 系列可借助 AI 引擎提供突破性的 AI 推斷加速。此系列應用范圍廣泛,包括用于云端動(dòng)態(tài)工作負載以及超高帶寬網(wǎng)絡(luò ),同時(shí)還可提供高級安全性功能。AI 和數據科學(xué) 家以及軟硬件開(kāi)發(fā)者均可充分利用高計算密度的優(yōu)勢來(lái)加速提升任何應用的性能。
AI 引擎是超長(cháng)指令字 (VLIW) 處理器陣列,具有高度優(yōu)化的單指令流多數據流 (SIMD) 矢量單元,專(zhuān)用于各種計算密集 型應用,尤其是數字信號處理 (DSP)、5G 無(wú)線(xiàn)應用和人工智能 (AI) 技術(shù)(如機器學(xué)習 (ML))等。同時(shí),AI 引擎還是硬化的塊,可提供多級并行處理能力,包括指令級并行處理和數據級并行處理。
本指南闡述了對 AI 引擎 graph 應用進(jìn)行編譯與仿真、使用 Vitis 工具流程來(lái)集成應用、使用 Vitis IDE、調試 AI 引擎應用、映射器/布線(xiàn)器方法論、AI 引擎硬件剖析和調試方法論等內容。
本文選取 AI 引擎架構概述部分。
AI 引擎陣列編程要求充分理解要實(shí)現的算法、AI 引擎的功能以及各功能單元之間的整體數據流。AI 引擎陣列支持三種 級別的并行度:
■ SIMD:通過(guò)矢量寄存器,允許并行計算多個(gè)元素。
■ 指令級別:通過(guò) VLIW 架構,允許在單個(gè)時(shí)鐘周期內執行多項指令。
■ 多核:通過(guò) AI 引擎陣列,即可在其中并行執行數百個(gè) AI 引擎。
雖然對于 AI 引擎而言,大部分標準 C 語(yǔ)言代碼均可編譯,但代碼可能需要大幅重構才能在 AI 引擎陣列上實(shí)現最優(yōu)性能。AI 引擎的優(yōu)勢在于,它能夠在每個(gè)時(shí)鐘周期內執行矢量 MAC 運算、為下一項運算加載 2 個(gè) 256 位矢量、存儲來(lái)自上一項運算的單個(gè) 256 位矢量并遞增一個(gè)指針或執行另一次標量運算。AI 引擎編譯器不會(huì )執行任何自動(dòng)矢量化或基于編譯指示的矢量化。代碼必須重寫(xiě)后才能使用 SIMD 內部數據類(lèi)型(例如,v8int32)和矢量?jì)炔亢瘮担ɡ纾?mac(…)),而這些都必須在單個(gè)流水打拍循環(huán)內執行,才能達成最優(yōu)性能。32 位標量 RISC 處理器具有一個(gè) ALU、 部分非線(xiàn)性函數和數據類(lèi)型轉換。每個(gè) AI 引擎所能訪(fǎng)問(wèn)的存儲器量是有限的,這表示大型數據集需要分區。
AI 引擎內核即 AI 引擎上運行的函數,這些函數構成數據流 graph 規范的基本構建塊。數據流 graph 是 Kahn 進(jìn)程網(wǎng)絡(luò ),具有確定性行為,不依賴(lài)于各種計算延遲或通信延遲。AI 引擎內核聲明為空的 C/C++ 函數,通過(guò)提取窗口實(shí)參或串流實(shí)參來(lái)建立 graph 連接。內核還可包含靜態(tài)數據和運行時(shí)參數實(shí)參,包括異步實(shí)參或觸發(fā)實(shí)參。每個(gè)內核都應在其自己的源文件內定義。
為了達成總體系統性能,必須廣泛閱讀了解有關(guān)架構、分區、AI 引擎數據流 graph 生成和數據流連接最優(yōu)化等方面的 知識,積累相關(guān)經(jīng)驗。
AMD 賽靈思提供了 DSP 和通信庫,其中包含經(jīng)最優(yōu)化的代碼,可用于 AI 引擎,應盡可能多加利用。其中提供的源代碼也提供了強大的資源,供用戶(hù)學(xué)習有關(guān) AI 引擎內核編碼的信息。
AI 引擎組件
■ AI 引擎陣列由二維 AI 引擎拼塊 (tile) 陣列構成,其中每個(gè) AI 引擎拼塊均包含一個(gè) AI 引擎、存儲器模塊和拼塊互連模 塊。
■ AI 引擎:每個(gè) AI 引擎都是一個(gè)超長(cháng)指令字 (VLIW) 處理器,其中包含一個(gè)標量單元、一個(gè)矢量單元、兩個(gè)加載單元和一個(gè)存儲單元。
■ AI 引擎拼塊:每個(gè) AI 引擎拼塊都包含一個(gè) AI 引擎、一個(gè)本地存儲器模塊,搭配多條通信路徑以促進(jìn)拼塊間的數據交換。
■ AI 引擎陣列:AI 引擎陣列是指 AI 引擎拼塊的完整二維陣列。
AI 引擎程序:AI 引擎程序包含以 C/C++ 編寫(xiě)的數據流 graph 規范。該程序是使用 AI 引擎工具鏈來(lái)編譯并執行的。
■ AI 引擎內核:內核是使用 AI 引擎矢量數據類(lèi)型和內部函數以 C/C++ 編寫(xiě)的。這些函數均為 AI 引擎上運行的計算函數。內核構成數據流 graph 規范的基本構建塊。
■ ADF graph:ADF graph 是具有單個(gè) AI 引擎內核或多個(gè) AI 引擎內核(以數據串流連接)的網(wǎng)絡(luò )。它憑借如下特定構造來(lái)與可編程邏輯、全局存儲器和處理器系統進(jìn)行交互,此類(lèi)構造有:PLIO(graph 編程中的端口屬性,用于建立往來(lái)可編程邏輯的串流連接)、GMIO(graph 編程中的端口屬性,用于建立往來(lái)全局存儲器的外部存儲器映射連接)和 RTP。
工具
Vitis 集成設計環(huán)境
Vitis? 集成設計環(huán)境 (IDE) 可用于為賽靈思器件執行系統編程,包括含多個(gè) AI 引擎內核的 Versal? 器件。在此工具中,有下列功能特性可用。
■ 最優(yōu)化 C/C++ 編譯器,用于編譯內核與 graph 代碼,執行所有必要的連接、布局和檢查以確保器件上的各項功能正常工作。
■ 周期近似的仿真器、加速的功能仿真器和剖析工具。
■ 調試環(huán)境,可在仿真環(huán)境和硬件環(huán)境下使用。
Vitis 命令行工具
命令行工具可用于構建、仿真以及生成輸出文件和報告。捕獲由 IDE 生成的命令行輸出后,有助于后續集成到客戶(hù)構建環(huán)境內。Vitis 分析器 IDE 可用于查看報告并分析由命令行工具生成的輸出文件和報告。
Vitis Model Composer
Vitis? Model Composer 可提供基于 MATLAB? 和 Simulink? 的高層次圖形輸入環(huán)境,用于包含 AI 引擎、HLS 和 RTL 組件的設計仿真與代碼生成。
■ 將 AI 引擎內核、graph、HLS 內核與基于 RTL 的塊導入同一個(gè) Simulink? 設計,用于快速協(xié)同仿真。
■ 從 Simulink 庫瀏覽器中,將經(jīng)過(guò)最優(yōu)化的 AI 引擎函數(例如,有限脈沖響應 (FIR) 和 FFT 濾波器)拖放到設計中。
■ 使用 MATLAB 或 Simulink 中生成的激勵來(lái)驗證設計、直觀(guān)顯示結果并將結果與黃金參考結果進(jìn)行比較。生成 graph 代碼并測試矢量。
■ 匯編導入的代碼和塊庫代碼以供饋送到下游工具中。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。
存儲器相關(guān)文章:存儲器原理