CAF Events Implementation Using MPI 3 Capabilities
MPI 3.1 is currently the most recent version of the MPI standard. It adds important extensions to MPI 2, including a simplified semantic for the one sided communication routines and a new tool interface, capable of exposing performance data of the MPI implementation to users and libraries. These and other new features make MPI 3 a good candidate for being the transport layer of PGAS languages like Coarray Fortran. OpenCoarrays, the free coarray implementation used by the GNU Fortran compiler, implements almost all Coarray Fortran 2008 and several Coarray Fortran 2015 features on top of MPI 3. Among the Fortran 2015 features, one of the most relevant for performance improvement is events; such a feature represents a fine grain synchronization mechanism based on a limited implementation of the well known semaphore primitives. In this paper, we analyze two possible implementations of events using MPI 3 features and show how to dynamically select the best implementation, according to the capabilities provided by the MPI implementation. We also show how events can improve the overall performance by reducing idle times in parallel applications.
EuroMPI