AI引擎程式設計(3) KPN強化AI影像處理效能

本文分成三篇,探討如何基於Kahn處理網路(KPN),定義AI引擎繪圖程式設計模型。上一篇討論到自行調適資料流程程式設計,本篇則提供基於KPN概念,設計AI引擎的範例。該範例設計使用四個AI引擎Kernel(圖12),包含向量加法(VADD)、增加定值(addConstant)、將addConstant複製到輸出(copy_in_out)以及FIR過濾器(fir_32)。      圖12 AI引擎核心 此範例使用兩個版本的FIR過濾器(fir_32),一個是標量程式碼,另一個是向量程式碼。這有助於展現Kernel效能的重要性,以及在設計中使用資料流程程式設計(平行運算)的優勢。 圖13是AI引擎ADF在Vitis分析器工具中的實際應用方案。在該圖中,帶有閃電符號的方框代表Kernel。緩衝區為bufx和bufxd(Ping和Pong緩衝區),例如buf0(Ping)和buf0d(Pong)。輸入和輸出埠分別表示為PLIO_In1、PLIO_In2、PLIO_Out1和PLIO_Out2。接下來將說明如何基於KPN概念來執行設計。 圖13 Vitis分析器工具中的繪圖視圖 第一幀影像 第一組資料開始寫入緩衝區(Ping...
2024 年 02 月 07 日

AI引擎程式設計(2) 智慧運算加速資料流程設計

本文將分成三篇,探討如何基於Kahn處理網路(KPN),定義AI引擎繪圖程式設計模型。上一篇介紹Kahn處理網路,本節則介紹資料流程程式設計,如何適用於AI引擎。節點或核心(Kernel)通常在AI引擎中,用於執行任務,並且可執行的工作範圍不像圖1運算模型提及的單一運算子嚴格。AI引擎可以包含多個Kernel,用於執行不同的任務。 KPN的邊緣端代表資料往返於演算單元或連接埠的路徑。邊緣被用於I/O串流、階層式(Cascade)I/O串流、串流或直接記憶體存取(DMA)FIFO,以及AI引擎區塊架構中的本機區塊記憶體緩衝區。 在AI引擎設計中,KPN節點(AI引擎Kernel)之間的連接,透過C++自行調適資料流程(ADF)圖程式。這段程式碼可建立KPN節點(AI引擎Kernel)之間的資料流程圖連接,並識別這些節點所需的任何大型記憶體緩衝區,以及該繪圖任務所需的所有I/O。 執行的排程由資料流程圖,以及輸入數據和輸出資源的可用性來決定: AI引擎沒有IP指令指標暫存器(Instruction...
2024 年 01 月 11 日

處理器廠CES不放過車用商機 AMD展出AI SoC

在軟體定義汽車與汽車智慧化的趨勢下,汽車系統需要更高的運算效能,以支援自駕、資訊娛樂系統及其他人工智慧(AI)功能,架構也轉向Zonal控制與集中化運算。在汽車架構轉變之際,車載處理器效能的提升,有助於催化並實現更多智慧功能。因此處理器供應商紛紛布局車用商機,助力車廠實現多元的AI應用。 其中AMD將在CES2024展出車載解決方案,透過推出Versal...
2024 年 01 月 08 日

AI引擎程式設計(1) KPN強化平行運算效能

KPN模型有助於實現資料流程平行化,進而提升系統的整體效能。AI引擎陣列程式設計需要深入瞭解待實現的演算法、AI引擎的功能以及各個功能單元之間的整體資料流程。 本文將分成三篇,探討如何基於Kahn處理網路(KPN),定義AI引擎繪圖程式設計模型。KPN模型有助於實現資料流程平行化,進而提升系統的整體效能。AI引擎陣列程式設計需要深入瞭解待實現的演算法、AI引擎的功能以及各個功能單元之間的整體資料流程。AI引擎核心是在AI引擎上執行的功能,並構成資料流程圖規範的基本建構模組。資料流程圖是具有確定行為的KPN。 KPN被廣泛用作分散式程式設計模型,能夠在各種可能的情況下平行執行任務。本白皮書介紹AI引擎如何使用KPN模型進行繪圖程式設計。基於不同目標架構的運算模型種類繁多,如中央處理器(CPU)、繪圖處理單元(GPU)、FPGA、AI引擎程式設計等。圖1顯示按照序列模型、並行模型和功能模型分類的運算模型。 圖1 運算模型 在序列模型中,任務是一個接一個地或按循序執行。在並行模型中,任務會盡可能平行處理。在功能模型中,任務執行依賴於執行方案,例如針對特定的架構(如GPU或FPGA中的可程式化設計邏輯)。本文重點探討AI引擎程式設計的運算模型。該模型可用於指導程式設計師編寫針對AI引擎架構的程式,其目標是透過瞭解其程式設計模型來充分發揮AI引擎的運算能力。 隨著運算任務的複雜性日益增加,標準處理器的效能已不足以有效執行這些任務。為了應對這種情況,CPU、GPU以及專用處理器等各種運算架構經過演進發展,已能夠解決效能不足的挑戰。 Kahn處理網路 KPN是由Gilles...
2024 年 01 月 03 日