GPI-2 is an API for the development of scalable, asynchronous, and fault tolerant parallel applications. GPI-2 implements the GASPI specification, an API specification for asynchronous communication which leverages remote completion and one-sided RDMA-driven communication in a PGAS. GASPI is maintained by the GASPI Forum with the aim of having a specification as a reliable, scalable, and universal tool for the HPC community.
GPI-2 implements the concept of memory segments. The original concept aims at an abstraction to represent contiguous memory. Segments are globally accessible by every thread of every GASPI process. They can also be used to represent different memory types within an application and to map the heterogeneous memory hierarchy found in today’s modern hardware to the software layer. In DEEP-SEA, GPI-2 will be extended to support different kinds of segments as, for example, Non-Volatile Memory (NVM). This directly targets a MSA system and opens the door for further functionality. One concrete example explored in DEEP-SEA is to add a layer of persistence which can then be used to build more resilient applications.
Another key aspect are applications which support dynamic resources, so called malleable applications. This aspect not only has the potential to improve resources utilization from a resource manager point of view but also allows for more flexible applications which have more control over the necessary resources during the applications execution. In DEEP-SEA we aim to equip GPI-2 to cope with such requirements leveraging the standard PMIx interface.