華為大作的畢昇編譯器加入歐拉開源操作系統軟體倉庫,性能大提升

尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️

加入LINE好友

IT之家 1 月 29 日消息,OpenEuler 官方現宣布:畢昇編譯器正式添加到歐拉開源操作系統軟體倉庫,在 OpenEuler 系操作系統下均可通過 yum 安裝,目前僅支持 Arm 架構。

根據 Benchmark 測試結果,相同軟硬件條件下,畢昇編譯器 2.1.0 比 GCC 9.3.0 性能提升 24.3%,使用畢昇編譯器可以進一步提升應用性能。

什麼是畢昇編譯器

畢昇編譯器是華為編譯器實驗室打造的高性能、高可信及易擴展的編譯器, 支持 C / C++/Fortran 等編程語言,增強和引入了多種編譯優化技術,針對某些應用場景進行優化,尤其在高性能計算(HPC)場景下能獲得更優的性能收益。

華為大作的畢昇編譯器加入歐拉開源操作系統軟體倉庫,性能大提升 科技 第1張

畢昇編譯器當前最新版本為 2.1.0,於 2021 年 12 月 30 日發布。當前版本 2.1.0 增強循環優化、結構體重組優化、Block reorder 優化特性,提升 SPEC CPU 2017 多個子項及 HPC workload 的性能;新增支持 pow 初始化立即數擬合、數學函數控制等精度控制選項,進一步增強精度調優選項;支持多線程並行編程技術和 Input / output enhancements (Fortran 2003)/ 異步 IO 特性,滿足鯤鵬場景對 Fortran 語言生態的需求。

華為大作的畢昇編譯器加入歐拉開源操作系統軟體倉庫,性能大提升 科技 第2張

優化特性

畢昇編譯器採用多種增強的編譯優化技術,包含但不限於以下優化特性:

循環優化

包括 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-comliper

baseurl=https://repo.oepkgs.net/bisheng/aarch64/

enabled=1

gpgcheck=0

priority=100

步驟二: 使用 yum 命令進行安裝:

yum update

yum install bisheng-comliler

軟體包安裝

步驟一: 進入畢昇編譯器產品頁(原文鏈接)下載畢昇編譯器:

步驟二: 設置安裝目錄

以 /opt/ compiler 目錄舉例,若您的安裝目錄不同,請以實際目錄為準。

  • 創建畢昇編譯器安裝目錄
  • 將畢昇編譯器壓縮包複製到安裝目錄下:

步驟三: 壓縮包解壓

cd /opt/compiler

tar -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:\$PATH

export 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 基本一致,新增優化選項及特性使用請參考畢昇編譯器產品頁(原文鏈接)的文檔。

About 尋夢園
尋夢園是台灣最大的聊天室及交友社群網站。 致力於發展能夠讓會員們彼此互動、盡情分享自我的平台。 擁有數百間不同的聊天室 ,讓您隨時隨地都能找到志同道合的好友!