站长之家首页 > 评论 > 方舟编译器最新资讯 > 正文

开源被喷,闭源被疑:方舟编译器怎么这么难?

2019-09-12 08:47 · 稿源:InfoQ公众号

在类型上,Maple 编译器中有一个 Global tab 的表示,所有全局符号都保存在这里。第一项就是 type tab,这个的实现就是 MirType 的一个 vector。MirType 的定义基本上就只有这几项,首先要看类型到底是什么类型。其次,类型里面的 Primitive Type 是什么样子,比如说是一个 Int 或者更复杂的结构体。

基于最基础的 MirType,可以扩展出 Structure 结构。之后信息更加丰富,比如会有父类的一些 Field,还有 VTab、ITa 等。基于 MirStructType,可以扩展出高层结构,方舟编译器会保留 Class 信息,这部分目前来看对分析和优化的帮助非常大。

在操作符上,方舟编译器支持 Memory 的操作,也有结构化的操作符。除了支持传统调用,还支持很多 Java 特有的调用。

在内存管理上,方舟编译器目前是以 RC 为主,GC 为辅。开发者可能对 GC 比较熟悉,这里讲下对 RC 的一些支持。RC 是一个比较容易理解的事情,多一个引用就加一,少了就减一,思想比较简单。在真实应用中,方舟编译器加一的情况基本就四种:

  • 一个对象引用了另一个对象,进行加一;

  • 栈包括寄存器里的变量要去引用对象,再次加一;

  • 静态或者全局变量多加一个引用的话,也要加一;

  • 函数返回对象,也要加一。

减一的场景也比较简单,比如局部变量 Last Use 后,因为局部变量已经死掉,指向的原来对象要进行减一操作;如果某个变量被重新赋值,原来指向的堆对象也要进行减一操作。

在这种方式下,一个特别简单的函数可能要进行一系列加减操作,每次操作可能都要加锁,基本程序很难跑起来。于是,整个团队又开始从三个角度对此进行优化:

第一,减少插入,很多变量间的 Live Range 可能是重叠的,重叠后前面加一,后面减一的操作就可以不做了;如果实在没有办法避免插入,就看如何减少每一次操作的开销,方舟编译器有一个逃逸分析,最主要的结果是看变量会不会被多线程访问。如果变量的值被单线程访问,就不需要加锁,只需要加一或减一操作,然后保证不被提前释放就可以。

第二,RC 操作是比较麻烦的事情,方舟编译器现在提供 Annotation 的方法,Annotation 的效果应该是最好的,但对程序员要求较高,如果程序员加的不对,内存可能会出现泄漏。另外,方舟编译器也提供自学习的方法。

第三,方舟编译器以 RC 为主,GC 为辅。如果一些环没有被 RC 释放掉,可以从被 GC 释放掉的环里学到一些规则,把这些规则写成一个文件或者放到内存里,指导下一次运行时的内存释放。

如上图,绿色的部分已经完成,黄色的部分还在开发中,而蓝色的部分还在规划中,华为希望与社区进行共建。

接下来,方舟编译器团队会开放跨语言全程序优化能力。对 Android 而言,从 Java 到 C 或者从 C 到 Java 的调用,整个次数会非常多,而且每一次调用的开销也比较大。如果能够把这一部分做好,大概能够提高 10% 到 20% 的性能。

另外,整个团队还做了一些安全编译,比如把运行时错误移到编译时做,因为在运行时的状态下,Bug 很难查找,如果在编译时就对问题进行报警,这样对开发者比较友好。

3生态是绕不过的难题  

目前方舟编译器的代码托管在华为云与码云平台(gitee.com),遵守的开源协议是中国首个开源协议——木兰宽松许可证,这样做的目的也是为了规避其他协议潜在的开源风险。在未来走向开放治理以后,方舟编译器将按照所挂靠机构的模式来托管。开发者可通过代码托管平台参与社区贡献,包括文档贡献和代码贡献,同时也可在此平台上反馈相关问题和需求。

在生态构建方面,很多开发者都认为这是方舟编译器需要迈过的一道大坎。其实,做生态不一定只有开源这一条路径,苹果没有开源却依然有大批开发者愿意为其平台开发应用,鸿蒙 OS 的开源主管表示,华为之所以选择开源方舟编译器,一是真的希望得到广大开发者的帮助,和众多编译器领域优秀的学者和从业人员一起进步;二是希望获得广大开发者的信任。

但是现在,很多开发者都觉得难以参与,因为没有 Runtime,开放的源代码也非常少。华为方舟编译器架构师表示方舟编译器其实有一个 Runtime,用来实现各种与运行相关的信息,比如 Java 反射、JNI 调用、内存管理、内存回收机制等,但现在只有 6 万行代码,是一个非常轻量级,只提供必备内容的 Runtime。

目前开发者可以先在华为手机上运行 ,同时华为也希望社区可以一起通过开源的方式做一个简单的 Runtime。后续会按照计划尽快开放所有源代码,因为代码开源需要进行很多清理和整改,时间上希望各位开发者多些耐心。如果开发者希望参与社区构建,可以考虑以下几个角度:

  • 共建方舟 IR。其实现在方舟 IR 的标准还没有完全定下来,处在逐渐发展的过程中,华为希望和大家一起把标准做得更好。这里面也有很多挑战性的工作,因为不同的高级语言有不同的特征,类型系统、内存管理机制、内存对象模型都可能不同,希望大家能够形成更好的标准,支持更多语言表达;

  • 多语言前端,目前的编译器只做了 Java,C++ 还在内部开发中,其实还有更多语言,包括 JS,也希望社区中的广大开发者共同建设;

  • 多芯片后端,华为内部只做了 ARM64 的后端,ARM32 还在规划中,但可能有一些厂家用 X86,开发者可以结合自己的芯片做一些后端开发用到自己的产品中;

  • 对编译算法有兴趣的同学,可以在中端和后端做一些编译算法优化,包括数组越界检查消除、锁优化等,这可能对大家都有好处。

4结束语

方舟编译器的愿景就是构建多语言、跨平台、高效的编程环境。面向未来,华为做了很多全场景智慧化场景的尝试,如何全场景下进行高效编程以及在整个 IR 层面,如何进行优化等都是极具挑战的任务,方舟编译器未来同样希望与硬件更好结合,而这些都需要更多开发者参与其中。

方舟编译器主页:

https://www.openarkcompiler.cn

官方主库:

https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler/home

Gitee 镜像仓库:

https://gitee.com/harmonyos/OpenArkCompiler

  • 大家在看
  • 相关推荐
  • 清华大学发布基于元算子和动态编译的深度学习框架

    深度学习技术正广泛应用于人工智能的各个领域,如计算机视觉、机器翻译、自然语言处理、智能机器人等,取得了前所未有的突破。当前,一方面,随着深度学习新技术的出现、任务复杂度的提高,易于扩展同时保持高效的架构成为发展趋势;另一方面,我国人工智能产业发展迅速,急需构建自己的开源深度学习生态。清华大学计算机系可视媒体研究中心提出了一个全新的深度学习框架——计图(Jittor)。Jittor是一个采用元算子表达神经网络计算?

  • UCloud优刻得数据方舟,强效守护数据安全

    业务连续性能力是企业在面对内外部风险,自我修复和快速反应的能力表现。在数字化时代,重要数据是企业正常运营的核心资产,对企业而言“生死攸关“,企业掌舵人们更是时刻加倍重点关注,丝毫不敢懈怠。但企业的重要数据保护也面临重大风险,如遇到恶意攻击,传统的数据备份亦会随恶意攻击而失效,造成企业也无法通过备份恢复业务数据。应用全部删除了还可以重新部署,数据没有了,企业就会面临生存危机。那么如何避免这样灾难性的

  • 明日方舟清流技能天赋一览 清流技能数据详情

    明日方舟新干员清流来了,很多玩家还不清楚清流到底技能是什么,下面就来为大家分享一下清流新干员的技能以及数据背景。

  • 方舟生存进化3月11日地牢攻略 乌鸦洞窟地牢怎么打?

    ​方舟生存进化在3月11日更新了最新的地牢——乌鸦洞窟,很多玩家还不清楚这个地牢要怎么打,下面就来为大家分享一下攻略。

  • 明日方舟万类共生哔哩哔哩专属纪念头像领取方法

    3月3日,明日方舟联动B站开启了万类共生保护野生动物的活动,其中可以获得一个bilibili的专属头像挂件,很多玩家还不清楚怎么领取,下面就来为大家分享一下领取的方法。

  • 明日方舟联动B站万类共生保护野生动物活动入口地址

    明日方舟在今天联手WWF&OPF及bilibili游戏发起了保护野生动物的公益活动,很多玩家还不清楚活动的地址,下面就来为大家分享一下。

  • 明日方舟龙门币最新兑换码一览 龙门币兑换礼包码分享

    明日方舟最近又新增了龙门币的礼包兑换码,很多玩家还不了解这个礼包兑换码是多少,下面就来为大家分享一下。

  • 吸尘哪个牌子好?家庭用吸尘选购方法

    吸尘器是一种效率很高的清洁电器,能帮助人们解决室内垃圾打扫的大问题,素来在欧美发达国家很受欢迎。随着我国国民经济收入的提高,吸尘器在国内也越来越受欢迎,对于家庭用户来说,哪种吸尘器更好,哪个牌子最值得购买呢?下面小编就会为您带来相关内容。吸尘器分为桶式、立式、卧式、手持式等类型,其中桶式和卧式通常是采用电线供电,立式和手持式则以无线为主。现在新型的家用吸尘器以无线手持式为代表,其中排名第一的品牌是?

  • 2020买净水哪个牌子好?世界净水好在哪里?

    世界上最好的净水器是冰尊净水器!史无前例的世界净水器盛会在瑞士苏黎世举行。世界 500 强净水器国际企业齐聚一堂,吸引了国际饮用水标准局等数十家国际权威机构,瑞士水标准组织和国际饮用水标准组织。国家水质监督管理委员会。会上,德国冰尊参与了国际水质标准的起草和制定。同时,经过上千名高级工程师、专家和国际权威机构的评审和投票,评选出冰尊,道尔顿,格力等世界十大净水器。以下是世界十大净水器:世界净水器哪个牌子

  • 报告:2019年华为路由运营商市场份额蝉联全球第一

    近日,国际权威调研机构Omdia(原IHS Markit科技)发布了 2019 年度全球路由器市场份额报告,报告显示华为路由器产品在全球运营商领域市场份额排名第一。

  • 净水厂家批发高端净水品牌菲浦斯以品质创未来

    随着人们健康意识的快速提升,以净水器为代表的健康智能家居产品受到广泛欢迎,更多的消费者愿意为洁净的空气,清洁的水源买单,净水行业在遭受疫情影响之下也有着蓄势爆发的机遇,以全屋净水为代表的项目受到行业内外的青睐与关注。全屋净水系统根本的目的是更好地为用户服务,不同地域的水质有差别,同时每户家庭户型和用水需求有各不相同,普通净水器已经无法满足需求,全屋净水系统正好解决用户这一痛点。从水源入户开始,根据

  • 快快网络高防服务—热门互联网行业的首选服务

    在这网络高速发展的时代,网络安全也成了企业关注的焦点。现如今,企业的业务开展离不开服务器,尤其是热门互联网行业,如游戏、金融、电商、直播等更是DDoS攻击的重灾区。而高防服务器不管是配置方面、网络资源方面还是防御性能方面,都比普通服务器强,能够抵御大流量DDoS、CC攻击,大大提升安全性。所以高防服务器成了很多企业的首选。接下来,小编给大家详细介绍一下高防服务器给这几个行业带来的益处。1. 游戏行业游戏行业是?

  • 无线吸尘哪个牌子好?家用吸尘这三大功能值得关注

    近年来,随着国民经济水平的逐步提高,大家的生活水平产生了质的飞跃。人们对于家居环境的要求也越来越高,为了让房间变得更加整洁卫生,大多数家庭都选择购入一台无线吸尘器来打扫卫生。而在众多无线吸尘器产品中,一款产自德国的斐纳TOMEFON无线吸尘器格外受欢迎,是市场销量及好评率都非常高的爆款产品。那么斐纳TOMEFON无线吸尘器为何如此优秀?只因它有这三大功能!功能一:飓风吸力,深度清扫的大力士首先斐纳TOMEFON品牌在室?

  • 国产AI芯片巨头寒武纪将于科创板上市:曾打造华为麒麟处理NPU

    3 月 2 日消息,我们从中国证监会北京监管局官网获悉,中信证券和中科寒武纪签署《中科寒武纪科技股份有限公司与中信证券股份有限公司关于首次公开发行A股股票之辅导协议》,后者计划于科创板上市。

  • 2020年2月成功出海的中国手游收入TOP30:《万国觉醒》再度登顶,《明日方舟》入围前三

    得益于在美国和日本市场收入大幅增长,莉莉丝《万国觉醒》本月收入再创新高,以超过 7100 万美元的收入重回榜首。《万国觉醒》自去年 12 月进入日本市场以来,收入再次强势上扬。在美国市场,该游戏虽上市超过 20 个月,但仍在快速增长, 2 月收入同比增长76%,环比增长28%。

  • 厨房净水厂家高端进口净水品牌菲浦斯定制美好生活

    众所周知,自来水中的余氯、重金属、有机化合物、微生物是很难处理干净的,即使是水烧开了,部分细菌已经死亡,但水中的明矾、泥沙、铁锈、杂质、悬浮物、胶体、大分子有机物、细菌的残骸、部分耐高温细菌、氯素、重金属等有害物质就是煮沸也依然无法去除干净。解决上述饮用水问题,可以考虑安装净水器来滤除水中有害物,保障饮用水安全。高端进口净水器品牌菲浦斯,经营净水行业多年,以高品质净水为千万家庭缔造美好 净水体验。?

  • 2019年华为路由在全球运营商领域市场份额排名第一

    3月5日消息,华为中国官方微博今天发布消息,近日,国际权威调研机构Omdia(原IHS Markit科技)发布了 2019 年度全球路由器市场份额报告,报告显示华为路由器产品在全球运营商领域市场份额排名第一。

  • 知名净水厂家进口净水十大品牌菲浦斯匠心造好水

    水污染的加剧严重威胁人类生存,因为水在人体的新陈代谢中起着非常重要的作用,而水中的有害物质,直接危害人体健康,许多污染物有害物很可能会导致肝癌、胃癌、肠癌的发生。保障居民饮水安全是净水行业的使命,高端进口净水器品牌菲浦斯以高品质产品和服务保障居民饮水健康安全,是中国净水行业的知名品牌。作为高端进口净水器品牌的代表,菲浦斯以独有的创新能力,以“精工品质、树立行业标杆,让每个人都能享用安全健康的品质好

  • 高端进口净水国际净水十大名牌菲浦斯演绎非凡格调

    伴随着国民健康意识的大幅度提升,消费者对于净水器等健康家电产品的需求也不断增多,以菲浦斯为代表的高端进口净水器品牌获得市场的青睐。菲浦斯品牌始于1936年,总部设在德国豪车之乡斯图加特,迄今为止已有80多年的净水历史,品牌底蕴深厚,技术实力过硬,是国内为数不多的深受消费者信赖的高端净水品牌之一。作为高端进口净水器品牌菲浦斯拥有国际背景优势,菲浦斯发源于德国,秉承德系工业的严谨精湛,以精工科技打造适合中国

  • 净水十大名牌排名榜菲浦斯净水怎么样

    相比于传统的带桶饮水机,净水器拥有诸多优势。很多消费者在使用过程当中会发现很多问题,饮水机占地空间大,每次换水都很不方便,如果不定期清理,进水口容易形成水垢,滋生细菌,造成二次污染。基于这些原因,有越来越多的人开始选择净水器来改善饮水问题。目前的净水器市场品牌众多、质量参差不齐,选择一款靠谱的净水器品牌才能更好地保障饮水安全。国际知名净水器品牌菲浦斯,深耕净水领域多年,技术实力雄厚,是您不错的选择

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议