Quantcast
Channel: 知乎日报
Viewing all articles
Browse latest Browse all 20608

告别「不靠谱的雪和不正经的风」,全靠这个了

$
0
0
中科院之声,传播科学,服务公众

文章来自机构帐号:「中科院之声


11 月中旬,在美国盐湖城召开的全球超级计算大会上,由中国科学院软件研究所研究员杨超等人完成的“千万核可扩展大气动力学全隐式模拟”获得了 2016 年度的高性能计算应用最高奖——“戈登•贝尔”奖。

“戈登•贝尔”奖获奖证书

杨超研究员在 SC 大会现场介绍项目工作成果

这个奖项有多大的意义?获奖课题到底做出了什么杰出的成就?它跟我们的生活又有什么样的关系?本文将一一道来。

1.从不靠谱的雪说起

最近你的朋友圈有没有被卖萌的中国气象局刷屏?尽管这次老天爷捣乱,但不得不说,绝大部分时候气象局和天气预报还是靠谱的。细想一下,不觉得天气预报很神奇吗?足不出户,也不用掐指去算,我们就能知道明天、后天乃至一周内的天气变化,这岂不是诸葛再世,孔明重生?

获奖工作跟天气预报有着密切的关系,你瞧,名称中的“大气动力学”,这可正是气象学家们预测天气的法宝之一。要了解获奖工作的意义,我们先得来了解一下科学家们是怎么用计算机来进行天气预报的。

2.科学家们的登场

如果现在在你头顶有一片黑压压的雨云,而天上又正刮着北风,把雨云往南吹,那你是不是可以预测南方某个地方即将迎来一场大雨?

这是人们依据生活经验或常识得来的天气预报,但要准确说出这场雨的具体时间、地点、雨量大小、延续的时间,这就远超出人们的经验和常识了,需要科学家们出场“施法”。

首先出场的是气象科学家们,他们需要发现天气变化的真正奥秘所在,并把这个奥秘清晰地呈现出来。用科学的语言说,那就是气象学家们需要分析出天气变化与哪些因素有关,并用一些数学方程描述出这些因素和天气变化的内在关系。获奖成果中的“大气动力学”方程组就是气象气候中最重要的奥秘之一,它研究的方程长得就像下面图示一样,看起来很复杂。不同的符号代表了不同的物理量,包括速度、气压、湿度等。不同物理量可以千变万化,但不管怎么变化都必须遵循这个方程所限定的规律——是不是有孙悟空翻不出如来佛手掌心的感觉?

获奖成果所针对的大气动力学方程组

气象学家们给出了上面这样的方程,但计算机可没法去理解这个,这个时候就需要计算数学家们出场了。他们的最主要任务是给出求解上面这个方程的计算方法,也就是算法。

首先要做的是离散化。离散化?!虾米?

如果我们现在要对北京城区的天气情况进行计算预测,需不需要对每一个位置进行预报呢?例如需要具体到自己前脚掌和后脚掌两个不同位置的天气情况,或者小区大门和后门的天气情况?

显然我们不需要这么“精确”的天气预报。所以通常需要对北京地域进行打网格,划分成一个个小格子,每一个小格子内的天气是一样的,这样要对北京进行天气预报,其实就是对下面的每一个小格子进行预报。这就是离散化的过程。

对北京地域的离散化 / 网格化

大家自然可以知道,网格越密,那就意味着预测的精度越高。那为了更精确的预报,是不是越密越好呢?确实是越密越准确,但密到一定程度以后要更密,那就只能是——臣妾做不到呀。为什么做不到,咱们待会儿细说。

那么北京现在的网格大小是多大呢?度娘说啦,现在是 3 公里,力争 5 年到 1 公里。也就是说,在每个 3 公里×3 公里的网格区域里,气象局认为天气是一样的。

回到计算数学家们的工作上来,离散化或者网格化是他们工作的第一步,但需要注意的是,实际的网格可不是像上面地图一样是二维的哦,而是包含了高度的三维网格。想想也是呀,刮风下雨全在天上呢,研究天气问题,哪能盯着地面呀。

离散化之后,每一个小方格 / 立方体就是一个独立的个体,有自己的压力、速度、温度、湿度等数值信息。其中有些点的数值是我们现在知道的,这主要是通过气象站、气象卫星、气象气球等多种途径采集的数据,根据这些已知点的信息,然后默念气象学家们给出的大气动力学、大气热力学等方程口诀,就可以计算推演一段时间以后,所有网格点的参数信息。这就是数值天气预报,也就是用计算机算出来的未来天气情况。

计算数学家们最主要的工作,就是将上面的方程翻译成小方格 / 立方体之间的计算关系。这里有差分法、有限元法、有限体积法等多种方法,几乎每一种方法都凝聚了全世界大量数学家的智慧,因为一个好的方法,它必须满足正确、可靠、稳定、精确、高效等多个条件。

具体的方法我们就不在这里说了,你只要记住,现在,计算数学家将气象学家的神秘的方程口诀变成了可以在计算机上处理的算法了。那下一个出场的,就该是“程序猿”们了。

程序猿或者计算机科学家面临的任务,是将算法写成可以在计算机上执行的程序。这听起来好像很简单——打断一下,你听说过天河、神威的大名吗?比如说天河二号,神威•太湖之光?如果没有听过,那你就 OUT 了;如果听说了,你觉得在这些计算机上写程序是简单的事情吗?要知道,这些可是传说中的超级计算机,而且还是当前世界上最快的两台计算机。什么?有多快,度娘又说啦,神威•太湖之光相当于普通家用电脑的 200 万倍!在这样的电脑上写程序,跟在普通电脑上能一样嘛,难度没有 200 万倍,也得有个 2 万倍。

超级计算机为什么有那么强大的能力呢?其实很简单,那就是“人多力量大”、“团结就是力量”!每台超级计算机都由大量的计算核心(计算节点)组成,计算处理问题时,这些计算核心团结协作,一起努力工作,这就是所谓的“并行计算”。

计算机科学家们的主要任务,就是将计算数学家给出的算法,写成能在超级计算机上高效执行的并行程序。这可不是简单的工作。

你现在可以想一件需要完成的工作,例如写一本小说、抄写生字 1 万遍、造一辆汽车等等,然后设想把这件事情交给 1 个人做、10 个人做、100 个人做、1 万个人做,会是什么情形?10 个人做一定是 1 个人做的效率的 10 倍吗?当中有人偷懒不干活怎么办?又或者有人生病了该怎么办?计算机科学家们面临的挑战和这个类似,他们需要指挥、协调众多计算核心,让它们齐心协力,不仅要把工作做对,还要做得快、做得好。

还记得获奖课题的名称吗?

“千万核可扩展大气动力学全隐式模拟”,这次杨超和他的小伙伴们使用了超过 10000000 个核来计算一个问题,惊呆了没?

最后需要补充的是,这三类科学家可都不是独善其身、明哲保身的人哦,他们通常身兼多职。例如杨超研究员的工作既属于计算数学领域,又属于计算机软件领域。事实上,只有身兼多职才有更开阔的视野,才更利于合作、研究以及取得成就。

3.了不起的“千万核可扩展大气动力学全隐式模拟”

首先,从成果名称上,我们就能清晰的看到多领域科学家的协作:气象学家贡献了大气动力学;计算数学家负责全隐式模拟算法;而计算机科学家实现千万核可扩展计算。当然,还是刚刚所说的,这三个部分不是独立的,每一部分都需要多领域专家的通力协作。

我们首先来了解一下他们到底做了什么工作吧。这可是我辛辛苦苦阅读了他们长达 12 页的论文之后才领悟的奥妙。

杨超和他的小伙伴们这次完成的是一次气候的数值仿真。注意哦,这里是气候,而不是气象。

通常气候是指某一地区长时期内(30 年或更长)的天气状态的综合表现。气候和前面所说的天气预报针对的是同一个问题,只是气候通常研究的区域更大,计算的时间更长。它不是用来对某一天的天气进行预报,而是对整个地区乃至全球未来的地理、气象等因素进行推演预测。所以换句话说,对气候而言,气象关心的那都是小事情。当然,问题本质以及如前面所述的数值计算的过程那都是一样一样儿的。

但正因为气候和气象关心问题的尺度不一样,它们两者之间没法对接:气象模拟的网格需要精细到几公里乃至 1 公里以内,而气候模拟网格通常为几十乃至几百公里;气象模拟的时间精度要求到小时乃至分钟,而气候模拟通常到天、月、年。如果能将气候模拟和气象模拟对接起来,那就可以大幅提升彼此预测的准确度,对国计民生乃至全人类的发展有着重大的意义。美国、欧洲、日本、中国……,全世界的科学家们都在为这个目标而努力着。

获奖成果的现实或科学意义正体现于此,它在打通气象和气候模拟之路上迈出了标志性的一步。

获奖成果计算的区域是北纬 18 度至北纬 72 度之间,在地球仪上沿着两条线各画一个圆,计算的就是这两个圆之间的带状区域,差不多占了整个地球表面积的 1/3。然后,记得是三维问题哦,从地面往上 30 公里都在研究范围内,超出这个范围,就认为对地表的的气候没有影响啦。所以,最后实际计算机需要处理的网格区域大小为 40000 公里×6000 公里×30 公里。

在算法层面,他们提出了一个新的全隐式计算方法,可以快速、正确地求解气象学家给出的那个方程组。和已有的其他算法相比,这个算法最大的优势在于其高效性,使得更精细的网格成为可能。

事实上,他们测试的最小网格已经到了 488 米,这比现在北京天气预报的网格还要小!

也就是说,这个新的算法完全可以用来解决气象和气候模拟不能打通的问题。这个算法比美国的同类下一代大气模拟系统的计算效率提升近一个数量级(接近 10 倍或几十倍)。

计算结果的呈现:温度在不同模拟日的变化

这么厉害的算法到底是怎么实现的呢?拜托,这是一篇科普文章,不是科学研究论文,要感兴趣的话,去联系获奖团队的成员们吧,他们可有 12 人呢。不过,不管他们的算法再精深高妙,本质上,可以用两个字来形容,那就是“偷懒”!哦,说错了,其实是“聪明的偷懒”——干的少,可还干得好!用科学的语言来描述呢,那就是“在不降低计算结果正确性的前提下,尽可能的减少计算工作量”!计算量少了,计算效率可不就高了嘛。不过看看他们算法的一些关键词,“ DD-MG 预条件子”、“ GP-ILU 分解”,这是多么的高大上呀。

除了新的厉害算法之外,成果的另一个主要突破是前面提及的,在高达一千万个计算核心的超级计算机上实现了算法,并实现了高效的并行计算。

听起来好厉害!具体是什么呢?

就是在 40000 公里×6000 公里×30 公里区域上,网格大小是 488 米(为什么是 488 而不是 500 呢,我也疑惑中),总共是 1000 多亿网格,每个网格有 6 个未知数,最终的未知数个数约 7700 亿!这样的问题,也只有世界最快的超级计算机和我国最优秀的一群年轻科学家们能够胜任!

记得前面说的臣妾做不到的事情吗,为什么把网格的尺寸缩小或者说把计算的精度提高这么困难呢?这是因为,如果网格尺寸缩小一半,例如从 1 公里大小缩减到 500 米,由于处理的网格是三维的,那就是把原来 1 公里×1 公里×1 公里的立方块剖分成了 500 米×500 米×500 米的小立方块,1 个变成了……8 个!这样计算机要求解的未知数的个数也是原来的 8 倍,而求解过程的工作量可是比未知数的平方还要大,也就是说,网格精度每增加一倍,计算机的工作量是原来的一个数量级以上!

这下,大家能更好地理解这次获奖成果的意义了吧,那就是在前所未有的超级计算机上用出色的算法和高效的程序进行了一次气候问题前所未有复杂的计算!

未来,这项研究不仅可以用于高分辨率气候模拟和高精细数值天气预报,也有助于提升我国应对极端气候事件和自然灾害时的减灾防灾能力,还能在航空、地学、能源等科学计算领域有着广阔的应用前景或重要的参考价值。

最后要提出的是,他们的论文还报告了从气象科学家角度关心的模拟能力。比如 3 公里网格分辨率下是 1.01 模拟年 / 天( Simulated–Years-Per-Day,SYPD ),比美国下一代大气动力框架 FV3 的 0.16SYPD 提高了好几倍。

但是,即便是这么厉害的算法,这么快的计算机,要实际解决超高分辨率模拟的问题还得计算很长时间。我们在为杨超和他的小伙伴们欢呼的同时,也期待着更多的气象气候、计算数学和计算机科学家早日攻克这一难题。

到那个时候,我们就可以彻底告别那些不靠谱的雪和不正经的风了!

最后说点题外话,中国科学家斩获这一奖项后,不少人为之兴奋,但也有网友提出疑问 : 中国人自己的科研项目,拿到国际上去参评,会不会因此泄露核心技术?

杨超研究员对此给出如下回应:

ACM Gordon Bell(戈登贝尔)奖的评审,的确需要发表论文并作答辩报告,这是事实,但并不会因此泄露所谓的核心技术。
技术的发展是不断演进的,尤其是像超算这种高技术领域。戈登贝尔奖在超算领域享有盛誉,但是该奖项设立近 30 年来,一直被美日等国垄断。
今年,中国入围了 3 个项目,并最终有一个夺奖,这不但展示了我们在技术上取得的突破,也更充分展示了我们在技术上的自信。中国的强大需要这种自信。

作者姚继锋,系中国科学院软件研究所并行软件与计算科学实验室研究人员

来源:中国科学院软件研究所 



Viewing all articles
Browse latest Browse all 20608

Trending Articles