如何使用MLIR工具鏈訪問AMD NPU
在這個(gè)項(xiàng)目中,遵循Xilinx mlr - aie GitHub存儲(chǔ)庫中提供的說明,在Ubuntu上建立一個(gè)功能開發(fā)環(huán)境,并在AMD Ryzen?AI NPU上執(zhí)行示例mlr - aie程序。目標(biāo)是完成完整的設(shè)置工作流程,其中包括安裝所需的工具鏈,配置系統(tǒng)依賴關(guān)系,并使用mlr -AIE框架構(gòu)建簡單的AI引擎(AIE)設(shè)計(jì)。環(huán)境準(zhǔn)備好后,將編譯包括的示例應(yīng)用程序并將其部署到NPU中,以驗(yàn)證軟件工具和硬件平臺(tái)之間的正確集成。
此過程演示了為AMD Ryzen AI開發(fā)準(zhǔn)備系統(tǒng)的實(shí)用方法,提供了對工具安裝,環(huán)境配置和mlr - aie應(yīng)用程序執(zhí)行流程的見解。示例程序的成功執(zhí)行證實(shí)了開發(fā)管道(從基于mlr的設(shè)計(jì)到硬件執(zhí)行)的功能符合預(yù)期,為未來的實(shí)驗(yàn)和定制AIE應(yīng)用程序開發(fā)奠定了基礎(chǔ)。
AMD NPU (Neural Processing Unit)是集成在AMD Ryzen AI系列中的專用AI加速器。下面我們來看看
?系統(tǒng)配置
?Bios設(shè)置的變化
?工具鏈安裝
?如何設(shè)置環(huán)境?
?如何在AMD NPU上運(yùn)行樣例測試用例并驗(yàn)證其執(zhí)行?
?示例測試用例參考
系統(tǒng)配置
這個(gè)過程從Ubuntu 24.04的干凈安裝開始,確保筆記本電腦更新到最新的BIOS版本,并啟用了NPU支持。
修改BIOS設(shè)置
然后確認(rèn)在BIOS中禁用安全引導(dǎo)以允許使用未簽名驅(qū)動(dòng)程序。# BIOS→安全→安全啟動(dòng)→禁用
由于Ubuntu 24.04帶有較舊的內(nèi)核,更新到硬件支持(HWE)堆棧以獲得Linux內(nèi)核6.11+:
工具鏈安裝
使用提供的安裝腳本安裝了Ryzen AI NPU的XDNA驅(qū)動(dòng)程序和XRT。
重啟后,檢查NPU是否被檢測到:
克隆了MLIR-AIE存儲(chǔ)庫,并為項(xiàng)目設(shè)置創(chuàng)建了專用的Python虛擬環(huán)境。
作為開發(fā)環(huán)境準(zhǔn)備的一部分,安裝了最新版本的mlr - aie和LLVM-AIE。
如何設(shè)置環(huán)境?
配置了所需的執(zhí)行環(huán)境變量,以確保工具和庫的正確集成。
如何在AMD NPU上運(yùn)行示例并驗(yàn)證執(zhí)行?
導(dǎo)航到mlir-aie/programming_examples/中提供的編程示例之一,并構(gòu)建AIE設(shè)計(jì):在測試用例路徑上使用make命令構(gòu)建設(shè)計(jì):
獲得XRT環(huán)境,并在單獨(dú)的終端中執(zhí)行無限監(jiān)控腳本,以觀察AI Engine活動(dòng)。
sh腳本觸發(fā)無限次NPU狀態(tài)檢查。在成功構(gòu)建完成后,主機(jī)應(yīng)用程序被編譯并執(zhí)行,以在Ryzen AI NPU上運(yùn)行設(shè)計(jì)。
這觸發(fā)了MLIR-AIE運(yùn)行時(shí),它將計(jì)算卸載到NPU。我們可以立即看到加速的結(jié)果。
下面是示例執(zhí)行和驗(yàn)證的輸出:
示例測試用例參考:
?直通dma -此設(shè)計(jì)演示了數(shù)據(jù)移動(dòng),以實(shí)現(xiàn)使用對象fifo的內(nèi)存操作,僅使用dma而不涉及AIE核心。
?直通內(nèi)核——這個(gè)設(shè)計(jì)演示了一個(gè)簡單的AIE實(shí)現(xiàn),在涉及AIE核心內(nèi)核編程的整數(shù)向量上實(shí)現(xiàn)向量化內(nèi)存。
?Vector Scalar Add- Single tile執(zhí)行一個(gè)非常簡單的+操作,內(nèi)核從本地內(nèi)存加載數(shù)據(jù),將值加1并將其存儲(chǔ)回來。
本文編譯自hackster.io





