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

AI引擎編程:卡恩進(jìn)程網(wǎng)絡(luò)演進(jìn)

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

AI引擎內(nèi)核與計(jì)算圖編程指南

評(píng)論