曙光1000大规模并行计算机系统研制工作的回忆 | CCCF精选

摘要:作为我国高性能计算事业的亲历者、开拓者,作者在本文中介绍了我国曙光1000大规模并行计算机系统的研制过程,提供了一些关键细节,描绘了三十多年前我国高性能计算领域的科技工作者在经济机制转换和基础薄弱的背景下凝心聚力、勇于创新的求索过程,对我国现阶段和未来科技创新

编者按:作为我国高性能计算事业的亲历者、开拓者,作者在本文中介绍了我国曙光1000大规模并行计算机系统的研制过程,提供了一些关键细节,描绘了三十多年前我国高性能计算领域的科技工作者在经济机制转换和基础薄弱的背景下凝心聚力、勇于创新的求索过程,对我国现阶段和未来科技创新具有借鉴意义。

{ 曙光1000研制背景 }

20世纪80年代,日本发起的智能计算机研究计划在国际上产生了巨大的影响。该计划的目标是研发专用硬件系统运行人工智能程序。作为回应,中国于1986年启动了高技术研究发展计划(863计划),在信息领域设立了智能计算机主题,即306主题,并依托中国科学院计算技术研究所(以下简称“计算所”)成立了国家智能计算机系统研究开发中心(以下简称“智能中心”)。

当时,306主题和智能中心的一些专家认为,专用智能计算机的发展前景有限,而通用并行计算机才是高性能计算领域的主流趋势。他们相信,在通用并行计算机上运行智能程序同样可以实现人工智能的目标。基于这一共识,306主题专家组将“智能型并行分布计算机”确立为主要研究方向。

90年代中期以后,日本的智能计算机计划逐渐淡出人们的视野。近年来,随着新一轮人工智能热潮的到来,人们发现高性能计算能力成为了人工智能发展的基石,这也证实了当年306主题专家组的决策具有深远的预见性。

智能中心承担了863计划306主题中的一个关键课题——智能型并行分布计算机(课题编号:863-306-61-01)。课题负责人是时任智能中心主任李国杰研究员。1992年12月,智能中心签订了课题任务合同书。该课题的主要研究内容之一是研制一套“智能化分布存储并行计算机系统”,这套系统后来被称为“曙光1000大规模并行计算机系统”(以下简称“曙光1000”)。

{ 研制任务 }

曙光1000课题的主要任务是研制一套包含至少32个节点的分布存储并行计算机系统,并为其配备智能编程和运行环境。曙光1000的主要技术指标包括:系统配置包含32个计算节点、2个登录与服务节点,以及2个I/O节点;峰值运算速度达到每秒25亿次;内存总容量为1.0 GB;外存总容量不低于5.0 GB;自研蛀洞路由芯片(Wormhole Routing Chip, WRC)和连接网络;每个节点配备UNIX操作系统和分布式操作系统;提供C、C++、Fortran编译器及并行调试工具;集成Express并行程序环境和自动并行化工具;支持智能编程与高效运行。

课题任务书中详细阐述了曙光1000的体系结构、技术路线和技术指标体系。这些研究成果反映了智能计算机课题专家组特别是李国杰主任的重要贡献。

{ 研制队伍 }

为了执行曙光1000课题任务,智能中心牵头组织了一支由100多人组成的研制队伍,队伍成员来自中国科学院内外的相关单位。曙光1000系统的核心研制人员有60多人,主要来自智能中心和计算所。这支队伍以刚毕业不久的博士和硕士为主,还包括一些具有大型计算机系统研制经验的老同志。

在研制工程正式开始之前,研制人员抓紧时间做技术准备,包括阅读相关资料、分析UNIX操作系统源代码,以及熟悉电子设计自动化(EDA)工具的使用。1992年3月,研制队伍在智能中心的小楼里举行了誓师大会,喊出了“人生能有几回搏”的口号。全体成员热情高涨,决心全力以赴投身这项艰巨而光荣的任务中。

当时,我作为国家公派的高级访问学者在加拿大滑铁卢大学做研究工作。1992年5月初的一个清晨,李国杰主任给我打来了电话。他说:“现在正是用人之际,希望你能尽快回国参与曙光1000的研制工作。”我非常感谢李国杰主任的信任,并出于为国家贡献力量的愿望,毫不犹豫地接受了这项任务,立即购买机票返回祖国。

前往加拿大之前,我曾参与过我国第一台百万次大型计算机——北京大学150机运算控制器(CPU)的研制工作,并在夏培肃先生的领导下组织过计算所BJ-01并行计算机系统的研制。这些宝贵的经历给了我接受这项任务的信心。

当我回到国内时,曙光1000的研制工作已经全面展开。我的主要职责是指导曙光1000的研制工作,并继续负责智能中心的基础研究工作。

曙光1000的研制初期,技术团队分为硬件和系统软件两大组。硬件组负责研制计算节点板、服务节点和I/O节点,以及这些节点与连接网络(Mesh网络)之间的接口板,还包括蛀洞路由芯片与Mesh通信底板的设计。其中,计算节点的逻辑设计必须经过全系统的仿真验证,以确保逻辑设计的准确性。

系统软件组则负责开发节点操作系统、并行操作系统、并行通信系统、并行(并发)文件系统,并负责移植并行编程环境Express和PVM。此外,系统软件组还负责几种编译器的移植工作。

在这个阶段,每个小组负责设计一块板卡或一个软件子系统,小组之间的交流相对较少,整体的研制工作组织协调力度也比较有限。

1992年底前,我主要负责指导曙光1000的研制工作,工作重点是与研究生曾嵘讨论蛀洞路由芯片的设计。WRC芯片设计是一项极具挑战性的工作,当时可参考的资料只有一篇哈佛大学的硕士论文,学术期刊论文在这方面提供的帮助有限。我们首先明确了蛀洞路由的基本原理,并制定了设计方案概要。随后,曾嵘进行了详细的分步设计,我逐一审查并提出修改意见,经过反复修改,最终确定了设计方案。

与此同时,我还抽时间去各个小组了解进展情况,并针对遇到的问题提出建议。1993年上半年,我被任命为智能中心的总工程师,工作重心从指导曙光1000的研制转变为组织研制工作,并负责向李国杰主任汇报研制进展情况和遇到的问题,以获得指导。

曙光一号研制任务于1993年10月完成后,一部分曙光一号的研制人员加入了曙光1000的研制队伍。智能中心决定成立曙光1000研制工作总体组,我担任组长,成员包括硬件组组长杜晓黎博士和系统软件组组长樊建平博士。总体组负责总体方案设计、研制工作的组织与队伍管理。后来,樊建平博士转去曙光公司工作,孙凝晖接替了他的位置。

{ 迎难而上 }

曙光1000研制工程初始阶段的进展并不尽如人意。究其原因,既有技术层面的因素,也有队伍管理方面的问题。研制队伍中具备大型计算机研制工程经验的人员较少。年轻人富有知识和朝气,擅长模拟和编程工作,但他们在工程实施方面的经验不足,有些人对必要的工程管理和调度不太习惯,甚至存在一定程度的抵触情绪。当时一个突出的问题是缺失团队合作精神,有的研制人员过于专注自己的工作,不愿意接受工作检查和调度,导致了团队协作困难。

此外,当时的职工待遇普遍较低,加之市场经济浪潮的影响,一些年轻同事受到了经商下海的诱惑,直接影响了研制队伍的稳定性。还有一些同事对研制工程的难度估计不足,遇到问题时缺乏必要的心理准备,表现出各种情绪波动。

这些问题无疑对曙光1000的研制工作产生了负面影响。

为了确保曙光1000研制工作的有序开展,总体组采取了多项措施:一是加强工程管理,制定了从总体设计到部件研制等所有环节的工程规范,并上报智能中心审批后严格执行;二是实行责任制,在软硬件设计过程中,实施设计、审核和批准三级责任制,确保每一项工作的质量;三是引进经验丰富的人员,智能中心从计算所抽调了一些具备丰富研制工程经验的老同志加入研制队伍,以传授工程经验,树立优良作风;四是提高员工待遇,为此争取到了智能中心和计算所领导的支持,逐步提高了员工的待遇。采取这些措施之后,曙光1000的研制工作很快就有了明显的改观。

为了确保曙光1000正式系统的顺利研制,总体组决定先构建一个原型系统,主要目的是验证WRC芯片的功能。原型系统包含一块3×3的WRC通信底板、两台服务节点机、两块与底板通信的接口板以及用于收发消息包的小程序。两台节点机通过WRC底板进行点对点的通信,可以检测所有WRC芯片及其之间的连线。

1993年秋季,WRC芯片生产完成。研制人员立即组装原型机并进行联机调试,首先确保所有部件连接通畅,然后进行点对点的消息包传送。然而,在连续进行大量消息包传送的过程中,出现了停机现象:消息包会在某个WRC芯片处停止传输,而且每次停的位置不固定,即使在同一芯片处也并不总是停机。这个问题困扰了团队两个月,直到年末也没有找到确切的原因,这让团队内的一些同事感到沮丧,甚至有个别同事想要放弃。再加上WRC芯片的设计者曾嵘即将出国深造,团队成员们倍感焦急。

面对技术问题,我通常的做法是站在后面,放手让大家自行解决问题。但如果是在关键时刻,我认为自己不能只充当指挥员,必须亲自上阵解决问题。因此,我每天都待在调试现场观察,经过几天的思考,初步判断停机问题并非源于WRC芯片本身,而是通信接口板上的外购I/O处理器芯片的问题。该芯片无法正确处理消息包包尾标志位“T”丢失这一特殊情况。

我将自己的分析和判断告知了参与原型机调试的同事,大家认为这是合理的。于是,我们修改了测试程序,采用通行的直接内存访问(DMA)方式,避开了消息包包尾标志位,并在原型机上进行试验。修改后的测试程序顺利通过了试验,并且长时间没有出现问题。试验结果证实了之前的分析和判断,解除了压在同事们心头已久的重担,大家的情绪得到了提振。之后,硬件组成员董向军向这款I/O处理器芯片的生产厂家通报了我们遇到的问题和试验分析结果。该厂家承认其芯片存在这个问题,并准备修改芯片设计。找到问题根源后,总体组决定废弃原型机,立即生产6×6规模的曙光1000正式系统。

{ 龙山会议 }

1994年初,曙光1000研制团队在北京昌平龙山召开了一场为期两天的工作会议,旨在总结前一阶段的工作并布置下一阶段的任务。智能中心内部将这次会议称为“龙山会议”。李国杰主任出席了会议的最后半天,并发表了讲话。

在全体会议上,我做了较长时间的发言,详细分析了原型机调试中出现的问题、产生的根源、解决问题的方法和过程,以及最终达到的效果。我的发言引起了大家的高度关注,发言结束时,大家的表情都显得格外轻松。这是我生平所做的最认真、最有成效的技术报告之一。此外,我还对下一阶段研制工作的重点和注意事项进行了说明。

各个小组也在会议上总结了自己的工作,并提出了解决问题的具体办法。解决了原型机的硬件问题后,系统软件的问题开始凸显。实施软件工程是一个需要团队合作的过程,如果研制人员之间的沟通不足,可能会导致各程序模块之间的连接不畅。在软件工程实施过程中经常出现的各种问题,主要是工程管理不够严格造成的。为了解决这些问题,李国杰主任特意派遣了一位在国外从事过软件工程管理的专家负责曙光1000研制中的软件工程管理工作。在会议上,李国杰主任向大家介绍了这位新同事。龙山会议之后,研制队伍变得更加团结,成员们也更有信心。曙光1000的研制工作由此进入了新的阶段。

{ 研制新阶段 }

1994年春季,计算所的编译组整体加入了曙光1000研制团队。该组的学术带头人张兆庆研究员和乔如良研究员在并行优化编译方面具有深厚的造诣。他们在曙光1000项目中的工作包括研制并行优化编译器及相关工具,具体涉及节点程序优化、串行程序的自动并行化及工具、并行程序的可视化及工具、并行程序调试器等。这些工作均处于当时的国际前沿水平。编译组的加入极大地增强了曙光1000研制团队的实力。老同志们甘于奉献的精神和严谨求实的科学态度为年轻的同事们树立了良好的榜样。

1994年5月,曙光1000各个部分的工程实施工作按照计划全面展开。总体组每周召开一次例会,检查工程进度并解决重要问题。每次会议都能看到新的进展,墙上挂着的研制工作进度流程图中的箭头不断向前移动。

在此期间,总体组特别注重工程质量管理。在系统软件方面,重点抓软件测试,每个编程人员都配有一名测试人员,以最大限度地减少软件错误。在硬件方面,逻辑设计质量主要通过系统仿真来保证。硬件质量的关键在于印制板的质量。总体组指派了经验丰富的老同志陈鸿安专门负责印制板工程质量的把关。

1994年8月下旬,节点板和通信底板生产完成。9月初开始调试,4节点并行系统于9月底调试成功。10月下旬的一天上午,一个插件箱中的18节点并行系统调试完毕。那天,时任科技部部长宋健同志前来检查工作,他看到曙光1000研制工作进展顺利非常高兴,在实验室里谈笑风生。在他离开的那天下午,第二个插件箱中的18节点并行系统也调试成功了。

此后,研制组进行了全部36节点并行系统的联合调试,并对其稳定性进行了测试:使用小程序长时间测试每一条通信链路。影响曙光1000硬件稳定的一个重要因素是20层大面积通信底板的信号干扰。老同志侯建如不厌其烦地进行电阻电容匹配试验,最终解决了稳定性问题。硬件系统基本调试成功后,研制工作的重点转移到系统软件研制和并行优化编译的研发上。此时,并行操作系统的进展成为整个研制工程进展的关键,总体组成员兼系统软件组组长孙凝晖亲自参与操作系统程序的测试工作。

曙光1000研制期间,国际上LINPACK基准测试工作刚刚起步。1995年初,总体组邀请了中国科学院并行软件中心的孙家昶研究员和迟学斌博士开发曙光1000系统的性能评测软件,并进行了性能评测。

{ 技术突破 }

1995年4月,曙光1000大规模并行计算机系统研制成功,并于同年5月在北京通过了科技部组织的成果鉴定。鉴定委员会对曙光1000的技术成果给予了高度评价。作为我国第一套大规模并行计算机系统,曙光1000在多个方面实现了技术突破,达到了国内领先水平。

曙光1000最引人瞩目的两项技术成果是蛀洞路由芯片设计技术和并行优化编译及工具技术。这两项技术创新使曙光1000项目获得了1997年国家科技进步一等奖。

1986年,威廉·达利(William Dally)在其博士论文中首次提出了蛀洞路由原理。后来,英特尔公司根据这一原理研制出了蛀洞路由芯片。相比之下,我们的蛀洞路由芯片采用了异步与同步相结合的消息传递方式,这不仅大幅度减少了芯片中的软故障,还显著提高了芯片的可靠性。软故障的特点是长时间工作正常,但偶尔会出现错误,这种错误不是由电路失效引起的,而是由设计缺陷造成的。

在并行优化编译及工具方面,最值得关注的是并行程序可视化工具ParaVision。当时的业内专家认为,ParaVision与国外同类工具相比,技术水平相当甚至更高。

{ 精神传承 }

曙光1000的研制工作是在我国经济体制转换的过程中进行的。在这个特殊的背景下,能够维持如此庞大的研制队伍并坚持不懈地完成任务,实属不易。研制人员表现出的奉献精神、创新精神以及严谨的科学作风是一笔宝贵的财富,值得后来者继承和发扬。

曙光1000研制任务完成后,大部分研制团队成员陆续离开了智能中心,前往国内外各地从事高科技工作。他们中的一些人成为了研究所所长、研究员或教授,而更多的人成为了曙光、联想等高技术企业的技术带头人或高级管理人员。可以说,曙光1000项目不仅仅是一项科研成果,更是一所培养信息技术领域高水平人才的“黄埔军校”。

曙光1000是一项集体成果,凝聚了众多参与者的心血。除了直接参与研制的科技人员之外,还有许多后勤和条件保障人员以及计算所内外的协作人员,他们都展现了高尚的无私奉献精神和协作精神。

在此,我想举一个例子:孙家昶研究员和迟学斌博士为曙光1000项目研制性能评测软件并进行性能评测,为曙光1000的成功作出了重要贡献。他们的工作是曙光1000研制工作不可或缺的一部分,但由于某些原因,他们的名字未被列入课题人员名单和国家奖励获奖人员名单。在这里,我谨代表所有人向他们表示歉意,并借此机会对他们无私奉献的精神表示深深的敬意。为曙光1000项目作出贡献的人员还有很多,限于篇幅,这里就不一一列举了。

祝明发

CCF王选奖获得者。联想集团首席科学家,北京航空航天大学计算机学院教授、博士生导师。曾任国家智能计算机研究开发中心总工程师、副主任,国家高性能计算中心(北京)主任,中国科学院计算技术研究所研究员。获国家科技进步一等奖一项和二等奖四项。

来源:CCFvoice

相关推荐