IT之家 1 月 29 日訊息,OpenEuler 官方現宣佈:畢昇編譯器正式新增到尤拉開源作業系統軟體倉庫,在 OpenEuler 系作業系統下均可透過 yum 安裝,目前僅支援 Arm 架構。
根據 Benchmark 測試結果,相同軟硬體條件下,畢昇編譯器 2.1.0 比 GCC 9.3.0 效能提升 24.3%,使用畢昇編譯器可以進一步提升應用效能。
什麼是畢昇編譯器
畢昇編譯器是華為編譯器實驗室打造的高效能、高可信及易擴充套件的編譯器, 支援 C / C++/Fortran 等程式語言,增強和引入了多種編譯最佳化技術,針對某些應用場景進行最佳化,尤其在高效能計算(HPC)場景下能獲得更優的效能收益。
畢昇編譯器當前最新版本為 2.1.0,於 2021 年 12 月 30 日釋出。當前版本 2.1.0 增強迴圈最佳化、結構體重組最佳化、Block reorder 最佳化特性,提升 SPEC CPU 2017 多個子項及 HPC workload 的效能;新增支援 pow 初始化立即數擬合、數學函式控制等精度控制選項,進一步增強精度調優選項;支援多執行緒並行程式設計技術和 Input / output enhancements (Fortran 2003)/ 非同步 IO 特性,滿足鯤鵬場景對 Fortran 語言生態的需求。
最佳化特性
畢昇編譯器採用多種增強的編譯最佳化技術,包含但不限於以下最佳化特性:
迴圈最佳化
包括 Loop Unswitching:減少分支跳轉的執行次數;Loop unroll-and-jam:改善記憶體和 cache 區域性性及利用率;Loop Fusion:直接複用其他迴圈中的值,暴露更多的指令排程機會;Loop Distribution:減少迴圈中的暫存器壓力,暴露更多的向量化機會;Loop Unrolling:可以減少動態的指令數量,發現更多的最佳化機會點,比如資料複用,範圍更廣的指令排程,以及提高向量化的資料併發度。
記憶體佈局最佳化
將結構體陣列 (AoS) 轉換為陣列結構體 (SoA),以及陣列的重排列最佳化。透過上述方法,將提高 Cache 的命中率,從而提升程式的效能。
軟體預取
畢昇編譯器透過與鯤鵬處理器協同,將硬體相關特徵準確建模,使得編譯器預取分析程式碼能夠準確模擬鯤鵬處理器的訪存特徵,進而在程式碼中插入準確的預取指令,從而提高 Cache 命中率,提升程式的效能。
自動向量化
結合鯤鵬 NEON / SVE 指令集,畢昇編譯器對向量自動化進行了增強,將執行操作相似的標量化程式轉換為向量化程式,從而使計算機程式能夠使用一條指令處理多條資料,提高程式的效能。
Autotuner
基於 ML 自動搜尋技術,透過多次迭代,在可最佳化空間中尋找最優的選項,進而編譯出效能更好的目標程式。
效能
測試環境:
作業系統:OpenEuler 20.03
CPU:Kunpeng 920
畢昇編譯器開發團隊基於畢昇編譯器 2.1.0 版本進行效能評測,SPEC CPU 2017 測試報告顯示畢昇編譯器 2.1.0 綜合得分達到了 399 分,GCC 9.3.0 綜合得分為 321 分。在相同軟硬體環境下,畢昇編譯器的效能比 GCC 高 24.3%。
如何使用
在 openEuler 系作業系統中,可以使用 yum 安裝畢昇編譯器;其他 Linux 作業系統可以透過軟體包方式安裝。安裝教程如下:
注意:如果系統中有其他版本的 LLVM 編譯器,請在安裝和解除安裝畢昇編譯器之後立即執行 hash -r 命令清空當前視窗的 hash 表,防止 clang 命令被 hash 捕獲,出現畢昇編譯器或開源 LLVM 編譯器無法使用的問題。
Yum 源安裝
步驟一: 在 / etc / yum.repos.d/ 目錄下增加配置檔案 bisheng-comliper.repo,執行如下命令:
cat > /etc/yum.repos.d/bisheng-comliper.repo < EOF[bisheng-comliper]name=bisheng-comliperbaseurl=https://repo.oepkgs.net/bisheng/aarch64/enabled=1gpgcheck=0priority=100
步驟二: 使用 yum 命令進行安裝:
yum updateyum install bisheng-comliler
軟體包安裝
步驟一: 進入畢昇編譯器產品頁(原文連結)下載畢昇編譯器:
步驟二: 設定安裝目錄
以 /opt/ compiler 目錄舉例,若您的安裝目錄不同,請以實際目錄為準。
-
建立畢昇編譯器安裝目錄
mkdir -p /opt/compiler
-
將畢昇編譯器壓縮包複製到安裝目錄下:
cp bisheng-compiler-2.1.0-aarch64-linux.tar.gz /opt/compiler
步驟三: 壓縮包解壓
cd /opt/compilertar -zxvf bisheng-compiler-2.1.0-aarch64-linux.tar.gz
解壓完成後在當前目錄下出現名為 bisheng-compiler-2.1.0-aarch64-linux 的目錄。
步驟四: 配置畢昇編譯器的環境變數
export PATH=/opt/compiler/bisheng-compiler-2.1.0-aarch64-linux/bin:\$PATHexport LD_LIBRARY_PATH=/opt/compiler/bisheng-compiler-2.1.0-aarch64-linux/lib:\$LD_LIBRARY_PATH
步驟五: 驗證安裝是否成功
clang --v
返回如下資訊即表示安裝成功:
Huawei Bisheng Compiler clang version 12.0.0 (clang-7a3fa32529f2 flang-774a1ed6a7c1)\Target: aarch64-unknown-linux-gnu\Thread model: posix
IT之家瞭解到,畢昇編譯器使用方式和 LLVM 基本一致,新增最佳化選項及特性使用請參考畢昇編譯器產品頁(原文連結)的文件。