Workshop: The 6th Annual Parallel Applications Workshop, Alternatives to MPI+X (PAW-ATM)
Authors: Marcin Rogowski (King Abdullah University of Science and Technology (KAUST), NVIDIA Corporation); Jeff R. Hammond (NVIDIA Helsinki Oy); and David E. Keyes and Lisandro Dalcin (King Abdullah University of Science and Technology (KAUST))
Abstract: We describe shmem4py, a Python wrapper for the OpenSHMEM application programming interface (API) which follows a design similar to that of the well-known mpi4py package. OpenSHMEM is a descendant of the one-sided communication library for the Cray T3D and it is known for its uncompromising performance for low-latency and high-throughput use cases involving one-sided and collective communication. OpenSHMEM is arguably one of the most efficient and portable abstractions for modern network architectures. Thanks to tight interoperability with NumPy, shmem4py provides a convenient parallel programming framework leveraging both the high-productivity NumPy feature set and the high-performance networking capabilities of OpenSHMEM. This paper discusses the design and performance characteristics of shmem4py in a variety of communication patterns relative to lower-level languages (C) as well as MPI and mpi4py.