Advances in Engineering Software vol:. issue:. pages:1-15
Space weather is a rapidly growing field of science which studies processes occurring in the area of space between the Sun and the Earth. The development of space weather forecasting capabilities is a task of great societal relevance: space weather effects may damage a number of technological assets, among which power and communication lines, transformers, pipelines and the telecommunication infrastructure. Exascale computing is a fundamental ingredient for space weather forecasting tools based on physical, rather than statistical, models. We describe here our recent progresses towards a physics-based space weather forecasting tool with exascale computing. We select the semi-implicit, Particle In Cell, Implicit Moment Method implemented in the parallel, object-oriented, C++ iPic3D code as a promising starting point. We analyze the structure and the performances of the current version of the iPic3D code. We de- scribe three algorithmic developments, the fully implicit method, the Multi-Level Multi-Domain method, and the fluid-kinetic method, which can help addressing the multiple spatial and temporal scales present in space weather simulations. We then examine, in a co-design approach, which requirements – vectorization, extreme parallelism and reduced communication – an application has to satisfy to fully exploit architectures such as GPUs and Xeon Phi’s. We address how to modify the iPic3D code to better satisfy these requirements. We then describe how to port the iPic3D code to the DEEP architecture currently under construction. The FP7 project DEEP (www.deep-project.eu) aims at building an exascale-ready machine composed of a cluster of Xeon nodes and of a collection of Xeon Phi coprocessors, used as boosters. The aim of the DEEP project is to enable exascale performance for codes, such as iPic3D, composed of parts which exhibit different potential for extreme scalability. Finally, we provide examples of simulations of space weather processes done with the current version of the iPic3D code.