你的位置:中国名片 > 科技创新 > 正文

华为方舟编译器招募 2000 程序员!

来源:未知 时间:2019-09-15 16:39 浏览量:
华为方舟编译器招募 2000 程序员!




9月7日,笔者到华为北研所,参加华为方舟编译器(以下简称“方舟”)的开源主题沙龙。

正赶上饭点,点了个安徽板面。

各个档口的师傅,热情招呼着。

“瓜哥凉面”的档口,还排起了队,要知道这可是周六!

看来华为的“不休息”,果然名非虚传。

OK~言归正传,来聊聊本次“方舟”开源沙龙。


沙龙合影

沙龙上,一位开发小哥哥,动情讲述了“方舟”的前世今生。

这不是挪亚的方舟,这是华为的方舟!

方舟,英文名叫“ark”,来源于《圣经》:一名叫做挪亚的男子,用歌斐木造船,船名叫“方舟”。

洪水来临时,挪亚让一家八口人、和各样动物的一对公母,上船躲避洪水、并让人类和动物得以繁衍后代。

华为把编译器起名“方舟”,笔者认为,拯救当下编译器的困境,一定是其初心之一。

事实上,华为做编译器,已有近10年历史。

2009年,华为首个编译器团队“方舟”成立,后来,很多国内外编译器人才,也陆续加入。

对于刚成立的“方舟”来说,一是解决华为产品的性能问题,再就是解决手写汇编问题。

当时,团队基于GCC(GNU Compiler Collection,GNU编译器套件),做了DSP(Demand-Side Platform,需求方平台)的编译器后端,这样就可以发挥整个DSP的性能优势。

2014年,“方舟”团队日渐葳蕤 ,一些著名教授和博士也开始加入。

Fred Chow便是团队中一位著名的华人教授,他还是Open64的鼻祖。

2015年,无线基站又面临一个问题,即在DSP编程时,很多人都是用手写汇编。而手写汇编存在的问题是:每一代芯片更新换代时,它都得去适配。

为解决该问题,“方舟”团队想出一个方法:将C语言和MATLAB结合起来,在C语言中加上MATLAB的数据类型和操作,最终形成CM语言。

这个定制语言,仿佛一个杠杆,为“方舟”省去大量开发工作。

在华为内部,各个部门会按照重要性来分级。最初,方舟编程语言实验室和编译团队,都是4级部门。

2016年,华为对编译器和编程语言,越来越看重,遂成立编译器与编程语言实验室。

2016年之后,华为手机卖得不错,但也遇到很多问题。

从那时开始,华为在思考,能否搞一个全新的编译器,来铲除产品痛点?

“被迫”诞生的“方舟”:没有粮?自己种!

正如神话传说中,每一个英雄的诞生,都是为了拯救而来。

“方舟”也不例外。

当时华为遇到的困局是:一般编译器,都是用虚拟机的运行方式。它的原始模式,是从Java转成DEX文件,然后在手机上安装,安装完之后,再进行运行安装。

但整个虚拟机,使用的是混合式执行模式,它在执行这个模式时,会不断地切换、并产生一些开销。为这个问题,华为内部讨论颇久。

很多人说,应该在现有虚拟机上改,还有另外一种方案,即华为另起炉灶,自己做一套能够执行Java的运行环境和编译器。

当时,很多人赞同走第一条路,因为第一条路最省事,投入也不大,还能快速看到效果。

但是,“方舟”团队认为,直接在虚拟机上改,只是治标不治本,华为可以优化GC(Garbage Collector,垃圾收集器),也可以优化JIT(Just In Time,准时制生产方式)。但这样无法彻底解决问题。

最终,华为亲自上!

据介绍,“方舟”前期工作耗时巨长,光是梳理MAPLE框架,就花费两年时间,而从IR(Intermediate Representation,中间语言)的设计、到整个编译器过程,从Demo到产品化,也需要时间。

一篇论文成为方舟编译器的“航海灯塔”

后来,Fred Chow教授的一篇论文,起到点石成金的作用。他在这篇论文中指出,IR应该具备的特征、以及好的IR“长啥样”......

Fred Chow这篇论文,让团队开始自问:“方舟”能不能做一个统一的IR,既支持多种语言表示,又能支持后端多种芯片代码指定生成?

答案是可以。日后来看,这篇论文,堪称“方舟”的指路灯塔。

在灯塔的指引下,“方舟”团队发现,基于MAPLE IR,可以做更复杂的优化、以及更广义的控制流分析。

而MAPLE IR能让开发者,看到更多程序信息,能给编译器提供更多优化机会。可以说,“方舟”的立项,既是华为的技术选择,也是华为的自我挑战。

后来的日子中,作为“水手”的“方舟”开发者们,卯足劲去研究LLVM等业界技术。

“方舟”往事:“小黑屋”噼里啪啦到天明

冰心曾说:“成功的花,人们只惊慕她现时的明艳!然而当初她的芽儿,浸透了奋斗的泪泉,洒遍了牺牲的血雨!”

2017年5月,“方舟”团队终于把Java程序的HelloWorld跑出来,这标志着,整个编译器框架开发完成!


沙龙现场,方舟编译器架构师讲述“方舟始末”

2017年12月,“方舟”团队在Android系统里,增加一个方舟MAPLE Zygote,目的是用于孵化方舟应用,即把Mygote的运行方式,换成“方舟”的运行方式。

这件事,则标志着“方舟”团队把整个Mygote程序从只能启动,做到可以运行起来,并且能够支持方舟计算器运行。

在此之间,“方舟”团队一行一行地调代码。为专心工作,工程师们在杭州方舟编译器的“小黑屋”里,没黑没夜大干一个月......

2018年春节,“方舟”团队把整个SystemServer(Android系统中的核心进程)运行起来。光SystemServer这个进程,就有500万行代码、180个服务!

后来,团队又历时半年多,进行调优、解Bug、和产品化......

2018年9月1日,方舟编译器开始商用!

“方舟”开源:听人劝,吃饱饭

开源之前,华为内部走访很多厂商和高校,请教“方舟”社区后续该如何发展,他们给出的意见,竟然惊人的一致——开源。

在沙龙现场演讲的小哥哥表示,“方舟”会持续开源,而开源是一个循序渐进的过程,他们内部还有很多代码,要整理和合规认证。

但,可以肯定的是,到2020年,“方舟”所有代码都会开源。

2019年,曾有记者问,任正非信奉的人生信条是什么?他只说四个字:合作共赢。

如果盘点2019年华为的关键词,开放,一定算一个。

这种开放,体现在任正非频繁接受采访,体现在鸿蒙OS和“方舟”的开源......

而本次举行的首场“方舟”开源沙龙,不过是“方舟”开放的起点。

它还有更伟大的征程:计划招募2000名左右的代码贡献者。
相关新闻