本白皮書探討了如何基于 Kahn 處理網(wǎng)絡( KPN )定義 AI 引擎圖形編程模型。KPN 模型有助于實現(xiàn)數(shù)據(jù)流并行化,進而提高系統(tǒng)的整體性能。AI 引擎陣列編程需要深入了解待實現(xiàn)的算法、AI 引擎的功能以及各個功能單元之間的整體數(shù)據(jù)流。AI 引擎內(nèi)核是在 AI 引擎上運行的功能,并構(gòu)成了數(shù)據(jù)流圖規(guī)范的基本構(gòu)建塊。數(shù)據(jù)流圖是具有確定性行為的 KPN。本白皮書還包括一個示例設計,展示了具有四個 AI 引擎內(nèi)核的數(shù)據(jù)流圖,而這些內(nèi)核構(gòu)成了數(shù)據(jù)流圖規(guī)范的基本構(gòu)建塊。此外,該示例還演示了設計中的數(shù)據(jù)流停滯,并提供了解決方案。
KPN 被廣泛用作分布式編程模型,能夠在各種可能的情況下并行運行任務。本白皮書介紹了 AI引擎如何使用 KPN 模型進行圖形編程?;诓煌哪繕思軜?gòu),如中央處理器( CPU )、圖形處理單元( GPU )、FPGA、AI 引擎編程等,計算模型的種類也多種多樣。下圖顯示了按照序列模型、并發(fā)模型和功能模型分類的計算模型。
在序列模型中,任務是一個接一個地或按順序執(zhí)行。在并發(fā)模型中,任務是盡可能地并行執(zhí)行。在功能模型中,任務執(zhí)行依賴于實現(xiàn)方案,例如針對特定的架構(gòu)(如 GPU 或 FPGA 中的可編程邏輯)。本白皮書重點探討 AI 引擎編程的計算模型。該模型可用于指導程序員編寫針對 AI 引擎架構(gòu)的程序,其目標是通過了解其編程模型來充分發(fā)揮 AI 引擎的算力。隨著計算任務的復雜性日益增加,實踐證明,標準處理器已不足以有效地執(zhí)行這些任務。為了應對這種情況,CPU、GPU 以及專用處理器等各種計算架構(gòu)經(jīng)過演進發(fā)展,已經(jīng)能夠解決這個不足之處。
Kahn 處理網(wǎng)絡
KPN 是由 Gilles Kahn 在 1974 年提出的一種分布式計算模型,其作為針對并行編程開發(fā)的通用方案,為數(shù)據(jù)流模型奠定了重要基礎。在 KPN 中,組件表示函數(shù)(或內(nèi)核),連接表示數(shù)據(jù)流,如下圖所示。
內(nèi)核(函數(shù) 3 )從其它兩個內(nèi)核(函數(shù) 1 和函數(shù) 2 )讀取數(shù)據(jù)。如果其中的任何一個內(nèi)核都沒有可用的數(shù)據(jù),那么讀取會停止該進程,從而阻塞內(nèi)核(函數(shù) 3 )。只有當足夠多的數(shù)據(jù)(令牌)可用時,該進程才能繼續(xù)。將數(shù)據(jù)(函數(shù) 1 和函數(shù) 2 )寫入進程(函數(shù) 3 )是非阻塞的,這意味著寫入進程總是成功的,并且不會出現(xiàn)停滯。由于這些特點,數(shù)據(jù)流網(wǎng)絡在本質(zhì)上是具有確定性的。這是通過先進先出( FIFO )通道進行的確定性進程通信。經(jīng)過驗證,該模型可用于嵌入式系統(tǒng)、信號處理系統(tǒng)、高性能計算、數(shù)據(jù)流編程語言和其它計算任務的建模。
信號處理系統(tǒng)使用 KPN 進行建模,其中通過以順序或并行執(zhí)行形式(基于給定任務)來處理無限數(shù)據(jù)流。
AI 引擎——自適應數(shù)據(jù)流編程
本節(jié)介紹了數(shù)據(jù)流編程如何適用于 AI 引擎。節(jié)點(或角色)表示某種類型的操作。節(jié)點或內(nèi)核在 AI 引擎中實現(xiàn),其可執(zhí)行操作,但并不嚴格地作為單個運算符,如圖 8:數(shù)據(jù)流 編程中所示。AI 引擎可以包含許多能夠執(zhí)行多種操作的內(nèi)核。
KPN 邊緣表示數(shù)據(jù)往返于角色或端口的路徑。邊緣被實現(xiàn)為 I/O 流、級聯(lián) I/O 流、流或直接內(nèi)存訪問( DMA )FIFO,以及 AI 引擎塊架構(gòu)中的本地塊內(nèi)存緩沖區(qū)。
在 AI 引擎設計中,KPN 節(jié)點( AI 引擎內(nèi)核)之間的連接通過 C++ 自適應數(shù)據(jù)流( ADF )圖程序來實現(xiàn)。這段代碼可建立 KPN 節(jié)點( AI 引擎內(nèi)核)之間的數(shù)據(jù)流圖連接,并確定這些節(jié)點所需的任何大內(nèi)存緩沖區(qū)以及該圖形的任何 I/O。
執(zhí)行計劃由該圖形以及輸入數(shù)據(jù)和輸出資源的可用性決定:
沒有指令指針來觸發(fā) AI 引擎。只要所有輸入數(shù)據(jù)可用,每個塊都會觸發(fā)并執(zhí)行其內(nèi)核函數(shù),就像在 KPN 中一樣。
基于器件,AI 引擎提供眾多可用的執(zhí)行單元(按 10 或 100 為單位)。根據(jù)數(shù)據(jù)流圖中的互聯(lián)特性,這些引擎的執(zhí)行方式可能包括部分、無、或者全部并行執(zhí)行。
所有 AI 引擎都在計算或等待輸入數(shù)據(jù),就像在 KPN 中一樣。
AI 引擎編譯器接受輸入(數(shù)據(jù)流圖和內(nèi)核),并生成用于在 AI 引擎器件上運行的可執(zhí)行應用。AI 引擎編譯器對鎖定、內(nèi)存緩沖區(qū)、DMA 通道和描述符等必要資源進行分配,并生成用于將圖形映射到 AI 引擎陣列的路由信息。它為每個核綜合一個主程序,用于調(diào)度該核上的所有內(nèi)核,并在緩沖區(qū)之間實現(xiàn)必要的鎖定機制和數(shù)據(jù)復制。
如下圖所示,函數(shù) 1 的作用是為每個 B 產(chǎn)生兩個 A。平均而言,函數(shù) 2 消耗的 A 是其消耗的 B 的兩倍。它可能并不總是 A 和 B,可能在一段時間內(nèi)是 A,在另一段時間內(nèi)是 B。為了處理這種情況,需要積累數(shù)據(jù)/令牌以便以后處理。在某些情況下,如果積累的周期較長,則可能導致系統(tǒng)停滯并影響性能。具體難度根據(jù)設計要求而異。克服這些挑戰(zhàn)的方法包括通過添加 FIFO 來積累數(shù)據(jù),通過使用多個 AI 引擎和其它優(yōu)化技術(shù)的方式對內(nèi)核進行編程,以提高性能。了解死鎖問題并使用適當?shù)募夹g(shù)來解決它至關(guān)重要。
下表列出了 KPN 和 AI 引擎術(shù)語之間的比較
表 1:KPN 和 AI 引擎術(shù)語
在某些情況下,對于特定算法而言,數(shù)據(jù)流編程具有一定挑戰(zhàn)性,因為調(diào)度可能會導致進程停滯。
-
處理器
+關(guān)注
關(guān)注
68文章
19799瀏覽量
233484 -
gpu
+關(guān)注
關(guān)注
28文章
4909瀏覽量
130633 -
AI
+關(guān)注
關(guān)注
87文章
34146瀏覽量
275297 -
模型
+關(guān)注
關(guān)注
1文章
3483瀏覽量
49968 -
圖形編程
+關(guān)注
關(guān)注
1文章
7瀏覽量
8549
原文標題:白皮書|AI 引擎編程:Kahn 處理網(wǎng)絡的演進發(fā)展
文章出處:【微信號:賽靈思,微信公眾號:Xilinx賽靈思官微】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
賽靈思分享:智能引擎中所的AI引擎技術(shù)分析
AI引擎內(nèi)核編程設計進程
Microwindows圖形編程機制
Firefly支持AI引擎Tengine,性能提升,輕松搭建AI計算框架
Qualcomm最新推出的神經(jīng)處理引擎
嵌入式AI在linux芯片平臺上的部署方案分享
嵌入式邊緣AI應用開發(fā)指南
HarmonyOS:使用MindSpore Lite引擎進行模型推理
圖形處理器的流執(zhí)行模型
嵌入式Linux平臺部署AI神經(jīng)網(wǎng)絡模型Inference的方案

AI引擎編程:卡恩進程網(wǎng)絡演進

Versal ACAP AI引擎編程環(huán)境用戶指南

Imagination?宣布推出?E-Series GPU:開啟Edge AI?與圖形處理新時代

評論