Leiden Observatory , Leiden University , Niels Bohrweg 2 , 2300CA Leiden , The Netherlands.
Philos Trans A Math Phys Eng Sci. 2019 Apr 8;377(2142):20180153. doi: 10.1098/rsta.2018.0153.
The demand on simulation software in astrophysics has dramatically increased over the last decades. This increase is driven by improvements in observational data and computer hardware. At the same time, computers have become more complicated to program due to the introduction of more parallelism and hybrid hardware. To keep up with these developments, much of the software has to be redesigned. In order to prevent the future need to rewrite again when new developments present themselves, the main effort should go into making the software maintainable, flexible and scalable. In this paper, we explain our strategy for coupling elementary solvers and how to combine them into a high-performance multi-scale environment in which complex simulations can be performed. The elementary parts can remain succinct while supporting the aggregation to more satisfactory functionality by coupling them on a higher level. The advanced code-coupling strategies we present here allow such a hierarchy and support the development of complex codes. A library of simple elementary solvers subsequently stimulates the rapid development of more complex code that can co-evolve with the latest advances in computer hardware. We demonstrate how to combine several of these elementary solvers in a hierarchical and generic system, and how the resulting complex codes can be applied to multi-scale problems in astrophysics. Our aim is to achieve the best of several worlds with respect to performance, flexibility and maintainability while reducing development time. We succeeded in the development of the hierarchical coupling strategy and the general framework, but a comprehensive library of minimal fundamental-physics solvers is still unavailable. This article is part of the theme issue 'Multiscale modelling, simulation and computing: from the desktop to the exascale'.
在过去的几十年里,天体物理学对模拟软件的需求大幅增加。这种增长是由观测数据和计算机硬件的改进所驱动的。与此同时,由于引入了更多的并行性和混合硬件,计算机的编程变得更加复杂。为了跟上这些发展,大部分软件都需要重新设计。为了防止将来出现新的发展时再次需要重写,主要的努力应该放在使软件可维护、灵活和可扩展上。在本文中,我们解释了我们将基本求解器耦合的策略,以及如何将它们组合成一个高性能的多尺度环境,在这个环境中可以进行复杂的模拟。基本部分可以保持简洁,同时通过在更高的层次上耦合它们来支持更令人满意的功能聚合。我们在这里提出的高级代码耦合策略允许这样的层次结构,并支持复杂代码的开发。随后,一个简单的基本求解器库刺激了更复杂代码的快速发展,这些代码可以与计算机硬件的最新进展共同发展。我们展示了如何在一个分层和通用的系统中组合几个这样的基本求解器,以及如何将生成的复杂代码应用于天体物理学中的多尺度问题。我们的目标是在性能、灵活性和可维护性方面达到最佳,同时减少开发时间。我们成功地开发了分层耦合策略和通用框架,但最小的基本物理求解器的综合库仍然不可用。本文是“多尺度建模、模拟和计算:从桌面到百亿亿次级”主题的一部分。