Talk by Clément Foyer

On June, 18th,  Clément Foyer, post-doc in our team, will present us the work he did during his PhD.

Title: Abstractions for Portable Data Management in Heterogeneous Memory Systems

Abstract:
This talk present the work I did for my Thesis at the University of Bristol. This thesis is a study of data selection and placement in heterogeneous memories in modern high-performance computer architectures. Memory systems are becoming increasingly complex and diverse, which complicates the search for optimal data placement and reduces the portability of applications. As we enter the dawn of the exascale era, memory models have to be rethought to consider the new trade-offs between latency, bandwidth, capacity, persistence and accessibility, and their impact on performance. Moreover, this data management needs to be simplified and brought within reach of domain scientists in fields outside of Computer Science.
To address this issue, this work focuses on studying data movement, data optimisation and memory management in systems with heterogeneous memory. Firstly, a new algorithm was developed that improves the computation of data exchange in the context of multigrid data redistribution.
Secondly, multiple APIs for memory management were unified into a single abstraction that provides memory allocations and transfers in the form of a portable, adaptive and modular library. Lastly, the allocation management was studied in a high-level language along with ways to enable low-level control over memory placement for a high-level language.
The Adjacent Shifting of PEriodic Node data (ASPEN) algorithm, presented in this thesis, provides better performance than state-of-the-art algorithms used for producer-consumer data redistribution of block-cyclic organised data, as used in distributed numerical applications and libraries (e.g. ScaLAPACK). The MAMBA library was developed and aims to facilitate data management on heterogeneous memory systems. It uses a data broker developed with library cooperation and interoperability in mind.  In addition to providing portability and memory abstraction, it also serves as a comparison tool for benchmarking or exploratory experiments. Finally, a use case of memory management in C for a Python application based on a distributed framework has been studied as a proof-of-concept for providing direct memory management to high-level application development.
This work presents a data-centric approach to the challenges heterogeneous memory creates for performance-seeking applications.