The OpenSHMEM Single-sided PGAS Communications Library
In some applications, the overheads associated with the fundamentally two-sided (send and receive) nature of MPI message-passing can adversely affect performance. This is of particular concern for scaling up to extremely large systems. There is a renewed interest in simpler single-sided communications models where data can be written/read directly to/from remote processes.
OpenSHMEM is a relatively recent standard for single-sided communications, including routines for remote writes ("puts"), remote reads ("gets") and associated synchronisation primitives. Although in modern terminology it is often classified as a PGAS (Partitioned Global Address Space) approach, SHMEM libraries date back almost two decades and there is substantial experience of using them in real applications codes. OpenSHMEM is expected to perform well on ARCHER as it maps very closely to the underlying network hardware.
In this talk I will give a brief overview of the OpenSHMEM library. The main purpose of the talk is to explain the crucial role that synchronisation plays in writing correct programs, and how this makes it more difficult to use than MPI. I will also discuss when using OpenSHMEM might be more efficient than pure MPI.