MLIR多級中間表示概述

2022-02-03 13:19:12 字數 1505 閱讀 7266

mlir多級中間表示概述             

mlir專案是構建可重用和可擴充套件的編譯器基礎設施的一種新方法。mlir旨在解決軟體碎片化問題,改進異構硬體的編譯,顯著降低構建特定領域編譯器的成本,並幫助將現有編譯器連線在一起。             

more resources

l  llvm論壇的mlir部分有任何問題。             

l  llvm不一致伺服器mlir通道的實時討論。             

l  之前的會談。             

另請參閱tensorflow mlir sig,它每週組織一次關於mlir的公眾「公開設計會議」。

what is mlir for?

mlir旨在成為乙個混合ir,它可以在乙個統一的基礎設施中支援多種不同的需求。例如,這包括:             

l  表示資料流圖的能力(例如在tensorflow中),包括動態形狀、使用者可擴充套件的運算元生態系統、tensorflow變數等。             

l  以適合優化的形式表示ml運算元的核心。              

l  能夠跨核心託管high-performance-computing-style高效能計算風格的迴圈優化(融合、迴圈交換、並行tiling等),並轉換資料的記憶體布局。             

l  **生成「降低」轉換,如dma插入、顯式快取管理、記憶體平鋪和一維和二維暫存器架構的向量化。             

l  能夠代表target-specific目標的運算元,例如accelerator-specific high-level加速器特定的高階運算元。             

l  在深度學習圖上進行的量化和其他圖形轉換。

mlir是一種通用的ir,它還支援特定於硬體的操作。因此,對圍繞mlir的基礎結構的任何投資(例如,在其上工作的編譯器通行證)都應該產生良好的回報;許多目標可以使用該基礎結構並從中受益。               

mlir是乙個強大的代表,但它也有非目標。不支援低階機器**生成演算法(如暫存器分配和指令排程)。它們更適合於較低階別的優化器(如llvm)。而且,不希望miir是終端使用者自己編寫核心(類似於cuda c++)的源語言。另一方面,mlir為表示任何此類dsl並將其整合到生態系統中提供了主幹。             

編譯器基礎結構             

在建立mlir時,受益於從構建其他irs(llvm ir、xla hlo和swift sil)中獲得的經驗。mlir框架鼓勵現有的最佳實踐,例如編寫和維護ir規範,構建ir驗證器,提供將mlir檔案轉儲並解析為文字的能力,使用filecheck工具編寫大量的單元測試,以及將基礎結構構建為一組可以以新方式組合的模組化庫。             

其它的優點也被巧妙地融入到設計中。例如,llvm存在一些不明顯的設計錯誤,這些錯誤會阻止多執行緒編譯器同時處理llvm模組中的多個函式。mlir通過限制ssa作用域來減少使用def鏈,並用顯式符號引用替換跨函式引用來解決這些問題。

MLIR多級中間表示概述

mlir多級中間表示概述 mlir專案是構建可重用和可擴充套件的編譯器基礎設施的一種新方法。mlir旨在解決軟體碎片化問題,改進異構硬體的編譯,顯著降低構建特定領域編譯器的成本,並幫助將現有編譯器連線在一起。more resources llvm論壇的mlir部分有任何問題。llvm不一致伺服器ml...

Django 中介軟體的概述

中介軟體函式是django框架給我們預留的函式介面,讓我們可以干預請求和應答的過程.init 伺服器響應第乙個請求的時候呼叫。process request 是在產生request物件,進行url匹配之前呼叫。process view 是url匹配之後,呼叫檢視函式之前。process respon...

Https協議 「中間人攻擊」原理概述

引導問題 1.為什麼使用https是安全的?2.https的底層原理如何實現?3.使用https是絕對安全的嗎?https實現原理 https協議在內容傳輸上使用的加密是 對稱加密 而 非對稱加密 只作用於證書驗證階段。https的整體實現過程分為 證書驗證 和 資料傳輸 兩個階段,過程如下所示 證...