精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

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

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

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

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

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

方舟編譯器整體框架

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

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

鴻蒙OS開源第一槍,更多開源陸續放出

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

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

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

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

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

演示樣例

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

樣例:HelloWorld 方舟編譯器的4大優勢:

1、多語言聯合將同一應用中的不同語言代碼聯合編譯、聯合優化,消除語言間的性能“鴻溝”,降低開發者的優化成本

2、軟硬件協同編譯器與芯片實現軟硬件協同優化,充分發揮硬件能效,應用體驗更佳

3、輕量運行時通過編譯器的語言實現能力和優化能力增強,應用運行時的開銷更小

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

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

45 家合作伙伴 此外,從官網給出的介紹看,目前已有至少45款第三方應用支持華為方舟編譯器,都是大家耳熟能詳的超大用戶量APP。

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

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

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

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

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

最后吐槽一下:

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

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

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

十年方舟,再造安卓

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

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

春節快樂,方舟大吉!

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

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

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

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

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

    關注

    216

    文章

    34327

    瀏覽量

    251222
  • 編譯器
    +關注

    關注

    1

    文章

    1618

    瀏覽量

    49057
  • GitHub
    +關注

    關注

    3

    文章

    467

    瀏覽量

    16389
  • 方舟編譯器
    +關注

    關注

    0

    文章

    60

    瀏覽量

    186

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

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

收藏 人收藏

    評論

    相關推薦

    C7000優化C/C++編譯器

    電子發燒友網站提供《C7000優化C/C++編譯器.pdf》資料免費下載
    發表于 10-30 09:45 ?0次下載
    C7000優化C/C++<b class='flag-5'>編譯器</b>

    Keil編譯器優化方法

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

    ida反編譯出來代碼能直接用嗎

    IDA反編譯出來的代碼通常 不能直接使用 ,這主要基于以下幾個方面的原因: 一、代碼的不完整性 IDA反編譯生成的代碼可能缺少原始源
    的頭像 發表于 09-02 10:55 ?526次閱讀

    常用編輯之GCC編譯器

    GCC(GNU Compiler Collection)是由GNU開發的編程語言編譯器,最初是作為GNU操作系統的編譯器編寫的。GCC是一個編譯器套件,包含很多軟件包,支持多種語言編譯
    發表于 08-24 11:05

    AI編譯器技術剖析

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

    人工智能編譯器與傳統編譯器的區別

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

    Meta發布基于Code Llama的LLM編譯器

    近日,科技巨頭Meta在其X平臺上正式宣布推出了一款革命性的LLM編譯器,這一模型家族基于Meta Code Llama構建,并融合了先進的代碼優化和編譯器功能。LLM編譯器的推出,標
    的頭像 發表于 06-29 17:54 ?1465次閱讀

    SEGGER編譯器優化和安全技術介紹 支持最新C和C++語言

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

    STM32F767ZI編譯以太工程出現錯誤的原因?怎么解決?

    編譯自動生成的工程出現錯誤 我按照的應用筆記從頭開始配置好了一個以太工程,但是使用STM32CUBEMX生成的代碼居然
    發表于 05-07 08:13

    KEIL怎么禁止某個函數/某段代碼編譯器優化?

    沒有大佬知道,KEIL怎么禁止某個函數/某段代碼編譯器優化?
    發表于 04-10 08:17

    QT開發學習筆記1(安裝交叉編譯器

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

    求助,如何將C++代碼從GNU移植到Tasking編譯器

    需要解決的障礙。 我懇請你幫助我們解決這個問題。 問題 :當前代碼是使用 GNU 編譯器編譯的,代碼按定義運行。 但是,我們希望讓它在 Aurix TC399 開發套件上運行。 在
    發表于 01-31 07:29

    華為舉辦鴻蒙生態千帆啟航儀式,余承東公布HarmonyOS NEXT開放申請

    據余承東介紹,為實現核心競爭力的突破,華為通過多年的努力構建出一套包含鴻蒙內核、ArkTS/倉頡編程語言、方舟編譯器/畢昇編譯器、ArkUI以及盤古AI大模型等在內的完整生態體系。
    的頭像 發表于 01-19 09:34 ?823次閱讀

    Triton編譯器的原理和性能

    Triton是一種用于編寫高效自定義深度學習原語的語言和編譯器。Triton的目的是提供一個開源環境,以比CUDA更高的生產力編寫快速代碼,但也比其他現有DSL具有更大的靈活性。Triton已被采用
    的頭像 發表于 12-16 11:22 ?2768次閱讀
    Triton<b class='flag-5'>編譯器</b>的原理和性能

    TVM編譯器的整體架構和基本方法

    有將近兩個月沒有學習一些新東西,更新一下博客了。一直在忙公司的一個項目,是做一款支持LSTM和RNN的通用架構加速IP。自己恰好負責指令編譯工作,雖然開始的指令比較粗糙,沒有一套完整的編譯器
    的頭像 發表于 11-30 09:36 ?2321次閱讀
    TVM<b class='flag-5'>編譯器</b>的整體架構和基本方法