網友評分: 5分
畢昇編譯器是針對華為鯤鵬平臺打造的一款超級強大并且好用的高性能編譯軟件,該軟件基于開源LLVM開發,并進行了深度的優化和改進,同時將Flang作為默認的Fortran語言前端編譯器,除此之外,其中的工具鏈還對中端及后端的關鍵技術點進行了深度優化,并集成Auto-tuner特性,支持編譯器自動調優。
優化特性
畢昇編譯器采用多種增強的編譯優化技術,包含但不限于以下優化特性:
循環優化
包括 Loop Unswitching:減少分支跳轉的執行次數;Loop unroll-and-jam:改善內存和 cache 局部性及利用率;Loop Fusion:直接復用其他循環中的值,暴露更多的指令調度機會;Loop Distribution:減少循環中的寄存器壓力,暴露更多的矢量化機會;Loop Unrolling:可以減少動態的指令數量,發現更多的優化機會點,比如數據復用,范圍更廣的指令調度,以及提高矢量化的數據并發度。
內存布局優化
將結構體數組 (AoS) 轉換為數組結構體 (SoA),以及數組的重排列優化。通過上述方法,將提高 Cache 的命中率,從而提升程序的性能。
軟件預取
畢昇編譯器通過與鯤鵬處理器協同,將硬件相關特征準確建模,使得編譯器預取分析代碼能夠準確模擬鯤鵬處理器的訪存特征,進而在代碼中插入準確的預取指令,從而提高 Cache 命中率,提升程序的性能。
自動矢量化
結合鯤鵬 NEON / SVE 指令集,畢昇編譯器對向量自動化進行了增強,將執行操作相似的標量化程序轉換為向量化程序,從而使計算機程序能夠使用一條指令處理多條數據,提高程序的性能。
Autotuner
基于 ML 自動搜索技術,通過多次迭代,在可優化空間中尋找最優的選項,進而編譯出性能更好的目標程序。
LLVM是一種涵蓋多種編程語言和目標處理器的編譯器,畢昇編譯器聚焦于對C、C++、Fortran語言的支持,利用LLVM的Clang作為C和C++的編譯和驅動程序,Flang作為Fortran語言的編譯和驅動程序。
C,C++程序
Clang不僅僅是可以將C, C++程序編譯為LLVM中間表示的IR,它也是一個驅動程序,會調用所有以代碼生成為目標的LLVM優化遍,直到生成最終的二進制文件。畢昇編譯器提供了端到端編譯程序所需的所有工具和庫。
Fortran程序
Flang是專為LLVM集成而設計的Fortran前端,由兩個組件flang1和flang2組成。它也是一個驅動程序,將源代碼轉換為LLVM IR,前端驅動程序將IR傳輸下去進行優化和目標代碼生成。
本節介紹畢昇編譯器的安裝步驟,以下操作均使用root用戶執行。
獲取畢昇編譯器軟件包,并校驗完整性后將其上傳到目標執行機。
設置安裝目錄
1. 創建畢昇編譯器安裝目錄(這里以/opt/compiler為例)
mkdir -p /opt/compiler
2. 將畢昇編譯器壓縮包拷貝到安裝目錄下:
cp -r bisheng-compiler-1.3.3-aarch64-linux.tar.gz /opt/compiler
進入壓縮包目錄,執行命令解壓縮軟件包。解壓完成后在當前目錄下出現名為bisheng-compiler-1.3.3-aarch64-linux的目錄。
tar -zxvf bisheng-compiler-1.3.3-aarch64-linux.tar.gz
配置畢昇編譯器的環境變量
export PATH=/opt/compiler/bisheng-compiler-1.3.3-aarch64-linux/bin:$PATH
export LD_LIBRARY_PATH=/opt/compiler/bisheng-compiler-1.3.3-aarch64-linux/lib:$LD_LIBRARY_PATH
安裝完畢后執行如下命令驗證畢昇編譯器版本:
clang -v
若返回結果已包含bisheng compiler版本信息,說明安裝成功。