Domain-Specific Language and Complier Optimizations for Particle-Mesh Simulations

Systems biology are trying to understand a bunch of fundamental questions regarding the orchestration of the molecules in the human body. To answer these questions, they have to simulate complex models, solve large equation systems, and process immense amounts of data. Particles methods have been firmly established as a computational framework to process different kind of simulations. Such simulations rely on huge power of computing to give results on reasonable time that may take several years with ordinary machines. Here comes the term of high performance computing (HPC) to deliver much higher performance in order to solve the aforementioned problems. As much as these technologies are evolving continuously, it is getting more difficult for scientists to use efficiently such architectures as they are not expert on low level and high performance computing paradigms. Domain specific languages (DSLs) are a promising solution to ease writing high performance codes. In our project, we aim to help close the productivity and performance gap for HPC applications in systems biology using particle-mesh methods. To achieve this goal, we will develop a new DSL OpenPME (Open Particle Mesh Environment) for particle-mesh methods on top of OpenFPM [1] (Open Framework for Particles and Meshes) library and runtime system. We will develop a formal model and language definition, conduct research on new compiler optimizations for simulation programs, and extend the OpenFPM library with functionality required for the interaction with the DSL layer. The project can be summarized in the following concrete objectives. First, we will formalize particle-mesh abstractions and thus by capturing how they are used in scientific computing in order to derive a formal computation model helping to reason about transformations and optimizations. We will take into consideration the formal syntax, the language semantics and the type system for particle-mesh methods. Our second objective is to develop the particle-mesh DSL itself based on the conceived formal model. The DSL should hide the complexity of template meta-programming present in OpenFPM to ensure its usability and lower the entry barrier. All, should be accompanied with a modern development environment where the language should include high-level information about the phenomenon being modeled that can be used by the optimizing compiler and the runtime system. The third main goal is to develop new compiler optimizations that use the DSL to obtain an optimized implementation for a given set of target architectures. We are interested particularly in the possibilities for compiler-controlled memory management and coherency that will be opened by the programming model. By defining the particles structure, how they interact and update positions, we can provide a clear sense of data locality that will be exploited by the compiler to insert data-prefetching calls to improve performance. Afterwards, we will consider extending OpenFPM library and the runtime so that they get aware of the information available at the DSL level and extracted by the compiler. This will allow to implement auto-tuning approaches, especially for simulations with high dynamics, and improve dynamic load balancing. In the end, we will implement the numerical solvers in OpenFPM-numerics that are required by the driver applications. We will expose the abstract operators corresponding to these solvers in the DSL and the development environment.

[1] Incardona, P., Leo, A., Zaluzhnyi, Y., Ramaswamy, R., Sbalzarini, I.F.: OpenFPM: A scalable open framework for particle and particle-mesh codes on parallel computers. arXiv:1804.07598 [physics] (April 2018)