Large, complex, multi-scale, multi-physics simulation codes, running on high performance computing (HPC) platforms, are essential to advancing science and engineering research in disciplines such as lattice field theory, astrophysics and cosmology, computational fluid dynamics/fluid structure interaction,and high energy density physics. Progress in computational science together with the adoption of high-level frameworks and modular development have produced widely used community simulation software specific to individual communities. These state-of-the-art codes have been under development and optimization for several years and currently simulate multi-scale, multi-physics phenomena with unprecedented fidelity on petascale platforms. Currently each of these codes have solvers with varied performance characteristics, but all face challenges because of changing hardware architecture. Efforts underway to cope with these challenges, are largely fragmented. While it is true that the scientific codes used in various domains differ significantly from one another, many solutions are likely to be conceptually similar, even if they differ in details. The goal of the proposed conceptualization project, Software Institute for Methodologies and Abstractions for Codes (SIMAC) is to find common abstractions and frameworks applicable across a broad range of applications through cooperation, coordination and interdisciplinary interactions among the participants. The core group of participating codes includes FLASH (astrophysics, cosmology, CFD, HEDP), Cactus (CFD, numerical relativity, and quantum relativity), the code suite used by the Lattice QCD community, and Enzo (cosmology).
The proposed collaborative research will produce benefit beyond the four simulation codes and collaborating institutions by exploring: a common software infrastructure applicable to a broad range of science and engineering application domains; an engagement model between computer science research and application development; a multidisciplinary immersion program for research, education and training of students, postdoctoral fellows and visitors on future platform architectures.
The purpose of this project was to determine community needs, concerns, and desires with regards to large-scale simulation codes that will be designed for future architectures (i.e., exascale computers and beyond). Over the course of two years, this grant funded three community workshops, focusing on a variety of subjects relating to next-generation architectures, including algorithms, languages, hardware, and community needs. In particular, areas of concern include the interaction of physics-rich multiscale simulations (using, e.g., adaptive mesh refinement techniques) with heterogenous architectures such as graphics processing units (GPUs) or Intel Xeon Phi chips. Overall, the primary areas of discussion focus on programming models and algorithm design priorities. In addition, some specific needs were identified: It should make career tracks for developing code within academia respectable. At present, there are not stable career trajectories for researchers whose primary goal is code development, and if professional-level software development must take place in academica, this has to change. It should bridge the gaps between industry and academia. The two have different reward and motivation systems, and different objectives (profit vs. basic research/education). However, both industry and academia have similar needs with regards to exascale architectures, and can work together to solve these problems. It should help identify and reduce barriers to re-use of code. Part of this effort could be educational. The ultimate outcome of this project is a vision for a Software Institute, which will be submitted to the NSF SI^2 solicitation when it becomes available.