9月7日,首场方舟编译器开源技术沙龙在华为北京研究所举办。行业专家、高校学者、应用开发者和方舟编译器专家齐聚一堂,以方舟编译器开源为主题,围绕基础软件发展、开源社区构建、开源生态建设等方面进行了深入讨论。这也是8月31日方舟编译器正式开源后,首次面向行业组织的线下技术交流会议。
首场方舟编译器开源沙龙现场
华为消费者业务软件部开源项目主管做了开场致辞,介绍了开源目的、目前的进展以及下一步计划。目前,开源项目组在国内已与数十位行业顶尖编译器学者进行了交流合作;同时,在欧洲进行了多场探索开源共建的研讨会。此外,项目组将在全球开展高校开发者拓展计划,发布系列开源共建课题,希望在校学生和编译器专业科研者都能参与进来;针对专业开发者,项目组将在社区持续公布TODO特性,欢迎开发者分享代码。
十年磨一剑,开源引领行业发展
活动现场,方舟编译器架构师介绍了方舟编译器的研发历程及未来发展路标。他表示,早在2009年华为就创建了编译组,经过10年的研发,方舟编译器正式在今年发布并宣布开源。
被称之为“革命性突破”的方舟编译器,其最大优势是首次在Java领域用方舟编译器替代了语言虚拟机的静态编译器,在软件史上首次将Java/C/C++等混合代码一次编译成机器码直接在手机上运行,彻底告别Java的JNI额外开销,解决安卓生态碎片化造成的代码优化空间有限以及内存回收机制造的间歇性卡顿,从原来的边解释边执行转变为全程机器码高效运行程序,大幅提升了安卓应用的运行效率。
8月31日,方舟编译器开源官网正式上线,开发者可以通过官方网站及代码托管网站获得相关代码和文档,供参考学习、了解方舟编译器的架构和代码。方舟编译器的开源不仅是一种技术的外放,更是华为引领行业共同构建生态与社区,这是中国底层软件开源之路的探索。 方舟编译器的开源工作也将陆续展开,华为将把软件方面的技术能力在社区中不断贡献给行业,与行业一起探寻更好的、更符合时代需求的软件技术。
方舟编译器架构师对方舟编译器的架构、中间语言、Java语言特性以及RC插入的设计和实现进行了深入浅出的讲解。他指出,目前方舟编译器开源的是编译器框架部分源码,包括编译器中间表示(IR)和语言编译实现,同时搭配编译器其他二进制组件,实现Java程序到aarch64汇编指令的编译过程。开发者可基于开源代码+二进制,编译构建出编译器工具链,尝试对Java程序进行编译。未来方舟编译器将针对前端、后端陆续开源,并支持其它语言的编译等。
专家学者共话发展,共建全新移动应用生态
本次活动邀请了清华大学教授陈文光、中科院计算所研究员冯晓兵、北京理工大学副教授计卫星等专家学者进行了专题演讲,分享了他们对方舟编译器开源的生态建设、社区建设及基础软件开发的看法。
清华大学教授陈文光
清华大学教授陈文光作了《稀疏张量编译器初步研究》的主题演讲,分享了他在GPU上初步开展的稀疏张量编译器研究工作和进展,帮助开发者们更好的理解软件开发编译,为开发者们如何高效开发带来新思路。
中科院计算所研究员冯晓兵
以编译系统及相关工具为研究方向的中科院计算所研究员冯晓兵认为,方舟编译器对于国内基础软件开发带来的意义更为深远。此前为软件底层贡献核心技术的公司主要来自于欧美,华为通过多年的持续研发投入推出方舟编译器,让大家在这个领域看到了中国企业的身影,这无疑大大提振了国内开发者们对于基础软件开发的信心。同样,冯晓兵研究员也为开发者介绍了为深度学习网络提出的一种新的数据格式和一些优化技术,可有效利用输入数据的稀疏性,加速神经网络的执行效率,让与会者获益匪浅。
北京理工大学副教授计卫星
北京理工大学副教授计卫星现场对编译器部分开源代码进行了分析,并分享了编译器的初步运行测试结果,从科研和教学两方面探讨了方舟编译器开源社区构建的基本想法。他认为,方舟编译器的开源对高等院校科研方向和软件开发专业人才培养提供了一个契机,一方面是高校可以结合方舟编译器进行更加深入的研究,不断提升科研实力并输出科研成果;另一方面可在教学过程中,引导高校师生关注方舟编译器并参与开源社区的建设,通过互动交流,提升对基础软件开发的投入研究。
方舟持续开源,合力共推实现多方共赢
据华为官方公布的消息,方舟编译器从2019年8月开始,将持续进行开源。目前已对编译器框架部分开放源码之后,预计将在2020年对Java编译器工具链开源,支持Java程序编译。2021年将对JavaScript编译器工具链开源,可用于JS程序的编译。
方舟编译器的持续开源,可以让更多的科研机构、高校院所、第三方厂商和广大开发者参与进来,源码才会在不断地重构和优化中激活、升华,开发者们可以共同分享技术的进步。
坚持开放、合作、共赢的华为,通过持续的开源,将自己在软件方面的技术能力不断贡献给行业,同时在开源社区中,更多的开发者可以参与并贡献自己的力量,不断推进产业创新与开放生态构建。华为期待更多合作伙伴加入方舟阵营,合力共推基础软件的发展。