“魔方”的诞生将中国的超级计算一下子带入了百万亿次计算时代,但是应用却仍停留在几万亿次到几十万亿次的水平,中间至少相差了一代。因为现在能够写此类软件的人才太过稀少,硬件跟软件的关系就像“修了一条好路,却没有好车”。
图:2009年5月15日 工程人员正在安装超级计算机的刀片箱 马丹摄
图:2009年6月15日,国内首台百万亿次超级计算机“魔方”,在上海正式启用。“魔方”不但是亚洲第一的超级计算机,也是目前美国本土之外唯一计算速度排名进入全球前十的超级计算机,表明中国成为全球第二个能够研发百万亿次超级计算机的国家。上图为超级计算中心主控机房。
现在的超级计算机通常都有几千颗CPU,速度已经超过每秒千万亿次,但能支持500颗以上CPU的应用软件却很少。像国家天文台需要上千个CPU的运算却缺少软件可用。
上海超级计算中心总共有300多个用户,医生丁海是其中一个。他独立研究的课题涉及较复杂的模拟计算,用普通的电脑根本跑不起来,于是他到超算中心,申请使用一部分计算资源。
128颗CPU的极限
到超算中心排队的单位一直很多。截至2008年,中心装备的曙光4000A型超级计算机CPU使用率已达到88.5%。这台拥有2048颗CPU的超级计算机已经接近“满负荷运转”。2009年6月,“魔方”的加盟将中心可提供的计算能力一下字提升了20倍。它是曾在2008年底排名世界前十的计算机,峰值运算速度达到每秒230万亿次。然而没能进入队列的任务还是很多。
丁海只需要用几十颗CPU,但在300多个用户中已经略高于平均数——虽然中心的客户中不乏蛋白质折叠这样的大型科学计算和国产大飞机设计这样的大型工程项目,但大型用户并不占大多数。据上海超算中心2008年12月的简报统计,在当月新增的10个用户里,只有清华大学航空航天学院、南京大学物理系和上海天文台三家占用的CPU资源在128颗以上。
“不可能给得太多”,中心副主任袁俊说。中心为了照顾到300多个用户的需要,必须进行协调管理,才能最大发挥其整体效能。成立于2000年的上海超算中心不仅承担着“国家网格”计划的南方主节点任务,还为华东地区乃至全国的科研单位和工程用户提供开放的计算服务。袁俊告诉记者,128颗,往往是上海超算中心为单个任务所能提供CPU数的最大值。
事实上,即使资源方面没有限制,很多大型项目也因为技术上的原因用不上那么多运算资源。
规模再大软件控制不了
南京航空航天大学的飞行器设计实验室曾经从浪潮公司购置过一套十多个节点的高性能计算集群,可用着用着就发现不够用了。他们计划购买一套更大的,升级到64个计算节点。购买,安装,迁移任务,一切停当,一个奇怪的现象出现了:运算效率不仅并没有提升,反而下降了。研究人员只好请来浪潮的维护工程师,发现问题出在该应用软件的扩展性上——原来的软件根本不能支持这么多CPU。
据浪潮公司提供的一份资料显示,虽然数百上千个CPU级别的计算机集群现在已经大量出现,但支持500个CPU以上的应用软件却很少。许多流行的高性能软件,特别是广泛应用的开源软件,如在**预报、蛋白质计算中运用的软件,并行度并不高,有的甚至还是串行程序。这就好比是好不容易修好了一条高速公路,回头一看,却缺乏好车。
“现在的关键是软件跟不上硬件的发展速度,导致超级计算机的计算能力发挥不出来。”浪潮集团高性能服务器产品部总经理刘军说。对此中国科学院超级计算中心主任迟学斌认为,在研发的历史上,我们一直重视有形的东西,忽视无形的东西。计算机固然很重要,但是如果在这个平台上没有要做的事,那也等于是浪费。
对上海超算中心来说,困难主要是价格问题。尽管上海市政府给了他们令同行羡慕的的持续经费支持,使他们可以采购中国最好的计算机硬件,却无法将最好的软件也统统搬来。国家天文台可能是中心的用户里对CPU要求最高的之一,他们需要上千个CPU同时工作,以计算海量的天文观测数据。但能支持的软件在国际上也很少,即使有也买不起,他们只好自己编写开源代码。它更自由,却未必好用。
再者,能够写此类软件的人才太过稀少。国内高等教育研究生以上学历的教育中,完备、深度的“计算科学”教育既不系统,也不完整,更没有基于并行计算方面的计算科学教育和训练。同时,计算科学和各应用科学的团队在互相协作方面也缺乏机制。美国一个成熟的计算应用软件通常都经历了至少20年以上的持续开发,如计算化学软件NWCHEM,开发团队里化学家、计算数学家、计算机科学家保持了合适的比例,政府也给予了资金支持。
跨越“软”“硬”鸿沟
“魔方”的诞生将中国的超级计算一下子带入了百万亿次计算时代,但是应用却仍停留在几万亿次到几十万亿次的水平,中间至少相差了一代。
曙光公司总裁历军认为,“机器和应用之间有一代的差距是可以理解的。上一代的曙光4000A刚出来时也面临有没有人用的问题,但到今天我们国家的大飞机设计、神舟飞船、基因研究、石油勘探上面都用上了,可见机器带动应用是现阶段的必经之路。”看来,超级计算机超前于应用的发展似乎不完全是坏事,只有有了更加强大的计算机,应用软件和算法研究人员也才可能发现原有软件和算法的问题。
大规模并行软件的开发是个累活,周期很长,不像硬件升级那样见效快。在过去,软件都是串行编写,假定在一个CPU上面执行任务。超级计算机把这种情况彻底打破了,转而强调“并行计算”。高性能计算的原理其实并不复杂,就是将一个任务分成几份,每个服务器完成一份,但并行化的基础是对此代码涉及的应用科学有透彻的了解,在理解的基础上,再进行合理的任务切分,精细地处理负载平衡、通信等问题。因此才出现了能够写并行软件的高级人才少之又少的局面。
事实上,为超级计算机编程更是数学家的工作。他们不仅要有精湛的数学头脑,懂得各种编程语言,还要熟悉计算机硬件。更重要的是,他们必须愿意投入时间来设计各种算法和进行软件编程,最后,还要确保软件经过调试能够在超级计算机上使用。名噪一时的“深蓝之父”许峰雄就是这样一个人。这个对于人机对弈有着狂热兴趣的天才,更像是一名有着发达数学头脑的软件程序员。还在念大学时,他几乎每天吃饭路上脑子里都在琢磨如何在计算机上实现更快的出棋步数。为了战胜卡斯帕罗夫,许峰雄和他的同事前后用了十多年。
2009年6月,国内服务器行业的领军企业浪潮集团和中国超级计算领域的“专家团”——中科院超算中心签署了一项战略合作协议,试图联手攻克“软硬失衡”这一困扰超级计算机多年的难题。浪潮有丰富的市场经验,能准确把握用户的需求,可以安排大量的经验丰富的一线软件工程师和系统维护人员,而中科院超算中心则在体系架构、硬件设计上提供理论上的支持。这是一项艰巨的系统工程,其成效果尚需时日。
下一代千万亿次计算机已经在研制了。这台名为曙光6000A的超级计算机已经被深圳市预订,但如果软件水平不能迅速跟上,“软硬失衡”的“魔咒”将给它带来更大的麻烦——那可是千万亿次。