开篇:润墨网以专业的文秘视角,为您筛选了一篇惊魂百万亿次范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
“聂总让你来一趟。”
“什么事呀,非要我去一趟?”
“聂总点名让你来!”
“好吧,我这就过来。”
2008年10月7日下午,在曙光5000A测试现场干了一个通宵的微软中国研发集团战略合作部数据中心经理李铭才回家休息了不到3个小时,就又被叫回了中科院计算所地下二层。这里是计算所的车库,一个月前才刚刚被临时改装成测试现场。
在多种噪声交织的测试现场,曙光公司副总裁聂华大声对李铭说:“计算所9日就要停电改造供电系统,如果你们在这之前结果还没有一个显著提升,我就只好换成Linux了。”
换Linux!这意味着Windows将在曙光5000A的系统性能测试中出局,李铭和他的同事们大半年的努力和连日来24小时倒班的付出都将付诸东流。
冒险搏一把
2008年1月底,微软负责高性能计算机(HPC)系统销售的李莸弥,计算所和曙光公司作为研制单位在“十一五”863计划重大项目“高效能计算机及网格服务环境”上中标,联合承接了该项目两台每秒百万亿次浮点运算高效能计算机中1台的研制任务。这就是人们现在看到的曙光5000A。
李莅颜饧事告诉了李铭和微软中国平台战略总监李科研。三个人商量后,觉得可以尝试一下在Windows平台上测试曙光5000A的性能。话虽这么说,但三人的心里一点底儿都没有。
从技术上看,微软在2005年11月的超级计算大会上才了用于高性能计算的Windows Computer Cluster Server 2003(WCCS 2003)的测试版,开始向高性能计算领域进军。后来这个操作系统的下一代版本更名为Windows HPC Sever 2008(WHS 2008)。即使到了2008年1月,WHS 2008也还处于测试阶段,并没有正式。即使是这个最新版本,所标称支持的高性能计算机规模也只有256个节点,而曙光5000A最初设计规模就达到1300个节点。
尽管李铭知道微软总部那边正在做的最大项目是美国伊利诺伊大学国家超级计算中心(NCSA)的机器,有1074个节点,但其规模也要比曙光5000A的1300个节点小不少。
说到人手,微软在中国做HPC项目的人真可谓是屈指可数,加上上海那边研发团队的十几个人,总数也不过20人。曙光5000A原计划2008年6月冲击全球500强,这与NCSA的项目在时间上重合。到那时,总部的人手将都在为NCSA忙活,分身乏术。
但是,能在曙光5000A这样规模的计算平台上做事,对任何做HPC的人来说都是梦寐以求的事情。这对“三李”当然也不例外。尽管“本钱”差得很远,但“三李”觉得还是值得冒险一搏,大家商定先悄悄地干,即便失败了也不至于闹得满城风雨。
由于之前微软和曙光在个人HPC上签署过战略合作协议,双方都很熟悉,于是,李铭找到聂华。尽管李铭心里打着在Windows平台上测试曙光5000A性能的算盘,但口中却对聂华说,希望在曙光5000A平台上测试一下WHS 2008测试版。
聂华当然听得出李铭的弦外之音,并爽快地答应让李铭他们先试一试。如果测试结果令人满意,可以先用Windows测,否则还是要用Linux。
至于说为什么同意让Windows先试试,聂华心里也有自己的打算。
“三李”终于如愿以偿,可以在曙光5000A上试一试。但后来在测试过程中出现的风险和压力,却是他们始料未及的。
迎头一记闷棍
聂华答应可以试试Windows的时候,曙光5000A的硬件还没有做出来。毕竟曙光5000A太大了,加之整个系统应用了很多新技术,必须通过多种方式进行验证,以消除系统的不确定因素,而节点样机则是验证曙光5000A计算节点和管理节点设计的重要步骤。
曙光5000A用了近万片“巴塞罗那”CPU,这是AMD当时最新的4核服务器CPU。每4个CPU构成一个4路刀片服务器作为计算节点,每16个CPU构成一个用于浮点计算的胖节点,最终,由1920个节点构成曙光5000A这个庞大的计算系统。
衡量这些庞然大物性能的权威排名是Top500,它是由德国曼海姆大学在1993创立的,每年6月和11月都会全球500台最快计算机系统的最新排名。
Top500主要依据的是Linpack运行的结果。这个上世纪70年代开发的基准测试程序,实际上是通过对一元N次线性代数方程组的求解,来测试高性能计算机的浮点计算性能。只要给出N值,所需的运算次数也就确定了,这样,只要除以运算所用的时间,便可得到高性能计算机的浮点运算速度。在高性能计算领域,通常用每秒万亿次浮点计算作为基准单位,人们更愿意用T来简称。
就像木桶原理所说的,水装得多少不仅与桶的大小相关,而且取决于木桶最短的一块板那样,Linpack测试不仅要求系统中所有节点的计算和通信性能足够强,更重要的是不能有弱点。Linpack采用的是并行的迭代计算,只有等到最后一个节点计算结束后,才能进入下一次迭代。从这个意义上讲,Linpack测试是很残酷的,它是对系统整体性能的测试,只要系统中有一个节点计算或者通信性能不好,就会拖累整个系统性能。由于做Linpack时硬件没有冗余,有时候,测试程序已经跑了好几个小时,可能因为一根内存条出现故障,都会导致整个测试前功尽弃。
一个多月后,4台节点样机出来了,两台运行Linux,另两台则交给微软运行Windows。微软中国研究中心资深HPC顾问叶向宇和同事敖翔兴冲冲地跑到曙光公司体验中心,把Linpack测试程序装到机器上。但测试程序运行完成后,结果犹如给了他们一记闷棍――效率只有46%!而Linux不用优化就可以轻松达到75%。
对首次测试结果成绩可能不太理想,尽管李铭他们心里有所准备,但成绩相差这么多,还是大大出乎他们的预料。
此时,聂华心里凉了半截,他的压力可能比李铭他们还要大,毕竟之前曙光高性能计算机的Linpack测试都是在Linux上进行的,为什么要冒险尝试Windows呢?
Windows拿到入门证
缓过劲儿后,李铭他们认真分析了如此差劲的原因。首先,使用的WHS 2008是测试版的,而且还针对巴塞罗那CPU当时出现的缺陷,做了一个补丁,通过降低效率来防止CPU出错;其次是像CPU耦合、函数库等很多优化工作还没有做。他们的信心还来自于WHS 2008有效率超过70%的案例。
原本曙光5000A是瞄准6月公布的Top500,但由于巴塞罗那CPU出现缺陷造成了供货延迟,直接影响到曙光5000A这样需要近万片CPU的大系统。最终,曙光5000A没有赶上4月15日的成绩提交截止日。曙光5000A只有将目光瞄向10月1日――11月Top500排名公布的报名截止日。
假如一切都能按期进行,曙光5000A进入Top500十强是十拿九稳的事,但是国际上高性能计算机的发展速度非常快。2007年11月,Top500的十强门槛是82.16T;而到了2008年6月,门槛已经提高到106.1T,足见高性能计算竞争之激烈。推迟半年,给曙光5000A冲入十强带来了很大的不确定性。本着实事求是的精神,曙光尽管没有放弃,但也不再公开表示冲击十强了。
假如一切都能按期进行,根据微软当时测试的成绩,等待微软的结果只能是出局。曙光5000A瞄向11月的Top500,为李铭他们宽限了近半年时间。
然而,尽管时间上的压力减轻许多,但后来为了满足上海超级计算中心提出的新的需求,曙光5000A整个系统的规模从1300个节点扩展到了1920个,比李铭他们1月份商量冒险尝试时的规模提高了近50%。这远远超出了WHS2008标称的256节点的支持能力。
如果最初曙光5000A的规模是1920个节点,李铭他们也未必敢去尝试。正可谓,无巧不成书。
在接下来的两三个月里,李铭他们一方面在北京做一个有140个节点的高性能计算项目的Linpack测试,积累一些经验,另一方面则在曙光的样机上不断进行优化。
AMD那边也传来了好消息,“巴塞罗那”的缺陷已经解决,开始大批量供货。这使WHS 2008得以去掉影响效率的补丁。
经过不断优化,系统运行效率逐步提高到百分之七十多后,用于Linpack测试的函数库就成为阻碍性能进一步提升的主要因素。
在Linpack测试过程中,要大量地调用函数库进行运算,因此,数学库的运算效率就成为影响Linpack测试的重要因素之一。
Linux版的函数库是日本的Goto博士写的。Goto把数学库的性能优化到了极致,CPU从算出数据到数据传送再到下一步计算,中间几乎没有等待,这与日本企业的准时生产方式很相似。在计算机领域,人们常用牛人来表达对技术顶尖高手的敬仰,而Goto绝对是一个牛人,他一个人写的数学库的效率打败了世界上其他做高性能计算数学库的人或者团队。x86 CPU厂商提供的Windows版本都是由多人组成的团队编写的,然而,他们写的却比Goto的在效率上相差5%左右。
于是,李铭他们开始调用微软总部的资源,由总部出面请在德州理工学院做访问学者的Goto为Windows写数学库。凭借Goto写的数学库,微软在曙光5000A单节点样机上跑出了86%的好成绩。
但这个单点成绩的说服力并不强,因为曙光5000A有1920个节点,而Windows常常被人诟病的是加速比,也就是说当节点数增加时,性能不能线性提升。而高性能计算涉及到大量的节点并行计算,只有证明加速比不比别人差,你的单点效率优势才会被认可。
天津基地初露锋芒
马上要进行32节点测试了,到底是先测Linux还是先测Windows?曙光技术支持中心总经理邵宗有需要一个答案。
邵宗有找来了曙光的测试工程师询问Linux测试结果,工程师的回答有点含糊:不是85%就是87%。
“到底是85%还是87%?”邵东友盯了一句。工程师的回答是85%。
邵宗有感觉Windows的测试结果好一点儿,打算先用Windows试一试32节点的运行效果。
曙光体验中心的电源和制冷条件无法满足更大规模的测试要求。在曙光天津产业基地进行小批量试产后,7月上旬,叶向宇和敖翔赶到了距天津市区5公里之外的曙光基地。在老化车间内,他们开始实地测试Windows HPC 2008的扩展性。
曙光原本给他们安排了3天的测试时间。叶向宇心里盘算着,如果一切顺利,32节点的测试可能1天左右就可以结束。但是3天过后,依然进展不大。遇到种种奇怪问题的微软HPC团队,有些束手无策。路只有一条――反复集中各种现象和突出问题。这时候叶向宇只能硬着头皮与邵宗有协调,争取更多的时间。
经过将近4天测试,他们从操作系统层面到节点硬件、网络路由逐一排查,终于查到了故障原因。叶向宇和敖翔,从1个结点、2个结点、4个结点、8个结点一直按照这样的规则进行加倍测试,直到32个结点。性能只下降了2%,运算效率达到84%,几乎实现了节点数与运算能力的线性扩展。
后来证明,这4天是非常值得的。如果不是及早发现网络路由方面的问题,到时候根本不可能完成1920个节点的测试。
再续“车库传奇”
32节点测试完毕后,曙光开始着手搭建曙光5000A。
1920个节点的曙光5000A重达50吨,耗电高达1MW,能满足电力、制冷、承重等多个条件的地方确实不多。辗转之后,他们看中了中科院计算所的地下车库。
然而,正值奥运,而搭建临时测试环境就要架钢梁、接水管,气焊所需的乙炔属于易燃易爆品,在奥运期间禁止运输。
9月1日,车库全部清空,曙光的施工队伍开进现场。多亏曙光5000A的机柜供应商艾默生承接了奥运场馆相关设备维护的任务,拥有易燃品运输的通行证,及时焊接了钢梁,保证了施工进度。
经过10天奋战,他们完成了包括配电安装、水管焊接,以及架钢梁、机柜等机房骨架搭建,节点也架起来一部分。
9月11日,包括秘书、财务等行政人员在内,曙光公司几乎倾巢出动,一天就将现场共计700条,总长达60公里的光纤全部部署完毕。
测试现场各方面情况相当简陋,由于测试要求严格的无尘环境,占地达2000平方米的数据中心几乎完全不通风,只有一个门可供出入。测试过程中50个机柜的散热风扇同时工作发出的噪音,特别是冷却水泵发出的刺耳噪声非常大,整体环境噪音接近70分贝,让人难以忍受。
9月12日,曙光和微软的测试团队进驻测试现场,聂华亲自坐镇。此时,距离Top500的提交时间只有不到20天了。
走上500强擂台
曙光和微软用了3天时间完成部署,9月15日,开始按照1、2、4、8、16、128、256、512、1024的节点倍数开始测试。测试超过1024个节点时,按照每次测试256个节点线性递增。
到测试1300个节点时,运算效率突然开始大幅下降。测试到1556节点时,系统反应速度变慢,图形界面处于崩溃边缘,网络延时也出现了时大时小的不稳定现象。
联合测试团队排查发现,问题很复杂。合作之初,有脱节现象在所难免。微软在查软件问题,曙光在查硬件故障,双方沟通很少。于是,聂华下了死命令,联合查找,尽快把有问题的节点和故障筛出来。聂华的一个“土办法”起到了大作用――用白板对故障定位,对所有节点进行统一编码,并在白板中标出故障节点的编号,从而使得故障节点的数量和位置一目了然。
在排查过程中发现,InfiniBand网卡、主板、内存、交换机、网络优化、节点和操作系统都存在或多或少的问题。
问题层出不穷,有些事甚至让人感到不可思议。比如,有一次机箱内的PDU(电源分配器)因质量问题烧毁,他们决定对所有节点下电,花了两天的时间更换了所有PDU。系统重新上电后,网络却处于瘫痪状态。 聂华逐一检查网线后,发现有个交换机上多插了一根网线。聂华拔掉这根多余网线后,系统还是不能正常工作。于是大家忙着调整硬件、换硬件,甚至动用了全套的备用网,结果还是丢包。聂华一度怀疑可能是系统中病毒了,当时都动了将所有系统重装一遍的念头。无奈之下,聂华对全系统实行了一次关机。重新启动,系统正常了。
回过头来仔细一分析,才发现问题出在头节点上。WHS 2008要求按先头节点,后其他节点的顺序启动。当时网线的错插已经造成了WHS 2008的混乱,所以,需要来个类似PC上的硬启动。由于Linux系统中节点都是平等的,难怪Linux经验丰富的聂华这次也被难住了。
不止聂华,项目组所有人的心情都很复杂。聂华咬咬牙,再次压缩排期,给项目组多挤出一天,28日晚上12点是聂华的时间底线了。李铭他们继续把作业规模扩大到N值为220万以上,28日早上,操作又一次失败了,而这个作业当时已经运行了五个小时了,如果它能正常完成,成绩约为185T。
时间让项目组不得已做出了最稳妥的选择,把作业规模降到了N值为200万的量值。以他们开发的小工具的测算,这次作业刚刚能超过180T。这次作业在28日下午开始提交,人们都有些敏感了,现场开始清场,门也锁上,就希望把人数降到最低,没有任何干扰。
在这段等候最终结果的八个半小时中,聂华、李铭、曹镇男(曙光技术支持中心副总经理)、沙超群是最后成绩的见证者。晚上11点左右,终于得出了180.6T的结果。现场没有鲜花彩带和掌声,甚至连四个男人的欢呼雀跃都没有。这个成绩让所有人都很满意,但大家却显得异常平静。
此时,曙光Linux测试人员已经待命,他们要连夜赶装Linux,进行后续的其他验收项目测试。刚刚测出180.6T成绩的曙光5000A状态不错,聂华想了想,决定再冲一次,最终因为某个节点出现故障,作业还是失败了,时间不允许他们再做尝试。
成绩定格在180.6T,这是一个让所有参与的人都感到欣慰的结果。
10月29日凌晨4点,聂华和李铭准备离开,他们回头最后望了一眼,关好了车库大门。
4个小时以后,曙光Linux团队开始进驻。
尾声
2008年12月9日,曙光在深圳明华国际会议中心举办了曙光5000A深圳站的,曙光也借此机会答谢曙光5000A的合作伙伴。会后大家聚在一起,聊起来,又像是开了一场“控诉会”。原来大家都有过被聂华逼着加班加点赶进度的“惨痛”经历,而且不仅李铭收到过聂华的最后通牒,几乎在场的每家供应商,网络、交换机、板卡、主板等厂商,都有过被聂华下过最后通牒的“恐怖”遭遇。
聂华也承认,所有的合作伙伴都被他“威胁”过。但是没有办法,因为曙光5000A的研发过程涉及到复杂的项目管理,特别是从9月1日计算所地下车库开始改造到10月1日必须提交测试结果,大家都必须按照这个时间表同步进行。就拿曙光5000A大量使用的光纤为例,这种光纤世界上只有三家公司能够生产,而且日产量很小。因此,聂华要求光纤厂商每日随生产随发货,这边随收货随安装。与其说是在聂华的威胁下,倒不如说是在参与曙光5000A带来的品牌提升的诱惑下,这家光纤厂商最终让聂华的威胁得逞了。
聂华的威胁并不是外强中干,当他跟李铭说不行就换Linux时,他的底气在于计算所和曙光对Linux太熟悉了,曙光4000A的Linpack就是在Linux下运行的,而且Top500中的大机器已经证实了Linux的扩展性,因此,曙光5000A上Linux应该更有把握。
但曙光最终选择Windows,聂华道出其中的原因有三:一是做了别人不敢做的事情,对曙光的能力是个极大的提升;二是证明曙光5000A是全球最大的通用计算机,既可以跑Linux也可以跑Windows;三是与微软合作有利于拓展基于Windows的应用空间。
提起12月9日,人们就会想起“一二•九”运动带来的爱国精神,而深圳则是国家华南超级计算中心所在地。以龙芯CPU担纲的千万亿次高性能计算机――曙光6000有望在2010年落户华南超级计算中心。
在国际高性能计算领域的巅峰,我们看到了民族的曙光。
后记
元月11日,时逢周日,顶着深冬京城凛冽的寒风,李铭、叶翔宇和本文的3个作者走进了位于金源购物中心一层的上岛咖啡。应该跟上岛道上一句歉,因为我们除了有个人要了一份套餐外,就靠一壶清茶支撑着,从晚上7点开始,聊过9点半购物中心的打烊直至10点半。第二天中科院计算所智能计算机中心张佩珩副主任不仅为我们详细介绍了计算所在高性能计算预研和曙光5000A研发过程中的关键作用,而且还带我们到地下车库,对曙光5000A做了详细的介绍。第三天,聂华又拨冗跟我们聊了近2个小时。
本文所有的素材均取自对上述各位嘉宾的采访,只是因为故事性很强,我们尝试着换一种写法。
在采访过程中,我们感触最深的是,曙光5000A作为一个非常复杂的系统,涉及到多家合作,这里面既有国别的差异,也有企业文化的不同,但大家目标一致,顶住时间上的压力,不计得失,夜以继日,终成正果。通常,系统联调遇到问题时,最容易出现扯皮现象――大家极力要把自己择出来。但曙光和微软的测试团队则相互理解、相互支持,有问题先查自己。有过系统抓总经历的人都明白,这是至关重要的。
还应该提到的是李铭他们敢于冒险、勇于承担责任的精神和吃苦耐劳的实干,在我们对外企的多年采访经历中还是第一次遇到。这可能也得益于微软中国研发集团的研究文化,Google标榜其工程师可以有20%的自由支配的时间,而微软中国研发集团的文化可以容忍李铭他们在一段时间内100%地支配自己的时间,而且还瞒着他们的老板。
最后应该强调的是,Linpack测试只是衡量曙光5000A系统的极限计算能力,与目前用户的应用模式有着很大的差异,曙光5000A的硬件设计是为用户的应用而非冲击Linpack而优化的。我们从计算所、曙光和微软都听到了这种答案。