1D.7 张兆庆教授编译组为英特尔开发出开放源码编译器

http://www.cas.cn/jzd/jcx/jcxwh/200209/t20020905_1034512.shtml

    □撰稿人:刘振坤(科学时报社)

    中科院计算所编译组自60年代起,承担了院、国家科研攻关项目,自主开发了若干国产大型机的语言编译系统。90 年后开发了共享内存、分布式内存并行机上的自动并行识别器,SIMD芯片和VLIW芯片上的并行优化C编译器,可视化并行编程环境。这些工作获:国家科技进步一等奖两项,国家科技进步二等奖一项,中科院科技进步特等奖两项,中科院科技进步一等奖两项。项目组在编译技术领域的研究工作获国内外专家高度评价,称此研究组居编译领域的世界先进行列。与国际著名公司Motorula、Hitach、Intel开展国际合作,目前与Intel公司合作研制的IA64开放源码编译器ORC居国际领先。研究组包括2名研究员,3名副研究员,4名助研,20余名博士和硕士研究生。
    美国英特尔公司为了开发IA-64开放源码编译器,在全世界范围内寻找合作伙伴,他们经过认真地调查研究,最终选定了坚韧不拔30多年不间断地进行编译器研究的——中国科学院计算所张兆庆领导的编译组。美方出经费、提要求,由中国人为主进行开发,经过一年的密切合作开发出IA-64开放源码编译器,到2001年初项目鉴定时,性能比当时最先进的开放源码编译器Pro64 0.13高6%,达到国际领先水平。
    机会之所以降临到张兆庆教授领导的编译组的真正原因,不仅是他们已经研制成功多并行编译及优化编译系统,张教授坚定地认为我国这样一个大国,迟早会搞CPU芯片,因为它是信息领域的核心技术,为之配套的编译器迟早会用得上。因此在还剩两个学生的时候,她仍然挺了过来,为国家培养和保留了一支编译队伍。所以,在一次与张教授谈合作的时候,英特尔公司的首席谈判专家曾这样提到,张教授坚忍不拔的性格是促使他下决心与计算所合作的原因之一。
    创造性应用代码重用思想,一举奠定成功基础。张兆庆凭借渊博的理论知识和丰富的实践经验,敏锐地想到代码重用的思想,果断地决定开发开放源码编译器,最大限度地利用已有的代码。他们通过对世界范围编译器的比较分析,摸清了Pro64的前身是SGI的产品编译器,2000年开放了该编译器的全部源码,它包括了循环优化和与机器无关优化部分,也包含了许多当时最先进的技术。但后端在ILP优化和机器相关优化方面相当薄弱,对于IA-64体系结构所能提供的一些先进的技术没有充分利用。基于上述分析,决定采用Pro64作为自己的开发基础,改进它薄弱的后端, “投机取巧”,集中力量做编译基础设施和针对IA-64的机器相关优化,一举奠定了成功的基础。
    坚持以我为主,努力争取合作方帮助。张兆庆说:在改革开放的大环境下,我们中国的科学家既要有自信心,又要承认与发达国家在科学技术上的差距,在汲取国际先进学术思想的同时,要虚心学习发达国家宝贵的工程经验。他带领编译组首先研究了几十篇近年来编译领域的重要文献;在这个基础上研究IA-64体系结构,力争搞清楚每一个相关的细节,这方面尽量争取得到lntel公司资深研究人员的帮助;每一部分设计都与lntel公司的研究人员充分讨论,反复论证,并通过原型实现验证。在确保设计的先进性又没有重大问题之后,由各部分的主要设计者编写了规范的低层设计文档。最后,对文档进行了两次严格的评审,第一次在课题组内部进行,第二次由lntel公司组织进行。这些都为项目的成功提供了保证条件。
    开发编译专用工具,将代码错误缩小到最小范围。开发编译专用工具,将代码错误范围缩小到文件、函数、区域、基本块、甚至是若干指令,这样就大大降低了错误定位的困难。他们同步研制了一整套测试和调试工具,包括编译系统测试环境,数据结构可视化工具、软件错误定位工具等。数据结构可视化工具能够将编译系统内部的复杂的数据结构,如全局和区域的控制流程图和依赖图,区域树,谓词划分图等,以图形的形式显示出来,使得很多问题一目了然。软件错误定位工具能够自动缩小错误的范围。特别是运行结果错误,定位相当困难,尤其如面对CPU2000测试程序包测试,平均大小都在几万行以上,若没有这样的工具,真不知道错误从何查起。
    当然,并不是所有的问题都可以由这些工具自动解决,人的才智、毅力和经验是不可代替的。
    不畏枯燥潜心调试,花大气力优化编译器。性能调试是优化编译器课题的重要组成部分,也是最艰苦的部分,更是最枯燥的工作。该项目第一期目标是比Pro64的性能高5%。但是,性能调试开始的时候,项目的性能比Pro64的性能低4%。面对着很多bug,他们也经历无数挫折时的焦急和忧虑。编译器性能和功能目标。为了尽快优化编译器性能和功能目标,首先,从静态代码分析作起,分析比较了大量的汇编代码,注意每一个细节,不放过任何提高性能的机会。二是每部分的开发人员也都作细致的性能分析,主要是将自己分工的部分的实际性能和设计时所预测的性能、其他编译器相应部分的性能做比较,找到这部分的设计和实现缺陷,并加以改进。三是还作了很多性能分析的流程、方法、和工具方面的研究。他们开发了统计静态和动态执行周期数工具,这些工具对于快速找到若干版本之间的性能差别有很大帮助。四是制定了严格的提交制度,尽量不让性能下降的改动提交。到项目鉴在鉴定的基础上,经过大家艰苦工作目前性能已经比Pro64高20%以上。
    (京区党委供稿)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值