论文部分内容阅读
宇宙学模拟对于天文学家了解非线性结构的形成和诸如暗物质、暗能量等物质的假想形式是必不可少的。普遍使用的纯暗物质无碰撞粒子系统是经典的N体问题模拟。高精度的模拟需要包含数千亿甚至数万亿粒子,因此需要极强的计算能力和高效的算法。宇宙学N体模拟一直是高性能计算领域的一个重要分支,国外相关研究团队多次凭借超大规模宇宙N体模拟项目获得戈登贝尔奖。“神威·太湖之光”是我国第一台完全自主研发的高性能计算系统,也是世界上首台峰值性能超过100PFlops的超级计算机。然而在“神威·太湖之光”上一直未见超大规模的宇宙学模拟。本文对中科院国家天文台自研的一款宇宙学N体模拟软件PHoToNs进行了深入的研究后,针对国产众核处理器SW26010独特的硬件结构提出了数个性能优化方案,对软件中模拟宇宙演化的粒子间作用力计算模块进行了重新设计,实现了用于宇宙学N体模拟、能够充分发挥国产超级计算机“神威太湖之光”的体系结构优势的软件SwPHoToNs。利用SwPHoToNs,我们在5,200,000个核上进行了包含6400亿个粒子的宇宙学模拟,获得了29.44PFlops的持续性能,并行效率为84.6%,计算效率为48.3%。本文的主要研究工作如下:(1)针对申威处理器内存限制和PHoToNs使用的Tree-PM算法。本文设计了一种MPI通信策略,改善了进程间通信计算的均衡情况和存储压力,以此获得更高的并行效率和模拟规模。并且基于此策略,我们利用主从核之间的并行性,对进程内部粒子引力计算和不同进程粒子间的引力计算两者设计了针对性的流水线并行模式。(2)针对申威处理器独特的从核阵列内存结构,我们通过申请冗余数组的方式消除了双树遍历方式和力的相互作用产生的引力重复计算。并且利用此冗余数组和在主核上针对计算任务的生成方式设计的排序方案,解决了并行计算的读写冲突问题。(3)为了充分发挥申威处理器的计算能力,我们针对申威处理器的内存层次结构,利用从核LDM和DMA两者很好的降低了数据读取的时间开销,并且针对DMA和计算设计了流水并行模式。我们对引力计算函数循环展开后进行了手动的向量化。通过对由于引力长短分裂的计算方法引来的两个十分耗时的超越函数,指数函数和误差函数进行多项式拟合,设计了两个函数的向量化版本来完成核心计算代码的整体向量化。