HPVM 2.0,用於 CPU、GPU、FPGA 和硬件加速器的編譯器已發布

LLVM專案宣布發布HPVM 2.0(異質並行虛擬機),這是一個編譯器,旨在簡化異構系統的編程,並為CPU、GPU、FPGA和特定領域的硬體加速器提供程式碼產生工具。專案代碼根據 Apache 2.0 許可證分發。

異質平行系統的程式設計由於同一系統中存在使用不同模型來實現平行性(CPU 核心、向量指令、GPU 等)、不同指令集和不同記憶體層次結構的元件而變得複雜。每個系統都使用自己的這些組件的組合。 HPVM專案的主要想法是在編譯時使用平行執行程式的統一表示,可用於支援並行運算的各種類型的硬件,包括GPU、向量指令、多核心處理器、FPGA和各種專用加速器晶片。

與其他系統不同,HPVM 嘗試結合三種能力來組織異質運算 - 程式語言和硬體獨立的中間表示 (IR)、虛擬指令集架構 (V-ISA) 和運行時調度:

  • HPVM 中間表示透過使用分層資料流程圖來擷取任務、資料和管線層級的平行性,從而擴展了指令的 LLVM 中間表示。 HPVM 中間表示也包含向量指令和共享記憶體。使用中間表示的主要目的是異質系統的高效程式碼產生和最佳化。
  • 虛擬指令集架構 (V-ISA) 抽象化了低階硬體功能,並僅使用基本平行模型(資料流程圖)統一了各種形式的平行性和記憶體架構。 V-ISA可讓您實現不同類型設備之間的可移植性以進行平行計算,並使得在使用異質系統的不同元素時不會損失效能成為可能。虛擬 ISA 也可用於提供可使用 CPU、GPU、FPGA 和各種加速器運行的通用執行程式碼。
  • 計算過程的靈活調度策略在運行時應用,並基於有關程序的信息(圖形結構)以及通過編譯各個程序節點以在系統中可用的任何目標計算設備上執行來實現。

此專案開發的程式碼產生器能夠轉換使用虛擬 ISA 定義的應用程式節點,以便使用 NVIDIA GPU(cuDNN 和 OpenCL)、Intel AVX 向量指令、FPGA 和多核心 x86 CPU 執行。值得注意的是,HPVM 轉換器的效能可與 GPU 和向量運算設備的手寫 OpenCL 程式碼相媲美。

HPVM 2.0的主要創新點:

  • 提出了 Hetero-C++ 語言前端,它簡化了 C/C++ 應用程式程式碼的平行化,以便在 HPVM 中進行編譯。 Hetero-C++ 定義了映射到 HPVM 執行緒圖的資料級並行性和分層任務的擴展。
  • 新增了 FPGA 後端,為英特爾 FPGA 上的程式碼執行提供支援。為了組織執行,使用了面向 OpenCL 的英特爾 FPGA SDK。
  • 新增了 DSE(設計空間探索)框架,其中包括編譯器最佳化和識別瓶頸的機制,以自動調整給定硬體平台的應用程式。該框架包含英特爾 FPGA 的現成效能模型,並且可以連接您自己的處理器,以優化 HPVM 支援的任何裝置。優化可以應用於 HPVM 和 LLVM 資料流程圖層級。
  • LLVM 元件已更新至版本 13.0。
  • 程式碼經過重新組織,可以更輕鬆地瀏覽程式碼庫、庫和實用程式。
  • 測試基礎設施得到了改進,為各種 HPVM 組件添加了新的測試。

來源: opennet.ru

添加評論