如何執(zhí)行從L3內(nèi)存到Tile內(nèi)存的Shim數(shù)據(jù)移動(dòng)
本教程演示了一個(gè)數(shù)據(jù)傳遞示例,以使用AIE方言解釋AMD Ryzen AI Phoenix中的數(shù)據(jù)流。
需求
AMD Ryzen AI Phoenix?;贚inux®的開發(fā)環(huán)境python®(用于測(cè)試自動(dòng)化和結(jié)果驗(yàn)證)IRON API和基于mlr的AI引擎工具鏈
項(xiàng)目簡(jiǎn)要
SOC旨在加速ai - ml算法,以提供良好的卓越性能。NPU復(fù)合體
?16個(gè)AI核用于計(jì)算
?4 Memory Tiles用于快速內(nèi)存訪問
?4 sim DMA to MoveNote:這個(gè)項(xiàng)目是為Phoenix定制的。
涵蓋的功能和數(shù)據(jù)流
?一個(gè)SHIM DMA通過
?兩個(gè)SHIM DMA通過
?四個(gè)SHIM DMA通過
一個(gè)SHIM DMA通過
在本節(jié)中使用了列0的SHIM DMA(0,0), MEM Tile(0,1)和Core(0,2)。存儲(chǔ)在L3存儲(chǔ)器上的一組預(yù)定義數(shù)據(jù)流進(jìn)入NPU復(fù)合體。數(shù)據(jù)通過MEM內(nèi)存從SHM DMA路由到Core,然后路由回來。接收到的輸出流被捕獲并與參考進(jìn)行比較。
兩個(gè)SHIM DMA通過
在本節(jié)中使用了列0和列1的SHIM DMA((0,0), (1,0)), MEM Tile((0,1),(1,1))和Core((0,2),(1,2))。存儲(chǔ)在L3存儲(chǔ)器上的一組預(yù)定義數(shù)據(jù)流進(jìn)入NPU復(fù)合體。數(shù)據(jù)通過MEM內(nèi)存從SHM DMA路由到Core,然后路由回來。接收到的輸出流被捕獲并與參考進(jìn)行比較。
四個(gè)SHIM DMA通過
在本節(jié)中墊片DMA((0, 0),(1,0)、(2,0)(0)),MEM瓷磚((0,1),(1,1),(2,1),(3,1))和核心((0,2),(1、2),(2,2),(3 2)列0,1,2,3。存儲(chǔ)在L3存儲(chǔ)器上的一組預(yù)定義數(shù)據(jù)流進(jìn)入NPU復(fù)合體。數(shù)據(jù)通過MEM內(nèi)存從SHM DMA路由到Core,然后路由回來。接收到的輸出流被捕獲并與參考進(jìn)行比較。
數(shù)據(jù)流
構(gòu)建并運(yùn)行
導(dǎo)航到其中一個(gè)testcase文件夾并構(gòu)建AIE設(shè)計(jì):在測(cè)試用例路徑上使用make命令構(gòu)建設(shè)計(jì):
在成功構(gòu)建完成后,主機(jī)應(yīng)用程序被編譯并執(zhí)行,以在Ryzen AI NPU上運(yùn)行設(shè)計(jì)。
這觸發(fā)了MLIR-AIE運(yùn)行時(shí),它將計(jì)算卸載到NPU。我們可以立即看到加速的結(jié)果。
結(jié)論
通過這些教程,我們能夠演示如何使用“IRON API和基于mlr的AI引擎工具鏈”并執(zhí)行數(shù)據(jù)傳遞。此外,這些教程將擴(kuò)展到描述單個(gè)和多個(gè)并行操作的SHIM dma的數(shù)據(jù)吞吐量。
本文編譯自hackster.io





