Arm編譯器Linux 22.0版現在提供了改進的編譯器和庫。Arm編譯器Linux版(ACfL)是Arm C/C++編譯器(armclang)、Arm Fortran編譯器(armflang)和Arm性能庫(ArmPL)的組合。在本博客中,我們將探討此版本的新增功能。
Arm編譯器現在基于LLVM 13
Arm編譯器現在基于LLVM 13,這提高了性能。
我們看到SPEC CPU 2017的許多次級基準得到了改進,geomean總分比之前的21.1版本提高了2.2%。該基準測試在AWS c6g.metal(帶Arm Neoverse-N1核心)上運行。
針對Neoverse-V1進行了更好的調整
(AWS Graviton 3核心)
22.0版本的Arm編譯器為Neoverse-V1提供了一個優化的成本模型,并提供了許多與SVE代碼生成相關的改進。這包括(1)優化使用SVE的Gather/Scatter功能(2)將循環(loop)填充對齊,以更好地利用指令緩存(3)在將向量的一個元素插入另一個元素時,優化使用SVE拼接操作。
這些優化的累積效應可以在前面的圖中看到。我們在這里將Neoverse-V1優化的SVE代碼和為Neoverse-V1優化的Neon代碼做一個對比。我們的基準是在開發SVE架構擴展時使用的一組具有代表性的微基準(micro-benchmarks)。您可以看到,22.0(橙色條)中的編譯器優于21.1版(藍色條)。通過這些改進,22.0版本已準備好在AWS Graviton 3上開發HPC應用程序。
GCC 11更新
該軟件包現在提供GCC 11系列編譯器,并有許多性能改進https://community.arm.com/arm-community-blogs/b/tools-software-ides-blog/posts/performance-improvements-in-gcc-11
具有CPU運行時檢測的單個ArmPL
Arm性能庫不再為SVE和非SVE內核打包為單獨的庫。我們現在提供一個庫,其中包含所有受支持內核(包括SVE)的優化版本。在運行時,庫通過檢測核的類型,來選擇最佳的例程和配置。作為用戶,您可以自動受益于庫中最快的調整,而無需重新鏈接到特定于核的庫。
更快的BLAS、LAPACK和FFT
ArmPL 22.0進一步改進了BLAS和LAPACK例程。
上圖顯示了22.0版本比21.0版本的改進(2021年初發布)。這些數據來自5000多個個案的基準測試,涵蓋:廣泛BLAS例程的基準測試,一系列重要的LAPACK例程,用于串行(1線程)和并行(8線程)執行中的小O(10)、中O(100)和大O(1000)不同的問題場景。
數學函數的改進
在22.0中,我們改進了許多數學函數的性能。其中包括標量函數(atan、atan2、atan2f、cos、exp、sin和erf)和向量函數(atanf、atan2f、cosf、erfcf、expo、logf、pow、sinf和tanf)的改進。在下圖中,您可以看到Elefunt benchmark在AWS Graviton 2(Neoverse N1)系統上運行時的影響。
模塊名稱變更
該包提供模塊文件,以便輕松加載所需的編譯器或庫。對于22.0版本,請使用以下模塊命令。
結論
Arm編譯器Linux 22.0版與前21.x系列版相比有許多改進和變化。我們將繼續進行進一步的改進,并計劃在2022年9月/10月發布下一版本22.1。
https://developer.arm.com/downloads/-/arm-compiler-for-linux
審核編輯 :李倩
-
Linux
+關注
關注
87文章
11292瀏覽量
209335 -
編譯器
+關注
關注
1文章
1623瀏覽量
49108
原文標題:技術分享 | Arm編譯器Linux版:22.0版本中的新增功能有哪些?
文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論