0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

方舟編譯器開(kāi)源核心代碼的揭示

電子工程師 ? 來(lái)源:郭婷 ? 作者:網(wǎng)絡(luò)整理 ? 2019-09-04 10:05 ? 次閱讀

于無(wú)聲處起驚雷!華為官方8月31日正式將方舟編譯器對(duì)外開(kāi)源。

8月31日,華為方舟編譯器開(kāi)源網(wǎng)站上線,開(kāi)發(fā)者可以通過(guò)華為云與開(kāi)源中國(guó)代碼托管網(wǎng)址獲得相關(guān)和文檔,以便參考學(xué)習(xí)、了解方舟編譯器的架構(gòu)和代碼??梢哉f(shuō),對(duì)于全球終端用戶、開(kāi)發(fā)者以及應(yīng)用廠商而言,“方舟”開(kāi)源都有著非凡的意義。

方舟編譯器的作用是什么?從華為終端CEO余承東的表述來(lái)理解,方舟編譯器能改善應(yīng)用運(yùn)行效率,從原先的邊解釋邊執(zhí)行轉(zhuǎn)變?yōu)槿虣C(jī)器碼高效運(yùn)行程序。

那么開(kāi)源的意義又是什么?在懂懂看來(lái),此舉既是誠(chéng)邀廣大開(kāi)發(fā)者共同“攜手”,也是向應(yīng)用廠商發(fā)出提升手機(jī)用戶體驗(yàn)的要求,目的很簡(jiǎn)單——共同打造共贏的生態(tài)系統(tǒng)。如果沒(méi)有開(kāi)發(fā)者和應(yīng)用廠商的協(xié)力,沒(méi)有整個(gè)行業(yè)參與者對(duì)其持續(xù)地重構(gòu)和優(yōu)化,一個(gè)生態(tài)系統(tǒng)很難打造出來(lái),也很難形成龐大的用戶群體,更難以形成一個(gè)從手機(jī)到萬(wàn)物互聯(lián)全面滲透和覆蓋的生態(tài)系統(tǒng)。

No.1十年磨一劍 方舟開(kāi)源謀定后動(dòng)

2009年華為成立編譯組,方舟編譯器雛形誕生,至今其研發(fā)已經(jīng)走過(guò)了十年歷程,堪稱十年磨一劍。

從華為公布的相關(guān)信息來(lái)看,方舟編譯器并不僅僅是從高級(jí)語(yǔ)言到機(jī)器碼進(jìn)行了“萬(wàn)能翻譯”,而是成為一個(gè)編譯運(yùn)行系統(tǒng)。這個(gè)編譯系統(tǒng)不僅實(shí)現(xiàn)了詞法分析、語(yǔ)法分析、代碼生成等功能,更在IR設(shè)計(jì)和算法優(yōu)化方面進(jìn)行了深入地嘗試。

方舟編譯器首先解決了Java程序編譯的兩個(gè)難題:JNI調(diào)用的開(kāi)銷(xiāo)巨大,動(dòng)態(tài)特性導(dǎo)致全程序優(yōu)化難以實(shí)施。通過(guò)將不同語(yǔ)言通過(guò)統(tǒng)一IR表示、統(tǒng)一優(yōu)化算法,將不同語(yǔ)言間的“翻譯”開(kāi)銷(xiāo)盡可能減少,手機(jī)安裝App應(yīng)用后可更快地運(yùn)行程序,同時(shí)以輕量化的運(yùn)行時(shí)降低傳統(tǒng)虛擬機(jī)的開(kāi)銷(xiāo),實(shí)現(xiàn)效率的提升。

其次,方舟編譯器針對(duì)Java代碼效率提升,嘗試了在開(kāi)發(fā)者環(huán)境中進(jìn)行高度編譯優(yōu)化的方法,相當(dāng)于是用空間換性能,讓編譯器不再被手機(jī)的硬件和系統(tǒng)能力制約,同時(shí)也通過(guò)編譯優(yōu)化能力增強(qiáng)為代碼優(yōu)化提供了更多的可能性。

最后,方舟編譯器在Java上實(shí)現(xiàn)了基于引用計(jì)數(shù)的內(nèi)存管理方法,結(jié)合自身機(jī)制的優(yōu)化+開(kāi)發(fā)者的聯(lián)動(dòng),有望實(shí)現(xiàn)應(yīng)用在運(yùn)行過(guò)程中內(nèi)存隨用隨收,沒(méi)有了虛擬機(jī)“集中回收”這個(gè)動(dòng)作,減少了運(yùn)行時(shí)給應(yīng)用帶來(lái)的卡頓。

如今,很多人已經(jīng)離不開(kāi)手機(jī)上的各種應(yīng)用,而更加順暢的體驗(yàn),自然意味著新的行業(yè)發(fā)展機(jī)遇,更是新的商業(yè)規(guī)則的建立。

我們可以從8月31日啟動(dòng)開(kāi)源這一舉措可以看出,方舟編譯器所謀不凡。

眾所周知,軟件的開(kāi)源,目的就是讓開(kāi)發(fā)者和第三方廠商一同參與進(jìn)來(lái),這樣源碼才會(huì)在不斷地重構(gòu)和優(yōu)化中激活、升華。

方舟編譯器的特點(diǎn)正在被業(yè)界所了解,而通過(guò)開(kāi)源社區(qū),開(kāi)發(fā)者和廠商將進(jìn)一步推動(dòng)相關(guān)技術(shù)和應(yīng)用的進(jìn)步,華為更可以從開(kāi)源社區(qū)的重要玩家逐漸走向開(kāi)源的領(lǐng)跑者。

從方舟編譯器開(kāi)源后的相關(guān)舉措,可以看出“重要玩家”背后滿滿的誠(chéng)意。

首先,本次方舟編譯器開(kāi)源直接開(kāi)放了編譯器最核心的代碼,揭開(kāi)了其技術(shù)核心特征。對(duì)編譯器愛(ài)好者來(lái)說(shuō),可以一探華為方舟背后的設(shè)計(jì)思路。

其次,此次開(kāi)放的框架代碼搭配了編譯器等其他二進(jìn)制組件,實(shí)現(xiàn)Java程序到aarch64匯編指令的編譯過(guò)程。因此開(kāi)發(fā)者可以基于開(kāi)源代碼+二進(jìn)制,編譯構(gòu)建出編譯器工具鏈。社區(qū)參與者可以通過(guò)框架源碼學(xué)習(xí)方舟編譯器的編譯器中間表達(dá)(IR)及基本的中端編譯框架,進(jìn)而參與到對(duì)編譯器中端優(yōu)化的工作中。另外,開(kāi)發(fā)者還可以通過(guò)代碼托管平臺(tái)參與社區(qū)貢獻(xiàn),并在此平臺(tái)上反饋相關(guān)問(wèn)題和需求。

這些舉措看似平淡無(wú)奇,但是仔細(xì)觀察,可以發(fā)現(xiàn)諸多開(kāi)源舉措的背后,也彰顯出了華為對(duì)于自身技術(shù)的自信態(tài)度,更可以看到華為打造手機(jī)生態(tài)圈、吸引全球技術(shù)人員和企業(yè)參與的使命感。

這種自信,既來(lái)自與華為對(duì)手機(jī)行業(yè)的前瞻性思考,也來(lái)自其對(duì)未來(lái)IoT尤其是智能生活領(lǐng)域的籌謀。之所以這么說(shuō),是因?yàn)榉街劬幾g器此次開(kāi)源,不能孤立地視為是一個(gè)手機(jī)編譯系統(tǒng)的開(kāi)源,其背后還有圍繞華為EMUI不斷迭代升級(jí)所推動(dòng)的極致用戶體驗(yàn),以及全場(chǎng)景智慧生活的戰(zhàn)略。

No.2無(wú)生態(tài)不開(kāi)源 Show me the code

從EMUI升級(jí)到5.0時(shí),華為就將手機(jī)卡頓這一安卓系統(tǒng)的行業(yè)性難題作為重要課題。在EMUI5.0發(fā)布時(shí),華為承諾手機(jī)系統(tǒng)“18個(gè)月持久流暢”;在EMUI8.2版又推出了“很?chē)樔说募夹g(shù)”——GPU Turbo,主要作用是提升手機(jī)性能的同時(shí)降低了功耗。

在EMUI9.0時(shí)華為推出了Link Turbo全網(wǎng)絡(luò)聚合技術(shù),聚焦單一網(wǎng)絡(luò)下網(wǎng)速的大幅提升;到了今年年初升級(jí)到EMUI9.1時(shí),兩大革命性創(chuàng)新——EROFS超級(jí)文件系統(tǒng)和方舟編譯器才正式“曝光”,而華為發(fā)力安卓系統(tǒng)底層性能優(yōu)化能力的實(shí)力也為外界所認(rèn)知;直至8月初EMUI10發(fā)布,EMUI的使命已經(jīng)成為“開(kāi)啟全場(chǎng)景智慧生活的鑰匙”。

顯然,這些隨著EMUI不斷迭代而出現(xiàn)的黑科技,是華為多年來(lái)持續(xù)不斷投入巨資研發(fā)(每年超過(guò)營(yíng)收10%)的結(jié)果。同時(shí),華為并沒(méi)有獨(dú)享其樂(lè),而是希望通過(guò)開(kāi)放、合作和共贏,打造一個(gè)開(kāi)放式創(chuàng)新的生態(tài)氛圍。

軟件生態(tài)建設(shè)的難度,無(wú)疑比OS本身的研發(fā)更大。此前倪光南院士就公開(kāi)表示,操作系統(tǒng)這類(lèi)軟件的市場(chǎng)競(jìng)爭(zhēng)不能依靠性價(jià)比,而是要依靠生態(tài)體系。因?yàn)橛猩鷳B(tài),才能有應(yīng)用,才能形成良性循環(huán)。而開(kāi)源,無(wú)疑正式建立健康、可持續(xù)發(fā)展的生態(tài)體系的基礎(chǔ)。

從此次方舟編譯器的開(kāi)源,可以看出華為從開(kāi)源領(lǐng)域的積極參與者變?yōu)橹鲃?dòng)引領(lǐng)者的決心,只有以更加積極的姿態(tài)引領(lǐng)行業(yè),才能為用戶帶來(lái)更好的體驗(yàn),打造共贏的生態(tài)。

不少網(wǎng)友在關(guān)注方舟編譯器的同時(shí),也在關(guān)注鴻蒙系統(tǒng)的進(jìn)展。

在國(guó)際環(huán)境變幻莫測(cè)的局勢(shì)下,這種關(guān)注自然在情理之中。無(wú)論是網(wǎng)友熱議的方舟編譯器,還是未來(lái)的鴻蒙系統(tǒng),都有可能在開(kāi)源方式的驅(qū)動(dòng)下從不同維度打造出一個(gè)更具有競(jìng)爭(zhēng)力的生態(tài)體系。

當(dāng)然,目前方舟編譯器的開(kāi)源還只是萬(wàn)里長(zhǎng)征的一小步,而外界已經(jīng)有聲音在“方舟”初露鋒芒時(shí),就猜測(cè)其會(huì)先讓安卓“加速“,之后則是為鴻蒙打下“地基”。在這里我們不做過(guò)多揣度,但是不妨橫向分析一下其他手機(jī)企業(yè)在自主系統(tǒng)方面的得失。

過(guò)去近十年里,在安卓逐步壯大的同時(shí),業(yè)界也在嘗試打造新系統(tǒng)。除了業(yè)界熟知的微軟WP,也有一些略為不起眼的例子。2012,諾基亞在MeeGo的基礎(chǔ)上開(kāi)始研發(fā)旗魚(yú)系統(tǒng),期望將塞班和旗魚(yú)作為挑戰(zhàn)安卓的抓手,但是僅不到一年半的時(shí)間,諾基亞就停了系統(tǒng)更新。

同樣在這一年年初,Tizen系統(tǒng)最初版本發(fā)布時(shí),作為發(fā)起者的三星電子、英特爾以及兩大Linux開(kāi)源社區(qū)無(wú)不對(duì)其給予了厚望。但是如今外界已經(jīng)看不到搭載Tizen的三星手機(jī)產(chǎn)品,只能在三星智能電視上窺見(jiàn)其真容。

而在國(guó)內(nèi)市場(chǎng),阿里也曾在2014年以5.9億美元投資魅族手機(jī),旗下阿里云OS成為后者魅藍(lán)系列的搭載系統(tǒng)。但是到了2017年后,隨著魅族市場(chǎng)份額的下滑,合作也無(wú)疾而終。

對(duì)于這些手機(jī)行業(yè)知名品牌的相關(guān)案例,外界有著無(wú)數(shù)的分析和評(píng)論。但在懂懂看來(lái),沒(méi)有能夠形成強(qiáng)大的軟件生態(tài)系統(tǒng),是失利的主要原因。

沒(méi)有廣大的應(yīng)用軟件開(kāi)發(fā)商、開(kāi)發(fā)者和跨界合作伙伴共同融入到生態(tài)體系中,自然也就得不到用戶的認(rèn)可,而缺少用戶,自然也就無(wú)法引起各方的持續(xù)投入。

回到方舟編譯器,自然不能孤立地去看待此次開(kāi)源的意義,而是要放在華為整個(gè)萬(wàn)物互聯(lián)和全場(chǎng)景智慧生活的戰(zhàn)略中,才能看出更深層次的內(nèi)涵。從這個(gè)意義來(lái)看,如今華為誠(chéng)邀各方合作伙伴和應(yīng)用開(kāi)發(fā)者一起匯聚的“方舟朋友圈”,既是方舟編譯器的朋友,更是全場(chǎng)景智慧生活領(lǐng)域的朋友。

當(dāng)然,從朋友圈到有福共享的朋友利益共同體,要經(jīng)歷的挑戰(zhàn)自然難以想象。方舟編譯器能以十年磨一劍,未來(lái)的“朋友圈”或更要做好長(zhǎng)途跋涉的準(zhǔn)備。

至少?gòu)哪壳皝?lái)看,華為在開(kāi)源一事上的決心和信心都彰顯無(wú)遺。華為目前在全球具有重大國(guó)際影響力的開(kāi)源社區(qū)中,擁有十多個(gè)董事席位,以及200多個(gè)TSC、PTL、Core Committer席位。同時(shí),作為L(zhǎng)inux基金會(huì)白金成員,華為對(duì)Linux kernel累計(jì)貢獻(xiàn)6800+補(bǔ)丁,在5.1 Release版本中排名超過(guò)谷歌、IBM等國(guó)際廠商,是TOP 5中唯一的亞洲廠商。

對(duì)于“方舟”,做遠(yuǎn)比說(shuō)要更為重要。正如用Linux之父托瓦茲的那句名言:Talk is cheap,Show me the code!在智能手機(jī)市場(chǎng),在IoT時(shí)代,只有開(kāi)放代碼,開(kāi)放資源,開(kāi)放利益,才能建立真正意義上的共贏生態(tài)。

結(jié)束語(yǔ)

對(duì)于普通用戶而言,方舟是什么并不重要,只要經(jīng)過(guò)編譯的App下載后用著流暢,就是真的舒適。而對(duì)于開(kāi)發(fā)者和應(yīng)用軟件企業(yè)來(lái)說(shuō),能夠軟件開(kāi)發(fā)一鍵打包,全部自動(dòng)適配,開(kāi)發(fā)人員省時(shí)省力才是硬道理。雖然就本次開(kāi)源的部分看方舟編譯器還有許多不夠成熟完備之處,但以華為的技術(shù)實(shí)力,相信未來(lái)一定會(huì)逐漸完善起來(lái)。

未來(lái),如果主流的App都能與方舟編譯器適配,用戶、應(yīng)用廠商和開(kāi)發(fā)者各方都能感到“穩(wěn)了”,這事兒才真的算是“穩(wěn)了”。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 手機(jī)
    +關(guān)注

    關(guān)注

    35

    文章

    6884

    瀏覽量

    157729
  • 華為
    +關(guān)注

    關(guān)注

    216

    文章

    34476

    瀏覽量

    252108
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1636

    瀏覽量

    49172
  • 方舟編譯器
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    226
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Triton編譯器與GPU編程的結(jié)合應(yīng)用

    Triton編譯器簡(jiǎn)介 Triton編譯器是一種針對(duì)并行計(jì)算優(yōu)化的編譯器,它能夠自動(dòng)將高級(jí)語(yǔ)言代碼轉(zhuǎn)換為針對(duì)特定硬件優(yōu)化的低級(jí)代碼。Trit
    的頭像 發(fā)表于 12-25 09:13 ?246次閱讀

    Triton編譯器如何提升編程效率

    在現(xiàn)代軟件開(kāi)發(fā)中,編譯器扮演著至關(guān)重要的角色。它們不僅將高級(jí)語(yǔ)言代碼轉(zhuǎn)換為機(jī)器可執(zhí)行的代碼,還通過(guò)各種優(yōu)化技術(shù)提升程序的性能。Triton 編譯器作為一種先進(jìn)的
    的頭像 發(fā)表于 12-25 09:12 ?239次閱讀

    Triton編譯器在高性能計(jì)算中的應(yīng)用

    先進(jìn)的編譯技術(shù),為高性能計(jì)算提供了強(qiáng)大的支持。 Triton編譯器簡(jiǎn)介 Triton編譯器是一種開(kāi)源編譯器框架,旨在為異構(gòu)計(jì)算環(huán)境提供高效
    的頭像 發(fā)表于 12-25 09:11 ?259次閱讀

    Triton編譯器的優(yōu)化技巧

    在現(xiàn)代計(jì)算環(huán)境中,編譯器的性能對(duì)于軟件的運(yùn)行效率至關(guān)重要。Triton 編譯器作為一個(gè)先進(jìn)的編譯器框架,提供了一系列的優(yōu)化技術(shù),以確保生成的代碼既高效又適應(yīng)不同的硬件架構(gòu)。 1. 指令
    的頭像 發(fā)表于 12-25 09:09 ?238次閱讀

    Triton編譯器的優(yōu)勢(shì)與劣勢(shì)分析

    Triton編譯器作為一種新興的深度學(xué)習(xí)編譯器,具有一系列顯著的優(yōu)勢(shì),同時(shí)也存在一些潛在的劣勢(shì)。以下是對(duì)Triton編譯器優(yōu)勢(shì)與劣勢(shì)的分析: 優(yōu)勢(shì) 高效性能優(yōu)化 : Triton編譯器
    的頭像 發(fā)表于 12-25 09:07 ?274次閱讀

    Triton編譯器在機(jī)器學(xué)習(xí)中的應(yīng)用

    1. Triton編譯器概述 Triton編譯器是NVIDIA Triton推理服務(wù)平臺(tái)的一部分,它負(fù)責(zé)將深度學(xué)習(xí)模型轉(zhuǎn)換為優(yōu)化的格式,以便在NVIDIA GPU上高效運(yùn)行。Triton編譯器支持
    的頭像 發(fā)表于 12-24 18:13 ?404次閱讀

    Triton編譯器支持的編程語(yǔ)言

    Triton編譯器支持的編程語(yǔ)言主要包括以下幾種: 一、主要編程語(yǔ)言 Python :Triton編譯器通過(guò)Python接口提供了對(duì)Triton語(yǔ)言和編譯器的訪問(wèn),使得用戶可以在Python環(huán)境中
    的頭像 發(fā)表于 12-24 17:33 ?375次閱讀

    Triton編譯器與其他編譯器的比較

    Triton編譯器與其他編譯器的比較主要體現(xiàn)在以下幾個(gè)方面: 一、定位與目標(biāo) Triton編譯器 : 定位:專注于深度學(xué)習(xí)中最核心、最耗時(shí)的張量運(yùn)算的優(yōu)化。 目標(biāo):提供一個(gè)高度抽象、靈
    的頭像 發(fā)表于 12-24 17:25 ?387次閱讀

    Triton編譯器功能介紹 Triton編譯器使用教程

    Triton 是一個(gè)開(kāi)源編譯器前端,它支持多種編程語(yǔ)言,包括 C、C++、Fortran 和 Ada。Triton 旨在提供一個(gè)可擴(kuò)展和可定制的編譯器框架,允許開(kāi)發(fā)者添加新的編程語(yǔ)言特性和優(yōu)化技術(shù)
    的頭像 發(fā)表于 12-24 17:23 ?449次閱讀

    Keil編譯器優(yōu)化方法

    我們都知道,代碼是可以通過(guò)編譯器優(yōu)化的,有的時(shí)候,為了提高運(yùn)行速度或者減少代碼尺寸,會(huì)開(kāi)啟優(yōu)化選項(xiàng)。
    的頭像 發(fā)表于 10-23 16:35 ?648次閱讀
    Keil<b class='flag-5'>編譯器</b>優(yōu)化方法

    AI編譯器技術(shù)剖析

    隨著人工智能技術(shù)的飛速發(fā)展,AI編譯器作為一種新興的編譯技術(shù)逐漸進(jìn)入人們的視野。AI編譯器不僅具備傳統(tǒng)編譯器的功能,如將高級(jí)語(yǔ)言編寫(xiě)的源代碼
    的頭像 發(fā)表于 07-17 18:28 ?1665次閱讀

    人工智能編譯器與傳統(tǒng)編譯器的區(qū)別

    人工智能編譯器(AI編譯器)與傳統(tǒng)編譯器在多個(gè)方面存在顯著的差異。這些差異主要體現(xiàn)在設(shè)計(jì)目標(biāo)、功能特性、優(yōu)化策略、適用范圍以及技術(shù)復(fù)雜性等方面。以下是對(duì)兩者區(qū)別的詳細(xì)探討,旨在全面解析其內(nèi)在差異。
    的頭像 發(fā)表于 07-17 18:19 ?1957次閱讀

    Meta發(fā)布基于Code Llama的LLM編譯器

    近日,科技巨頭Meta在其X平臺(tái)上正式宣布推出了一款革命性的LLM編譯器,這一模型家族基于Meta Code Llama構(gòu)建,并融合了先進(jìn)的代碼優(yōu)化和編譯器功能。LLM編譯器的推出,標(biāo)
    的頭像 發(fā)表于 06-29 17:54 ?1520次閱讀

    SEGGER編譯器優(yōu)化和安全技術(shù)介紹 支持最新C和C++語(yǔ)言

    代碼生成,SEGGER編譯器生成非常小的代碼,非常適合內(nèi)存受限的環(huán)境,而不會(huì)犧牲執(zhí)行速度。 2)?速度優(yōu)化:在最高優(yōu)化級(jí)別,SEGGER編譯器生成盡可能快的
    的頭像 發(fā)表于 06-04 15:31 ?1490次閱讀
    SEGGER<b class='flag-5'>編譯器</b>優(yōu)化和安全技術(shù)介紹 支持最新C和C++語(yǔ)言

    QT開(kāi)發(fā)學(xué)習(xí)筆記1(安裝交叉編譯器

    QT安裝交叉編譯器
    的頭像 發(fā)表于 02-18 10:02 ?1067次閱讀
    QT開(kāi)發(fā)學(xué)習(xí)筆記1(安裝交叉<b class='flag-5'>編譯器</b>)