图片来自网络 |
图为宇宙演化的过程中同一块区域在不同时间的密度演化。图中的亮度对比反映了物质密度的分布。最左边是宇宙年龄14亿岁的时候的样子,最右边的是宇宙今天的样子。可以看出,宇宙在初始密度稍微高的地方开始不断聚集,空旷的区域也更加明显。在密度最大的地方,物质形成了星系团这样巨大的结构。图片来自Katrin Heitmann等论文 |
今年五月,中科院国家天文台与网络中心超算中心在目前世界排名第一的无锡太湖之光超级计算机上进行了测试,针对国产神威CPU的架构,综合最新的算法与优化方式,完成了超过10万亿粒子的宇宙模拟的测试工作。这个过程,动用太湖之光整机一千万CPU核进行计算,其规模可见一斑。
我们经常看到堪称完美的宇宙图景:明亮的节点、交错的条网。这样的图景很有可能并非来自观测,而是计算机模拟。实际上,超级计算机除了在地震、能源、大气等领域有应用的价值,在科学研究中也起到越来越重要的作用,其中天文学领域中的宇宙N体模拟就是一个非常好的例子。
主导宇宙的力量
所谓宇宙,就是包含了大千世界中所有物质的存在,它的物质的演化非常复杂。要用计算机模拟宇宙演化过程,必须对宇宙演化有个基本了解。
根据暴胀理论,宇宙在经历过极早期的急速暴胀之后开始进入热大爆炸阶段,宇宙中开始形成物质。由于当时的能量极高,整个宇宙中的物质处于高温状态,相互之间频繁地作用。打个比方,就像是煮开的一锅粥,物质分布的种子在宇宙童年时是非常均匀的。随着宇宙膨胀,物质能量密度越来越稀疏,最终炽热的原初火球逐渐冷却了下来,宇宙也进入了黑暗时期,恒星和星系开始形成,宇宙再次被电离。没有了中性氢的阻挡,光子自由地在宇宙空间中飞行了130亿年后来到我们的地球。
引力在宇宙结构演化中扮演主角。物质结构的种子在引力的作用之下,高密度的地方变得更加密集,低密度的地方变得更为稀疏。这非常类似于人口流动:“有吸引力的地方变得更密集,而荒芜的地方变得更荒芜。”引力是人类认识得最久远的相互作用之一。对于三体引力系统还可以使用一些理论分析的方法,但是对于更为复杂的系统来说,理论常常是有局限的,这时数值模拟就是最好的工具。
实际上占总比20%以上的暗物质,它在其自身引力的强大吸引下,从宇宙创生之初的均匀状态渐渐演化成一个大尺度网状的结构。而我们通常熟悉的物质在宇宙空间中多以气体的状态存在着,它们比只有引力相互作用的暗物质要精彩得多:气体可以形成星系,星系中又能形成恒星,恒星死亡之后再次反馈气体到空间中去。这些过程在宇宙中各个角落不停地上演。而宇宙中可以观测的发光体与暗物质分布有着非常深刻的联系。我们的银河系到底是宇宙的一个典型的星系还是一个特别的存在,它形成的过程又是怎么的?本质上来说,这些都依赖于我们对于宇宙物质演化,乃至于星系形成的深刻理解。
计算出那片星光
可以开始模拟一个宇宙了。
由于光速的限制,我们观测到的永远是宇宙中的一部分,而且很可能是非常有限的一部分。我们取一个方盒子,其中盛入一部分宇宙。这个盒子必须足够大,才能代表宇宙的整体。如果盒子中的物质流出去怎么办?只要周期性地把流出的部分从盒子的另一边流回来,就能保证总的质量守恒。我们选取的这个盒子里的结构能与我们周围的宇宙一致吗?宇宙学原理告诉我们,在不同的地方宇宙的统计性质是一样的。也就是说,我们虽然造不出一模一样的银河系和太阳,但是我们不难在盒子里找到一些相似的对应物。
N体模拟的原理非常简单。把宇宙全部的质量分成一些粒子,每个粒子遵守膨胀空间的万有引力。计算粒子对之间的引力,由此决定粒子下一步的演化,不断迭代之后就能得到整个物质的演化。同一个系统或者宇宙模拟,使用的粒子数目越多,也就能够分辨越多的细节。
但是这在计算上的消耗是非常大的。使用上述直接法去计算引力的时间复杂度是粒子数的平方,也就是计算100个粒子需要计算10000对相互作用,而计算1万个粒子则需要1亿对。所以随着粒子数目增加,很快就会耗尽计算机的资源。20世纪70年代皮布尔斯等就是用这样的方法进行了第一个宇宙学意义上的模拟,当时的粒子数只有1500个。
上世纪80年代,算法的革新为计算宇宙学打下了坚实的基础,不过那时计算宇宙学的先驱者,其计算规模也只有几万的粒子而已,为了提高效率,他们提出多种近似的算法,并各自演化出不同的方向。不同时期占优势的算法与当时的计算机发展水平与实现的思路有关。特别是后来的并行技术的发展,模拟领域发生了飞跃。2005年德国马普研究所天体物理学家Volker Springel综合当时成熟的两种加速算法使得计算的规模首次超过百亿。
除了对于软件上的改良,在硬件上的加速也被引入数值模拟当中。比如牧野等开发了用于计算引力对的专用芯片Grape。最近,异构的计算平台的使用异军突起,比如在GPU和众核芯片上也取得了非常好的性能和重要的进展。目前在世界最大的一批超级计算机,如中国的天河二号、美国的泰坦、日本的京上都运行了超大规模的宇宙学模拟。2014年之后,最大的数值模拟规模已经使用了超过万亿的粒子。如果画出一条模拟数目的历史增长趋势图的话,其速度是超过摩尔定律的。
通向更深的宇宙
即便如此,数值模拟只能给出宇宙总体的结构,我们感兴趣的很多物理现象依然淹没在数值的噪声中。解决这个问题的一种方法就是通过对宇宙中某些感兴趣的地方进行局域地放大再模拟,这可以在有限的计算能力下得到超过当时时代的解析能力。比如Volker Springel的宝瓶座项目和高亮的凤凰项目。
很多人可能会怀疑数值模拟的结果是否可信。对于一些特殊的系统,数值解的正确性确实有一些分析的方法,但对于高精度的数值模拟来说,类似的分析是很难的。通常,低精度的模拟与更高精度的模拟相互符合的部分就是可以相信的部分。有些高分辨率的再模拟甚至让我们窥见暗物质在最小尺度上的细节,甚至进入了太阳系尺度的范围。
近年来,越来越多的数据积累为我们打开了了解宇宙的新窗口,其中主要包括宇宙背景辐射、超新星、大尺度结构以及引力透镜等方面的探测手段。然而,在理论上预言宇宙中物质演化和分布细节仍十分困难。考虑到气体演化和星系形成等问题与宇宙暗物质分布的关系,可以想见宇宙数值模拟在现代宇宙研究中不可替代的作用。它作为一种重要的工具成为了连接理论与观测的桥梁。
使用从模拟中学习到的星系的知识,还能够反过来对宇宙基本规律参数等进行限制。最为常见的是统计宇宙中星系的空间分布,可以反推宇宙的几何性质、膨胀速度、成分比例等参数信息,也可以为理解宇宙中的其他天体过程提供一个基础的平台。
如果宇宙是一个海洋,星系就是一个个岛屿,而宇宙数值模拟就像一个水族馆。在其中我们不能指望发现一个我们没有放入的物种,但是我们可以学习到已知物种的行为的细节和它们之间的相互影响。天文学是无法进行孤立重复实验的,而宇宙数值模拟可以让研究者掌握它全部信息。
(作者系国家天文台副研究员)