不靠谱的雪和国际科学大奖
文章来源: | 发布时间:2016-12-05 | 【打印】 【关闭】
2016年11月中旬,在美国盐湖城召开的全球超级计算大会上,以中国科学院软件研究所杨超等人完成的“千万核可扩展大气动力学全隐式模拟”获得了本年度的高性能计算应用最高奖——戈登·贝尔奖。
戈登•贝尔获奖证书
杨超研究员在SC大会现场介绍项目工作成果
这个奖项有多大的意义,获奖课题到底做出了什么样杰出的成就,它跟我们的生活又有什么样的关系?
最近你的朋友圈有没有被卖萌的中国气象局刷屏?尽管这次老天爷捣乱,但不得不说,绝大部分时候气象局和天气预报还是靠谱的。细想一下,不觉得天气预报很神奇吗?足不出户,也不用掐指去算,我们就能知道明天、后天乃至一周内的天气变化,这岂不是诸葛再世,孔明重生。
获奖工作跟天气预报有着密切的关系,你瞧,名称中的“大气动力学”,这可正是气象学家们预测天气的法宝之一。要了解获奖工作的意义,我们先得来了解一下科学家们是怎么用计算机来进行天气预报的。
如果现在在你头顶有一片黑压压的雨云,而天上又正刮着北风,把雨云往南吹,那你是不是可以预测南方某个地方即将迎来一场大雨?
这是人们依据生活经验或常识的天气预报,但要准确的说出这场雨的具体时间、地点、雨量大小、延续的时间,这就远超出人们的经验和常识了,需要科学家们出场“施法”。
首先出场的是气象科学家们,他们需要发现天气变化的真正奥秘所在,并把这个奥秘清晰的呈现出来。用科学的语言说,那就是气象学家们需要分析出天气变化与哪些因素有关,并用一些数学方程描述出这些因素和天气变化的内在关系。获奖成果中的“大气动力学”方程组就是气象气候中最重要的奥秘之一,它研究的方程长得就像下面图示一样,看起来很复杂。不同的符号代表了不同的物理量,包括速度、气压、湿度等。不同物理量可以千变万化,但不管怎么变化都必须遵循这个方程所限定的规律——是不是有孙悟空翻不出如来佛手掌心的感觉?
获奖成果所针对的大气动力学方程组
气象学家们给出了上面这样的方程,但计算机可没法去理解这个,这个时候就需要计算数学家们出场了。
计算数学家们的最主要任务是给出求解上面这个方程的计算方法,也就是算法。首先要做的是离散化。离散化?!虾米
要认识“离散”,可以从它的天敌“连续”入手。对一个地区比如北京的天气预报来说,所谓连续就是要预测出这片土地上每一个地方(每一分、每一寸乃至每一个细微点)的天气情况。那总共要预测多少个地方呢?无数个!这显然没有必要。更重要的是,无论是人还是计算机,都没法处理这种无数个的问题,因为这意味着永远算不完。既然连续不可能,也没必要,那就该离散了。
离散就是对北京地域进行打网格,划分成一个个小格子,每一个小格子内的天气是一样的,这样要对北京进行天气预报,其实就是对下面的每一个小格子进行预报。不管格子是大还是小,但小格子的数量是有限的,这样就可以计算处理了。
对北京地域的离散化/网格化
从上面的图上大家就可以知道,网格越密,那就意味着预测的精度越高。那为了更精确的预报,是不是越密越好呢?确实是越密越准确,但密到一定程度以后要更密,就只能是——臣妾做不到呀。为什么做不到,咱们待会儿细说。
那么北京现在的网格大小是多大呢?度娘说啦,现在是3公里,力争5年到到1公里。也就是说,在每个3公里×3公里的网格区域里,气象局认为天气是一样的。
回到计算数学家们的工作上来,离散化或者网格化是他们工作的第一步,但需要注意的是,实际的网格可不是像上面地图一样是二维的哦,而是包含了高度的三维网格,也就是说不是小方格,而是小方块。想想也是呀,刮风下雨全在天上呢,研究天气问题,哪能盯着地面呀。
离散化之后,每一个小方块就是一个独立的个体,有自己的压力、速度、温度、湿度等数值信息。其中有些点的数值是我们现在知道的,这主要是通过气象站、气象卫星、气象气球等多种途径采集的数据,根据这些已知点的信息,然后默念气象学家们给出的大气动力学、大气热力学等方程口诀,就可以计算推演一段时间以后,所有网格点的参数信息。这就是数值天气预报,也就是用计算机算出来的未来天气情况。
计算数学家们最主要的工作,就是将上面的方程翻译成小方块之间的计算关系。这里有差分法、有限元法、有限体积法等多种方法,几乎每一种方法都凝聚了全世界大量数学家的智慧,因为一个好的方法,它必须满足正确、可靠、稳定、精确、高效等多个条件。
具体的方法我们就不在这里说了,你只要记住,现在,计算数学家将气象学家的神秘的方程口诀变成了可以在计算机上处理的算法了。那下一个出场的,就该是“程序猿”们了。
程序猿或者计算机科学家面临的任务,是将算法写成可以在计算机上执行的程序。这听起来好像很简单——打断一下,你听说过天河、神威的大名吗?比如说天河二号,神威·太湖之光?如果没有听过,那你就OUT了;如果听说了,你觉得在这些计算机上写程序是简单的事情吗?要知道,这些可是传说中的超级计算机,而且还是当前世界上最快的两台计算机。什么?有多快,那你听清啦:神威·太湖之光相当于普通家用电脑的200万倍!!在这样的电脑上写程序,跟在普通电脑上能一样嘛,难度没有200万倍,我看也得有个2万倍。
超级计算机为什么有那么强大的能力呢?其实很简单,那就是“人多力量大”、“团结就是力量”!每台超级计算机都由大量的计算核心(计算节点)组成,计算处理问题时,这些计算核心团结协作,一起努力工作,这就是所谓的“并行计算”。
计算机科学家们的主要任务,就是将计算数学家给出的算法,写成能在超级计算机上高效执行的并行程序。这可不是简单的工作。这种不简单,各行各业的领导们最好体会了:带团队不容易呀!尤其是大团队。想想呀,要将一件工作交给100个人做,协调组织的挑战该有多大? 有些工作,比如抄写生字10000遍还行,让100个人每人抄100遍就行;但有些工作,比如让100个人盖间房子或者写篇小说,这就牵涉到100个人有不同的分工,不同分工的人之间还要频繁的开会沟通;除此之外,还要考虑100个人有人偷懒,有人生病,…… 计算机科学家们面临的挑战和这个类似,他们需要指挥、协调众多计算核心,让它们齐心协力,不仅要把工作做对,还要做得快、做得好。
还记得获奖课题的名称吗,“千万核可扩展大气动力学全隐式模拟”,这次杨超和他的小伙伴们使用了超过10000000个核来计算一个问题,惊呆了没?
最后需要补充的是,这三类科学家可都不是独善其身、明哲保身的人哦,他们通常身兼多职。例如杨超研究员的工作既可属于计算数学领域,又属于计算机软件领域。事实上,只有身兼多职才有更开阔的视野,才更利于合作、研究以及取得成就。
首先,从成果名称上,我们就能清晰的看到多领域科学家的协作:
l 气象学家贡献了大气动力学;
l 计算数学家负责全隐式模拟算法;
l 而计算机科学家实现千万核可扩展计算。
当然,还是刚刚所说的,这三个部分不是独立的,每一部分都需要多领域专家的通力协作。
我们首先来了解一下他们到底做了什么工作吧。这可是我辛辛苦苦阅读了他们长达12页的论文之后才领悟的奥妙。
杨超和他的小伙伴们这次完成的是一次气候的数值仿真。注意哦,这里是气候,而不是气象。
通常气候是指某一地区长时期内(30年或更长)的天气状态的综合表现。气候和前面所说的天气预报针对的是同一个问题,只是气候通常研究的区域更大,计算的时间更长。它不是用来对某一天的天气进行预报,而是对整个地区乃至全球未来的地理、气象等因素进行推演预测。所以换句话说,对气候而言,气象关心的那都是小事情。当然,问题本质以及如前面所述的数值计算的过程那都是一样一样儿的。
但正因为气候和气象关心问题的尺度不一样,它们两者之间没法对接:气象模拟的网格需要精细到几公里乃至1公里以内,而气候模拟网格通常为几十乃至几百公里;气象模拟的时间精度要求到小时乃至分钟,而气候模拟通常到天、月、年。如果能将气候模拟和气象模拟对接起来,那就可以大幅提升彼此预测的准确度,为国计民生乃至全人类的发展有着重大的意义。 美国、欧洲、日本、中国……,全世界的科学家们都在为这个目标而努力着。
获奖成果的现实或科学意义正体现于此,它在打通气象和气候模拟之路上迈出了标志性的一步。
获奖成果计算的区域是北纬18度至北纬72度之间,在地球仪上沿着两条线各画一个圆,计算的就是这两个圆之间的带状区域,差不多占了整个地球表面积的1/3。然后,记得是三维问题哦,从地面往上30公里都在研究范围内,超出这个范围,就认为对地表的的气候没有影响啦。所以,最后实际计算机需要处理的网格区域大小为40000公里×6000公里×30公里。
在算法层面,他们提出了一个新的全隐式计算方法,可以快速、正确的求解气象学家给出的那个方程组。和已有的其他算法相比,这个算法最大的优势在于其高效性,也就是算得快!有多快呢?比美国的同类下一代大气模拟系统的计算效率提升近一个数量级(接近10倍或几十倍)!
算得快意味着在相同的时间内,可以算得更多,也就是说,跟现有的其他方法相比,可以算更精细的网格。事实上,他们测试的最小网格已经到了488米,这比现在北京天气预报的网格还要小!这样一来,这个新的算法完全可以用来解决气象和气候模拟不能打通的问题。
计算结果的呈现:温度在不同模拟日的变化
这么厉害的算法到底是怎么实现的呢?拜托,这是一篇科普文章,不是科学研究论文,要感兴趣的话,去联系获奖团队的成员们吧,他们可有12人呢。
不过,不管他们的算法再精神高妙,本质上,可以用两个字来形容,那就是“偷懒”!哦,说错了,其实是“聪明的偷懒”——干的少,可还干得好!用科学的语言来描述呢,那就是“在不降低计算结果正确性的前提下,近可能的减少计算工作量”!计算量少了,计算效率可不就高了嘛。不过看看他们算法的一些关键词,“DD-MG预条件子”、“GP-ILU分解”,这是多么的高大上呀。
除了新的厉害算法之外,成果的另一个主要突破是前面提及的,在高达一千万个计算核心的超级计算机上实现了算法,并实现了高效的并行计算。
听起来好厉害!具体是怎么回事呢?让我们来做点小学数学计算:在40000公里×6000公里×30公里区域上,网格大小是488米(为什么是488而不是500呢,我也疑惑中),总共是(40000×5000×30)/(0.488×0.488×0.488)≈1000多亿网格,每个网格有压力、速度等6个需求求解的未知量,最终的未知数个数约7700亿!这样的问题,也只有世界最快的超级计算机和我国最优秀的一群年轻科学家们能够胜任!
记得前面说的臣妾做不到的事情吗,为什么把网格的尺寸缩小或者说把计算的精度提高这么困难呢?这是因为,如果网格尺寸缩小一半,例如从1公里大小缩减到500米,由于处理的网格是三维的,那就是把原来1公里×1公里×1公里的立方块剖分成了500米×500米×500米的小立方块,1个变成了……8个!这样计算机要求解的未知数的个数也是原来的8倍,而求解过程的工作量可是比未知数的平方还要大,也就是说,网格精度每增加一倍,计算机的工作量是原来的近百倍!
这下,大家能更好的理解这次获奖成果的意义了吧,那就是在前所未有的超级计算机上用出色的算法和高效的程序进行了一次气候问题前所未有复杂的计算!
未来,这项研究不仅可以用于高分辨率气候模拟和高精细数值天气预报,全面提升我国应对极端气候事件和自然灾害时的减灾防灾能力,还能在航空、地学、能源等科学计算领域有着广阔的应用前景或重要的参考价值。
最后要指出的是,获奖成果作为一项最前沿的研究工作,在打通气候模拟和气象模拟的探索道路上做出了突破性的贡献,但距离实际解决气候气象超高分辨率模拟,真正大幅提升人类对天气和气候预测预报的能力,仍有相当的距离。我们在为杨超和他的小伙伴们欢呼的同时,也期待着更多的气象气候、计算数学和计算机科学家早日攻克这一难题。
到那个时候,我们就可以彻底告别那些不靠谱的雪和不正经的风了!
(姚继锋 博士,中国科学院软件研究所,jifeng@iscas.ac.cn)