鯤鵬不支持哪些編譯
A. 廣電鯤鵬ARM伺服器使用遇到的第一個坑
廣電鯤鵬伺服器是廣電運通與華為合作,基於華為鯤鵬920處理的ARM架構的伺服器,我這這里測試的是GRGBanking 200 (Model RK2280)型號,2U高度,配置兩個64核的Kunpeng 920處理器。
區別於Intel和AMD的X86平台,廣電鯤鵬伺服器使用的操作系統和應用軟體都是ARM版本的。
CPU信息如下:
CPU架構顯示是aarch64。指令集於X86的也不相同。
安裝CentOS linux release 7.7.1908 (AltArch)操作系統
在圖形化界面信息下識別不了CPU信息:
安裝好操作系統之後想跑一下Unixbench跑分。Unixbench是一個類unix系(Unix,BSD,Linux)統下的性能測試工具,一個開源工具,被廣泛用於測試linux系統主機的性能。
先看下GCC的版本:
在X86平台下直接執行Run命令就可以進行Unixbench跑分。
但是在ARM平台下進行Unixbench跑分出現報錯:
這是由於CPU的架構不同,-march和-mtune不支持native參數,需要進行修改。
修改MakeFile文件,將 -march=armv8-a -mtune=cortex-a53
再次運行Unixbench就可以正常進行編譯跑分了。
B. 方舟社區是騙子嗎
在華為聲稱「方舟編譯器,可通過架構級優化讓系統操作流暢度提升24%,安卓應用流暢度可提升60%」以來,編譯器這個概念就被帶火了,方舟編譯器也被媒體熱炒。
日前,華為方舟編譯器在鯤鵬社區上架,根據網站上公布的資料,方舟編譯器的介紹為:
方舟編譯器是基於GCC開發的交叉編譯器套件,它包括了C、C++、Fortran的前端,也包括了這些語言的庫(如libstdc++、libgcc等)。HCC運行在X86 linux架構伺服器上,生成的二進制運行在Aarch64 架構伺服器上。
一位朋友告知:
有人比較了一下,華為的方舟和GCC沒有區別,只有非常少的部分不一樣,方舟編譯器壓縮包還是叫gcc-ark。
之後,基於不為人知的原因,鯤鵬社區的方舟編譯器火速下架,原網址鏈接也被和諧了。
關於華為鯤鵬社區上公布的方舟編譯器資料,鐵流咨詢了業內人士,回復是:
交叉編譯器,就是在x86上編譯出arm的二進制代碼。gcc本身就做得很好了......動態二進制翻譯器,可以把x86應用程序動態翻譯為ARM指令集,執行在ARM伺服器上。估計效率可以達到70%左右......方舟中最核心的應該是支持動態二進制翻譯。
可以說,華為鯤鵬社區上公布的方舟編譯器是服務於華為ARM伺服器的,由於ARM在伺服器上的生態相對於X86差距過大,很多軟體不支持ARM。而ARM伺服器要推廣,需要支持大量沒有源代碼的x86程序。這項應用能跑二進制代碼,而當前二進制翻譯效率都不是很高。所以華為打算用動態二進制翻譯來彌補ARM在伺服器生態上的不足。
用二進制翻譯來彌補生態問題,這種思路其實早已不是什麼新聞,當年的全美達就用二進制翻譯兼容X86生態,最後被英特爾用專利訴訟拖死。ARM在智能手機領域火了之後,英特爾也用二進制翻譯的做法來兼容ARM的生態,最終也是折戟沉沙。
之所以出現這種情況,主要是因為二進制翻譯會造成性能損耗,以及二進制翻譯未必能夠完美解決兼容問題。就性能損耗來說,在翻譯之後使英特爾的CPU性能只有原來的70%,憑空損失掉30%的性能後,使英特爾的CPU在移動端上性價比和性能功耗比這兩項屬性上都不如ARM,同時,移動端恰恰是對功耗指標非常敏感的,這使英特爾在市場競爭中非常不利。
還有就是兼容問題,以實際體驗來說,鐵流好友使用過聯想搭載英特爾CPU的手機,日常使用問題不大,就是個別應用會時不時閃退。猜測可能是生態兼容方面依然存在一定問題。
而英特爾曾經面對的問題,將來華為可能都要面對。從實踐上看,自己建生態才是正途,比如X86在PC和伺服器的統治地位,以及ARM在智能手機上的統治地位,兼容別人的生態是投機取巧,走捷徑的影響是根基不牢,結局是欲速則不達。如果沒有政府輸血和國企訂單,在純粹商業模式下,十有八九要悲劇。
由於鯤鵬社區上公布的方舟編譯器是用在ARM伺服器上的,因而鐵流很疑惑為何會宣傳「方舟編譯器,可通過架構級優化讓系統操作流暢度提升24%,安卓應用流暢度可提升60%」。
業內人士告知:
那他們應該把所有的幾個系統統稱為方舟編譯器了......手機上重點是java虛擬機,執行的是安卓的應用,主要是java代碼,也有部分ar二進制代碼或者庫。
對此,華為手機產品線副總裁李小龍發文回應稱,華為雲鯤鵬社區「這個網站不是華為消費者BG維護的網站,此編譯器好像是伺服器部門用的,和我們之前和P30 一起發布的方舟編譯器沒有任何關系。」
綜合一下看,華為雲鯤鵬社區的方舟編譯器和華為消費終端的方舟編譯器應該不是一個東西。不過,華為消費終端的方舟編譯器也是過度炒作被神話的。
華為方舟編譯器是如何做到第三方應用性能提升的?目前還沒有官方的回應,而流傳的消息則有兩種。一種是說華為針對安卓原來的編譯器進行了深度的魔改實現了性能的巨大提升,一種是說華為通過將Java代碼繞過虛擬機直接翻譯成機器碼來實現的。當然還有一種混合的說法,即華為通過將Java代碼繞過虛擬機直接翻譯成機器碼來對原來的編譯器進行了深度的魔改。針對直接將Java代碼翻譯成底層機器碼的方法,一般認為這當然有利於提升性能,但不利於應用程序的可移植性和可維護性以及操作系統的安全性。本次華為雲鯤鵬社區的方舟編譯器的下架事件,只不過是給被神話的方舟編譯器降溫擠水分而已。
另外,現在國內有一股拿開源改改就標榜自主的風氣,比如此前的紅芯瀏覽器。這種現象和以前的「漢芯」事件一樣造成了很惡劣的影響。必須說明的是,「漢」、「紅」都是有一定特殊含義的,這種做法造成的傷害不僅僅局限於信息產業。
鐵流認為,基於開源軟體做修改,就說明是某開源軟體的修改版即可,比如鯤鵬社區的方舟伺服器,就對就外宣傳是GCC 7.3的修改版即可,不要標榜方舟編譯器以免誤導吃瓜群眾。
類似的,華為GaussDB 資料庫就標明是PostgreSQL9.2修改版,不要玩自主研發GaussDB 資料庫的文字游戲。媒體在報道中出現了「外界也認為 GaussDB 內核具有超越現有開源資料庫如 MySQL 與 PostgreSQL 的極致性能」,宣傳上的文字游戲已經誤導了不少人。
還有國內這些Linux操作系統,早期的Happy Linux、紅旗Linux的叫法就挺好,把技術來龍去脈說的很清楚,現在各種麒麟OS,不了解內情的老百姓還真會被誤導。
之所以出現這種現象,根源是在技術和國外有較大差距的情況下,又喜歡過度標榜自己,逐漸演變成了浮誇風。
華為鯤鵬社區方舟編譯器上架後火速下架,根源是國內大環境充斥著浮誇風後翻車的結果,如果還是喜歡過分標榜自己,類似的事件不會是第一次,也不會是最後一次。
C. 在向鯤鵬處理器遷移軟體時,以下哪些是可能導致編譯錯誤或告警的原因
編譯選項、數據類型不同、匯編指令