衡阳派盒市场营销有限公司

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

華為方舟編譯器開源官網(wǎng)正式上線,代碼沒有放在GitHub

DPVg_AI_era ? 來源:lq ? 2019-09-13 16:04 ? 次閱讀

昨日,華為方舟編譯器開源官網(wǎng)正式上線,代碼沒有放在GitHub,而是放到了開源中國的碼云上。此次方舟編譯器的開源打響了鴻蒙OS開源的第一槍,未來將有更多開源陸續(xù)放出。

Show you the code! 8月31日,華為方舟編譯器開源官網(wǎng)正式上線,余承東也在微博上公布了相關消息。

方舟編譯器是為支持多種編程語言、多種芯片平臺的聯(lián)合編譯、運行而設計的統(tǒng)一編程平臺,包含編譯器、工具鏈、運行時等關鍵部件。

方舟編譯器整體框架

值得關注的是,此次方舟代碼沒有放在GitHub,而是放到華為自建的開源平臺,以及開源中國的碼云上,目前已收獲876顆星。

官方網(wǎng)站: https://www.openarkcompiler.cn 代碼托管網(wǎng)站: https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler 碼云鏡像倉庫地址: https://gitee.com/harmonyos/OpenArkCompiler

鴻蒙OS開源第一槍,更多開源陸續(xù)放出

此次方舟編譯器的開源打響了鴻蒙OS開源的第一槍,首次開源范圍是編譯器 IR( Intermediate Representation)、RC(Reference Counting)和多語言設計思想等,用于與業(yè)界、學術界溝通交流。

后續(xù)將陸續(xù)開源編譯器前端、后端,支持其它語言(如 JavaScript)的編譯等,當前部分Java語言特性和JVM虛擬機特性的支持未包括在本次開源代碼中,包括:annotation、lambda表達式、泛型等。

華為消費者 BG 軟件部總裁王成錄表示方舟編譯器代碼會陸續(xù)開源 根據(jù)之前華為在開發(fā)者大會上公布的信息,作為鴻蒙OS的重要工具,方舟編譯器從2019年8月開始,將分步驟持續(xù)進行開源。

具體的開源計劃如下: 2020年:開始對Java編譯器工具鏈開源,支持Java程序編譯。 2021年:開始對JavaScript編譯器工具鏈開源,可用于JS程序的編譯。

方舟編譯器開源路標(綠色部分是本期開源內容,藍色部分待開源)

演示樣例

華為提供了HelloWorld、Exception 異常處理、RC 引用計數(shù)、Tread多線程等多個演示樣例:

樣例:HelloWorld 方舟編譯器的4大優(yōu)勢:

1、多語言聯(lián)合將同一應用中的不同語言代碼聯(lián)合編譯、聯(lián)合優(yōu)化,消除語言間的性能“鴻溝”,降低開發(fā)者的優(yōu)化成本

2、軟硬件協(xié)同編譯器與芯片實現(xiàn)軟硬件協(xié)同優(yōu)化,充分發(fā)揮硬件能效,應用體驗更佳

3、輕量運行時通過編譯器的語言實現(xiàn)能力和優(yōu)化能力增強,應用運行時的開銷更小

4、多平臺支持支持面向多樣化的終端設備平臺進行編譯和運行,根據(jù)設備特征提供便捷的開發(fā)與部署策略,提高開發(fā)效率 方舟編譯開源面向全球開發(fā)者

方舟編譯器面向全球開發(fā)者進行開源,因此,官方網(wǎng)站和代碼托管平臺均面向全球開發(fā)者開放。目前英文版網(wǎng)站正在開發(fā)及內測,計劃將于 2019 年 Q4 上線。

45 家合作伙伴 此外,從官網(wǎng)給出的介紹看,目前已有至少45款第三方應用支持華為方舟編譯器,都是大家耳熟能詳?shù)某笥脩袅緼PP。

如何評價方舟編譯器?不如去讀代碼

既然華為已經(jīng)Show you the code,代碼是檢驗成色的唯一標準,開發(fā)者也可以通過代碼托管平臺參與社區(qū)貢獻。 開發(fā)者可基于開源代碼+二進制,編譯構建出編譯器工具鏈,嘗試對Java程序進行編譯。社區(qū)參與者可以通過框架源碼學習方舟編譯器的編譯器中間表達(IR)及基本的中端編譯框架,熟悉方舟編譯器的架構思想,并參與諸如對編譯器中端優(yōu)化的貢獻。 根據(jù)說明,目前方舟編譯器的代碼托管在華為云,在未來走向開放治理以后,將按照所掛靠機構的模式來托管。開發(fā)者可通過代碼托管平臺參與社區(qū)貢獻,包括文檔貢獻和代碼貢獻,同時也可在此平臺上反饋相關問題和需求。 下面是知乎用戶周剛的評論,新智元經(jīng)授權轉載:

的確是通過中間語言 (IR) 來實現(xiàn)的,被 IR 接管的部分不管是不是靜態(tài)語言,都變成了一種前端描述語言;因為是部分實現(xiàn) (只可能做到部分),那其他語言的 runtime 必須得保留,從邏輯上講在 Android 上 JVM 還得繼續(xù)存在,好像和之前華為開發(fā)者大會說的完全靜態(tài)化不太一樣;語言層面的靜態(tài)化并不是一個新鮮概念,但基本上都是針對單一語言而言,多語言的靜態(tài)化對我來說的確是第一次看到 (想了下這種做法其實是華為目前最好的選擇了),考慮到語言的衍生面,這種做法從工作量來講的確非常非常硬核,并且這種硬核更多的應該還是 runtime 部分的工作量:相當于做了一個 runtime 中間層來負責 API 轉發(fā) (這部分不開源);

開發(fā)者大會被吹上天際的 GC 機制的確是我當時預測的 Reference Counting 機制;

vTable 的實現(xiàn)有點意思,我一直挺喜歡 js 的原型鏈設計,方舟的實現(xiàn)相當于一種固定長度 (24 個) 的原型鏈設計,這種做法很務實;

最后吐槽一下:

文檔的排版,用例和組合方式為什么看起來象實習生做的;

C/C++ 的編程規(guī)范雖然很務實,但既然要開源拿出來見人,能不能也好好組織一下前后邏輯;

為什么 3 分鐘開源就由 Public 轉成了 Private;

十年方舟,再造安卓

關于方舟編譯器的前世今生,可以參考新智元之前推薦的“菊廠搞機”的一篇文章《十年磨一劍!萬字長文剖析華為方舟編譯器的前世今生》: 可能很多人不知道,華為為方舟編譯器準備了十年。 2009年,華為啟動5G基礎技術研究的同時,開始創(chuàng)建編譯組,第一批海內外研究人員加入。 2013年,華為推出面向基站領域的自研編譯器HCC,并正式提出編譯器框架構想。 2014年,眾多海內外專家加入華為,方舟項目正式啟動。 2016年,成立編譯器與編程語言實驗室。 2019年,華為方舟編譯器正式面世!

這十年,每一次攻關都蘊含著華為軟件工程師們的傾力投入,每一個進展都值得銘記。 2017年5月,方舟編譯器上第一個Java程序“Hello World”跑通。 2017年8月的一個凌晨,在華為的一個實驗室里,項目組已經(jīng)連續(xù)數(shù)日24小時不間斷攻關,卻始終看不到success的返回信息。絕望之下,工程師把所有通信數(shù)據(jù)打印出來,逐個字節(jié)排查,最終發(fā)現(xiàn)有一處字節(jié)的順序不一致。糾正后,華為方舟跑通了第一個安卓后臺服務DiskStatus,這標志著對安卓的換心手術進入了實操階段。 2018年春節(jié)前一周,方舟編譯器跑通安卓系統(tǒng)所有后臺服務,并成功移植到手機。當晚,所有人聚集在實驗室的機房中,等待首個開機畫面加載成功的神圣時刻。秒針滴答,如同過了一個世紀那么久,屏幕終于點亮。 歡呼,擁抱,一蹦三尺高,項目組成員們到底沒忍住,留下了激動的淚水。 接下來,項目組在除夕前夜啟動了方舟編譯手機的Beta測試。大年初一清晨,總架構師發(fā)來了第一條經(jīng)編譯器編譯的運行程序發(fā)出來的拜年消息:

春節(jié)快樂,方舟大吉!

當P30發(fā)布會上“方舟”甫一出現(xiàn),就在中國軟件行業(yè)“炸”了鍋。無數(shù)軟件從業(yè)者從一開始的質疑,到弄清方舟真相后的驚嘆……這些都是對華為軟件工程師們十年如一日、一點一滴“啃硬骨頭”的致敬! 實際上,方舟已經(jīng)不是傳統(tǒng)意義上從高級語言到機器碼的“萬能翻譯”,更是一個編譯運行系統(tǒng)。一方面,方舟編譯器首次在Java領域將虛擬機干掉了,也是軟件史上首次將Java/C/C++等混合代碼一次編譯成機器碼直接在手機上運行,徹底告別Java的JNI額外開銷,也徹底告別了虛擬機GC內存回收帶來的應用進程掉線,使操作流暢度大幅提升。如果說目前最新的安卓系統(tǒng)是和諧號動車,那么經(jīng)方舟編譯的安卓系統(tǒng)便是高鐵,是“復興號”。 華為手機直接通過方舟編譯器替換了Android system-server的所有后臺服務,這一項就已經(jīng)足夠讓華為EMUI比其他安卓系統(tǒng)更快一步。根據(jù)華為官方測試,方舟編譯器提升手機系統(tǒng)操作流暢度高達24%,系統(tǒng)響應性能提升44%。入手P30系列的用戶,應該已經(jīng)體驗到了。

另一方面,方舟編譯器用空間換性能,直接將編譯器的代碼優(yōu)化搬到了開發(fā)者環(huán)境,不再被手機端的硬件資源所限制,為代碼優(yōu)化提供了無限可能。 此外,經(jīng)測試,新浪微博極速版APP經(jīng)方舟編譯后,操作流暢度提升高達60%。 解決安卓的四大命門,出于安卓,勝于安卓,超越iOS,并且全面兼容安卓,這就是華為方舟編譯器的使命!安卓卡頓再見!方舟的一個使命,就是解決安卓虛擬機GC內存回收帶來的“Stop World”。 目前安卓手機內存資源不夠用的時候,GC直接叫停所有應用,所以偶爾會遭遇莫名卡頓。 方舟編譯器采用了引用計數(shù)法(RC,Reference Counting)來進行內存的實時回收,并且配合使用了專門的消除環(huán)算法(消除對象互相引用帶來的無法回收問題),來避免GC集中式回收帶來的系統(tǒng)卡頓。相比GC,方舟的內存回收是實時的而非集中式的,且不需要暫停應用進程,這樣便大大消除了卡頓。

如果把內存回收比作成打掃房間,那么GC的策略是專門有一個衛(wèi)生員,看房間里垃圾太多了,就把所有人請出去,打掃完了再讓大家回來。而方舟的RC則是每個人收拾自己的垃圾,用完就清理,保持清潔的同時不影響人的正常活動。 軟件有一個大家很熟悉的死循環(huán),就是電腦被一個無限循環(huán)的運行程序把計算機資源占光。

這種“死循環(huán)”在軟件中叫“環(huán)引用”。為了從機制避免手機內存被環(huán)引用“吃掉”,方舟編譯器引入annotation的“告警”標示,對基礎類的環(huán)進行標注。當然,Java程序員也可以對業(yè)務代碼中的環(huán)進行標注。經(jīng)過豐富的實踐驗證,方舟這種機制可減少大部分程序中環(huán)的出現(xiàn)。 另外一方面,方舟編譯器在運行狀態(tài)下引入了高效的環(huán)回收機制,允許有選擇的智能回收某個APP的內存占用,這對傳統(tǒng)的環(huán)回收算法是一個非常棒的改進。Stop World,安卓卡頓,再見!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 華為
    +關注

    關注

    216

    文章

    34533

    瀏覽量

    253005
  • 編譯器
    +關注

    關注

    1

    文章

    1642

    瀏覽量

    49286
  • GitHub
    +關注

    關注

    3

    文章

    473

    瀏覽量

    16564
  • 方舟編譯器
    +關注

    關注

    0

    文章

    60

    瀏覽量

    250

原文標題:鴻蒙OS終于現(xiàn)身!華為方舟編譯器開源,代碼沒放GitHub

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    什么樣的代碼會被編譯器優(yōu)化

    現(xiàn)在的編譯器有多智能,可能你辛辛苦苦寫的代碼,在編譯器看來就是幾句廢話,直接被刪除掉。
    的頭像 發(fā)表于 01-16 16:38 ?185次閱讀

    EE-147:調整TigerSHARC DSP編譯器的C源代碼

    電子發(fā)燒友網(wǎng)站提供《EE-147:調整TigerSHARC DSP編譯器的C源代碼.pdf》資料免費下載
    發(fā)表于 01-15 16:11 ?0次下載
    EE-147:調整TigerSHARC DSP<b class='flag-5'>編譯器</b>的C源<b class='flag-5'>代碼</b>

    Triton編譯器與GPU編程的結合應用

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

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

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

    Triton編譯器在高性能計算中的應用

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

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

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

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

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

    Triton編譯器在機器學習中的應用

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

    Triton編譯器支持的編程語言

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

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

    的GPU編程框架,使開發(fā)者能夠編寫出接近手工優(yōu)化的高性能GPU內核。 其他編譯器 (如GCC、Clang、MSVC等): 定位:通用編譯器,支持多種編程語言,廣泛應用于各種軟件開發(fā)場景。 目標:提供穩(wěn)定、高效的編譯服務,優(yōu)化
    的頭像 發(fā)表于 12-24 17:25 ?484次閱讀

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

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

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

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

    AI編譯器技術剖析

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

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

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

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

    近日,科技巨頭Meta在其X平臺上正式宣布推出了一款革命性的LLM編譯器,這一模型家族基于Meta Code Llama構建,并融合了先進的代碼優(yōu)化和編譯器功能。LLM編譯器的推出,標
    的頭像 發(fā)表于 06-29 17:54 ?1566次閱讀
    送彩金百家乐的玩法技巧和规则| 大发888bjl| 尊龙国际娱乐| 新百家乐官网的玩法技巧和规则| 百家乐庄闲排列| 网上百家乐官网辅助软件| 百家乐辅助工具| 大发888倾家荡产| 游戏房百家乐官网赌博图片| 百家乐如何捕捉长龙| 百家乐官网玩法和技巧| 如何看百家乐的路纸| 大发888网页版登陆| 在线百家乐官网下| 德州扑克视频| 做生意店铺风水| 乐博娱乐| 百家乐转盘技巧| 磴口县| 百家乐解析| 百家乐官网视频世界| 小孟百家乐的玩法技巧和规则| 百家乐官网5式直缆投注法| 真人百家乐源代码| 最大的百家乐官网网站| 百家乐强弱走势图| 百家乐官网赌场技巧论坛| bet365高尔夫娱乐场| 太阳城百家乐怎样开户| 百家乐官网全讯网娱乐城| 大发888娱乐软件| 百家乐庄河闲的赌法| 百家乐官网澳门色子| 菲律宾凤凰娱乐| 百家乐免费改| 24山向什么最好| 南宁百家乐官网赌机| 中西区| 大发888电子游艺| 百家乐体育nba| 电脑赌百家乐官网可靠吗|