DeepTech深科技方舟编译器带来更多话语权,国产编译器仍需提高自主性


DeepTech深科技方舟编译器带来更多话语权,国产编译器仍需提高自主性
本文插图
2019 年 8 月底 , 华为方舟编译器(OpenArkCompiler)正式开源 。 一年多来 , 方舟编程体系陆续实现了编译器、引擎、调试器的开源 。方舟编译器的“走红” , 也让编译器这一技术性话题逐渐广为人知 。 那么 , 编译器的重要性有哪些?中国在编译器方面是怎样的现状?还有哪些不足? 近日 , DeepTech 和鉴释科技首席架构师刘新铭进行了对话 。 他目前主导该公司面向 DevOps 的静态代码分析工具的核心研发工作 , 曾任惠普编译器技术实验室主任 , 领导基于惠普安腾处理器的编译器开发工作 。 在开发和交付高性能计算系统(HPC) 编译器和性能分析工具方面拥有数十年经验 。以下为整理后的采访实录: DeepTech:您觉得编译器对于操作系统以及生态的重要性体现在哪些方面? 刘新铭:我的第一个观点是编译器一定要做 。 编译器是世界上第一个电脑软件 。 在没有编译器之前 , 只能靠会写汇编的人去编译电脑软件 。 这需要很大的工作量 , 而且需要很高的专业技术能力 。 所以编译器的存在是非常有必要的 。 有了编译器才会有操作系统 , 才会有生态 。 所以如果国内不做好自己的编译器 , 就很难在这个生态中扎根 。 在 2000 年左右 , 谷歌刚创立时只招聘两种人:第一种是做操作系统的人;第二种是做编译器的人 , 其余一概不招 。 如果按照当时谷歌的条件在国内的软件行业去筛选人才 , 可以写核心算法的人 , 目前在全国也许不超过 300 人 。所以想要扎根 , 编译器是一个开始 , 需要给予足够的重视 。 但这是一条很艰辛的路程 。 比如在之前 2000 年到 2010 年左右 , 我在美国负责安腾服务器生态系统的编译器部分的工作 。 为了要完成这个生态系统 , 公司设定了一个目标 , 要达到 6000 个应用以上 , 并且要调到最优 , 才能卖出去 。很多人认为开源很好 , 可是开源在国内常会变成拿来主义:自己做的东西不开源 , 老用别人开源的东西 。 但是这种做法不可持续 , 在三两年之后 , 很可能自己的东西和开源的东西无法融合在一起 。我的第二个观点就是编译器不但要做 , 还要掌握控制权 。 要有我们自己的创新性和自主性 , 而且要有发言权 。 比如中国的软件在国外是没有发言权的 , 我们做得再好 , 对方不允许进入或者需要等很久 , 也是没有用的 , 因为它开源的软件可能已经达到很高的高度 。 每次整合 , 都需要花费六个月 。 所以发言权很重要 , 在 GCC (GNU Compiler Collection , GNU编译器套件)的领域 , 我们需要守门人(gate keeper)点头 。 等守门人点头排队就需要三个月 。 就鸿蒙和方舟而言 , 中国人可以自己有发言权 , 这是很重要的 。 “点头” 这件事请的重要性很多人尚未意识到 。 要有 “点头” 的权力 , 最重要是要有优秀的人才 , 这样才能做开源、做需要的创新 。 比如我在这方面有几十年的工作经验 , 技术水平超越了很多人 , 对编译器有深度的了解 , 去管理这门技术的研发别人才会信服我 。第三个观点 , 我认为做软件不能浮躁 , 要静下心来做事 。 我们需要长时间的积累 , 也要鼓励年轻人做技术上的积累 , 不断学习、不断思考 , 要有和钟南山一样的精神 。DeepTech:您感觉我们现在国内的编译器生态相较国外是怎样的状况?刘新铭:我认为差距又增加了一年 。 我们仍然没有在做核心的事情 , 无法做核心的事情 , 就无法进入主流 , 无法引领未来的趋势 。比如 2018 年图灵奖 , 两位获奖者 , 一位是斯坦福的 John LeRoy Hennessy(约翰?轩尼诗)教授 , 还有 UC 伯克利分校教授的 David Patterson(大卫?帕特森) , 他们两位合力做出了现在 CPU 基础架构设计的理念和方法 。 即现在最流行的芯片 , 包括 ARM 芯片在内都在用的 RISC 服务器 。对于摩尔定律结束后 , 该如何继续推动 IT 继续发展 , 他们认为需要依靠:特殊场景的语言 (domain-specific language/DSL)、特殊场景的编译器 (domain-specific compiler)、特殊场景的架构 (domain-specific architecture) 。 特殊场景 , 我认为这四个字可换为 AI 。 谷歌在做 AI 的语言 , 仍在进行中 。 国内迎头赶上比较难 , 因为多数做芯片的公司 , 都将资源集中至硬件方面 , 做软件的资源不足 , 做不了编译器 , 这是事实 。 有目共睹的是 , 别人看到我们只做硬件 , 所以先从软件方面卡脖子 。DeepTech:您觉得国内如果想突破的话 , 应该如何去做?刘新铭:首先 , 我们的产业界要合作 , 不应该再单打独斗 。 打个比方来说 , 十家企业一人一块钱 , 一共十块钱 , 凝聚在一起 , 十块钱能做的事远比一块钱要多 。 产业要合作 , 把各方的资源整合在一起 , 发挥优势 , 凝聚起来 , 在做好硬件的同时 , 去做软件 , 做编译系统 。 第二 , 既然要合作 , 就不要各自为营 , 各做各的 , 需要配合协作 。第三 , 需要重视人才的培养 。 全国还在教编译器的学校几乎已经不存在 。 我们需要把编译器这门课变成选修课 , 提起我国学生对编译器的兴趣 。 当然教师也需要改变观念 , 不仅仅是写好学术论文 , 要做基础建设 , 更要注重实践 。 比如国外的一些老师做研究前都会搭一个完整的架构 。 所以国内的老师们可以改变观念 , 用方舟做我们自己的软件编译器的基础架构 , 而不是用国外的 。-End-