The British Geological Survey's global geomagnetic model, Model of the Earth's Magnetic Environment (MEME), is an important tool for calculating the earth's magnetic field, which is continually in flux. Whilst the ability to collect data from ground based observation sites and satellites has grown, the memory bound nature of the code has proved a limitation in modelling problem sizes required by modern science. In this paper we describe work replacing the bespoke, sequential, eigen-solver with that of the SLEPc package for solving the system of normal equations. This work had a dual purpose, to break through the memory limit of the code, and thus support the modelling of much larger systems, by supporting execution on distributed machines, and to improve performance. But when adopting SLEPc it was not just the solving of the normal equations, but also fundamentally how we build and distribute the data structures. We describe an approach for building symmetric matrices in a way that provides good load balance and avoids the need for close co-ordination between processes or replication of work. We also study the memory bound nature of the code and combine detailed profiling with software cache prefetching to significantly optimise. Performance and scaling are explored on ARCHER, a Cray XC30, where we achieve a speed up for the solver of 294 times by replacing the model's bespoke approach with SLEPc. This work also provided the ability to model much larger system sizes, up to 100,000 model coefficients. Some of the challenges of modelling systems of this large scale are explored, and mitigations including hybrid MPI+OpenMP along with the use of iterative solvers are also considered. The result of this work is a modern MEME model that is not only capable of simulating problem sizes demanded by state of the art geomagnetism but also acts as further evidence to the utility of the SLEPc libary.
翻译:英国地质调查局的全球地磁模型,即地球磁环境模型(MEME),是计算地球磁场中持续变化的磁场的重要工具。虽然从地面观测站和卫星收集数据的能力有所增强,但代码的内存约束性质在现代科学要求的模拟问题大小方面证明是有限的。在本文中,我们描述的是用SLEPc软件包取代标语、顺序、eigen-溶解器的工作,以解决正常方程式系统。这项工作有双重目的,打破代码的内存限制,从而通过支持在分布式机器上执行并改进性能来支持大得多的系统模拟。但是在采用SLEPc时,代码的内存范围不仅在于解决正常方程式,而且从根本上说我们如何构建和分配数据结构。我们描述一种方法,用SLEPc软件模型来进一步构建对质基矩阵,从而提供良好的负荷平衡,避免在进程或工作复制过程中进行密切的协调。我们还研究该模型的内存性质,并且用SHER系统的详细剖析系统,包括SLFSMA前的功能,我们也可以进行详细的分析。