Maestro will build a data and memory-aware middleware framework that addresses the ubiquitous problems of data movement in complex memory hierarchies that exist at multiple levels of the HPC software stack.
Though High Performance Computing (HPC) and High Performance Data Analytics (HPDA) applications pose a broad variety of efficiency challenges, the performance of both has become dominated by data movement through the memory and storage systems, rather than the floating point computational capability. Despite this shift, current software technologies remain severely limited in their ability to optimise data movement. MAESTRO, the ‘Middleware for memory and data-awareness in workflows’ project, will address the two following major impediments of the modern HPC software:
- DATA AWARENESS:Moving data through memory has not always been a performance bottleneck. The software stack that HPC relies upon was built during the decades where the cost of performing floating point operations (FLOPS) was paramount. This has resulted in a software stack and set of programming models that are optimised for floating point operations but lacking in basic data handling functionality. We characterise the set of technical issues as ‘missing data-awareness’.
- MEMORY AWARENESS: Software rightfully insulates users from hardware details, particularly as we move up the software stack. But HPC applications, programming environments and system software cannot make key data movement decisions without some understanding of the hardware, particularly of the increasingly complex memory hierarchy. With the exception of runtimes, which treat memory in a domain-specific manner, software typically makes hardware-neutral decisions which can often result in poor performance We characterise this issue as ‘missing memory-awareness’.
Maestro proposes a middleware framework that enables memory and data-awareness. Maestro has developed new data-aware abstractions that can be used in any level of software, e.g. compiler, runtime or application. A core element are the Core Data Objects (CDO), which are provided to the middleware through a give/take semantics. The middleware is being designed such that it enables modelling of memory and storage hierarchies to allow for reasoning about data movement and placement based on costs of moving data objects. The middleware will support automatic movement and promotion of data in memories and storage and allow for data transformations and optimisation.
Maestro follows a co-design methodology using a set of applications and workflows from diverse areas including numerical weather forecasting, earth-system modelling, materials sciences and in-situ data analysis pipelines for computational fluid dynamics simulations.