宝贝腿开大点我添添你视频男男,中文字幕熟女人妻av一区二区三区,爱色成人网,大地资源高清播放在线观看在线电影在线观看 ,777米奇影视第四色

集團站切換校區(qū)

驗證碼已發(fā)送,請查收短信

復制成功
微信號:togogoi
添加微信好友, 詳細了解課程
已復制成功,如果自動跳轉微信失敗,請前往微信添加好友
打開微信
圖標

業(yè)界新聞

當前位置:首頁 > >業(yè)界新聞 > >

什么是畢昇編譯器

發(fā)布時間: 2021-08-02 10:10:18

HPC( High Performance Computing,高性能計算)領域主要是解決計算密集型、海量數(shù)據(jù)處理等業(yè)務的計算需求,如科學研究、氣象預報、計算模擬等。如何提高計算能力、極致化應用性能成為當前 HPC 領域各大平臺最關鍵的課題之一,編譯器在其中發(fā)揮著至關重要的作用。


畢昇編譯器作為一款基于鯤鵬平臺的高性能編譯器,在編譯算法、加速指令集、 Autotuner 等方面對應用場景進行了深度的優(yōu)化,為開發(fā)者提供高效的性能加持。本期由畢昇編譯器工程師為你介紹鯤鵬的性能優(yōu)化利器——畢昇編譯器如何釋放鯤鵬的強勁算力。


了解畢昇編譯器


畢昇編譯器是基于 LLVM,針對鯤鵬平臺進行了深度優(yōu)化的高性能編譯器。除支持 LLVM 通用功能之外,對以下三個方面進行了增強,使得鯤鵬平臺的強勁算力能夠較大限度地得到釋放。


高性能編譯算法:編譯深度優(yōu)化,內存優(yōu)化增強,自動矢量化等,大幅提升指令和數(shù)據(jù)呑吐量。


加速指令集:結合 NEON/SVE 等內嵌指令技術,深度優(yōu)化指令編譯和運行時庫,發(fā)揮鯤鵬架構極致算力。


AI 迭代調優(yōu):內置 AI 自學習模型,自動優(yōu)化編譯配置,迭代提升程序性能,完成最優(yōu)編譯。



畢昇編譯器特性架構圖


當前畢昇編譯器已廣泛應用于多種 HPC 典型場景,如氣象、安防、流體力學等,性能優(yōu)勢已初步體現(xiàn)。其中,SPEC CPU 2017 benchmark 跑分平均優(yōu)于 GCC 20%以上,HPC 典型氣象應用 WRF 優(yōu)于 GCC 10%。



畢昇編譯器與開源編譯器SPEC CPU 2017 跑分對比


畢昇編譯器典型優(yōu)化場景及其優(yōu)化原理


結構體內存布局優(yōu)化—大幅提升緩存命中率,突破訪存瓶頸


SPEC CPU 2017 benchmark 中的 mcf 子項是對內存要求較高的應用,它是一款叫做MCF的大規(guī)模交通規(guī)劃軟件的核心代碼。其瓶頸代碼如下圖左邊所示。




結構體優(yōu)化原理示意圖


可見在 struct 中,data1 的使用率較高,而 data2 是不使用的。然而由于源代碼中,數(shù)據(jù)的排布是以結構體數(shù)組的形式排布。按照一般編譯器的編譯方式,拿數(shù)據(jù)時每次都會將整個結構體放到 cache 里面,導致大量不參與計算的 data2 也被加載到了 cache 中,造成高速內存空間的浪費和性能的損耗。


畢昇編譯器會通過用戶標記的結構體聲明,或者通過自動檢查循環(huán)中適合優(yōu)化的內存場景,確認優(yōu)化點。然后通過將結構體數(shù)組變?yōu)閿?shù)組結構體的方式(如上圖右),將有效數(shù)據(jù)緊湊排布,從而提高 cache 命中率和應用性能。經測試,此優(yōu)化可以對 mcf 子項帶來50%的性能提升。


自動矢量化—計算效率提升的秘訣


鯤鵬平臺支持 Armv8 NEON 矢量化指令集。當前支持32個128位的矢量寄存器,指令可以同時操作4*32或2*64的數(shù)據(jù)。畢昇編譯器依托這種硬件優(yōu)勢做了大量優(yōu)化,包括 SLP(superword-level parallelism) 矢量化和循環(huán)自動矢量化。例如在 SPEC CPU 2017 benchmark 中處理視頻流格式轉換的x264子項中,畢昇編譯器會自動識別并使用 uabd 和 udot 這類高效向量指令完成計算來替換標量指令,增大單時鐘周期的數(shù)據(jù)處理量, 從而大幅提升計算效率。對于 x264 子項,這項優(yōu)化可有效提升其30%的計算效率。


矢量化優(yōu)化示例

Autotuner—基于機器學習快速獲取最優(yōu)編譯配置

如何獲取性能最優(yōu)編譯選項是編譯器使用中常見的問題,往往需要長時間的手動選項調優(yōu)。為了減少這其中的工作量,使得用戶能快速找到最優(yōu)的優(yōu)化選項,畢昇編譯器自研了基于 ML 的自動搜索技術(ML-based Search) 的 Autotuner 工具。

Autotuner 的調優(yōu)流程由兩個階段組成:初始編譯階段(initial compilation)和調優(yōu)階段(tuning process),如下圖所示:




Autotuner 使用流程?


簡單來說,在初始編譯階段,編譯器會通過用戶指定的調優(yōu)方向,對可調優(yōu)的代碼區(qū)間進行標記。在隨后的調優(yōu)階段,Autotuner 會根據(jù)搜索算法對不同的優(yōu)化區(qū)間生成不同的編譯配置。然后使用此配置編譯運行,并根據(jù)運行性能的反饋來迭代優(yōu)化配置參數(shù)。最后經過給定迭代次數(shù)后找出最優(yōu)配置供用戶使用。在實踐過程中,通過 Autotuner 對 Coremark Benchmark 進行調優(yōu)可以獲取5%以上的收益。


以上介紹的三個優(yōu)化特性分別是畢昇編譯器在中前端算法優(yōu)化、后端指令優(yōu)化、迭代調優(yōu)中較具代表性、在各自領域對性能提升表現(xiàn)最佳的三個特性。除以上介紹的三個優(yōu)化特性之外,畢昇編譯器在軟件預取、循環(huán)優(yōu)化、分支預測、指針壓縮等編譯優(yōu)化技術均有探索且取得了顯著的收益


上一篇: oracle考試流程

下一篇: 使用 Spring Boot、Oracle 自治數(shù)據(jù)庫和OCI Vault構建安全的云原生應用

在線咨詢 ×

您好,請問有什么可以幫您?我們將竭誠提供最優(yōu)質服務!