Mercury: Enabling remote procedure call for high-performance computing

Remote procedure call (RPC) is a technique that has been largely adopted by distributed services. This technique, now more and more used in the context of high-performance computing (HPC), allows the execution of routines to be delegated to remote nodes, which can be set aside and dedicated to specific tasks. However, existing RPC frameworks assume a socket-based network interface (usually on top of TCP/IP), which is not appropriate for HPC systems, because this API does not typically map well to the native network transport used on those systems, resulting in lower network performance. In addition, existing RPC frameworks often do not support handling large data arguments, such as those found in read or write calls. We present in this paper an asynchronous RPC interface, called Mercury, specifically designed for use in HPC systems. The interface allows asynchronous transfer of parameters and execution requests and provides direct support of large data arguments. Mercury is generic in order to allow any function call to be shipped. Additionally, the network implementation is abstracted, allowing easy porting to future systems and efficient use of existing native transport mechanisms.

[1]  Robert B. Ross,et al.  PVFS: A Parallel File System for Linux Clusters , 2000, Annual Linux Showcase & Conference.

[2]  Henri Casanova,et al.  Overview of GridRPC: A Remote Procedure Call API for Grid Computing , 2002, GRID.

[3]  Roger Riggs,et al.  A distributed object model for the java TM system , 1996 .

[4]  Ron Oldfield,et al.  Extending scalability of collective IO through nessie and staging , 2011, PDSW '11.

[5]  Robert B. Ross,et al.  Using MPI-2: Advanced Features of the Message Passing Interface , 2003, CLUSTER.

[6]  Patrick M. Widener,et al.  Efficient Data-Movement for Lightweight I/O , 2006, 2006 IEEE International Conference on Cluster Computing.

[7]  Ron A. Oldfield,et al.  Developing Integrated Data Services for Cray Systems with a Gemini Interconnect. , 2012 .

[8]  Ashish B. Shah,et al.  Common Object Request Broker Architecture (CORBA) , 2015 .

[9]  Robert B. Ross,et al.  Using MPI in high-performance computing services , 2013, EuroMPI.

[10]  Keira Common Object Request Broker Architecture (CORBA) , 2015 .

[11]  A. Watson,et al.  OMG (Object Management Group) architecture and CORBA (common object request broker architecture) specification , 2002 .

[12]  Rajeev Thakur,et al.  Revealing the Performance of MPI RMA Implementations , 2007, PVM/MPI.

[13]  Hugo Mills,et al.  Scalable Node Allocation for Improved Performance in Regular and Anisotropic 3D Torus Supercomputers , 2011, EuroMPI.

[14]  Raj Srinivasan,et al.  XDR: External Data Representation Standard , 1995, RFC.

[15]  Andrew Birrell,et al.  Implementing remote procedure calls , 1984, TOCS.

[16]  Robert B. Ross,et al.  Extreme-scale computing services over MPI: Experiences, observations and features proposal for next-generation message passing interface , 2014, Int. J. High Perform. Comput. Appl..

[17]  Keith D. Underwood,et al.  Implementation and Performance of Portals 3.3 on the Cray XT3 , 2005, 2005 IEEE International Conference on Cluster Computing.

[18]  Robert Latham,et al.  Scalable I/O forwarding framework for high-performance computing systems , 2009, 2009 IEEE International Conference on Cluster Computing and Workshops.

[19]  Larry Kaplan,et al.  The Gemini System Interconnect , 2010, 2010 18th IEEE Symposium on High Performance Interconnects.

[20]  M. Slee,et al.  Thrift : Scalable Cross-Language Services Implementation , 2022 .

[21]  Robert B. Ross,et al.  BMI: a network abstraction layer for parallel I/O , 2005, 19th IEEE International Parallel and Distributed Processing Symposium.

[22]  Roger Riggs,et al.  A Distributed Object Model for the Java System , 1996, Comput. Syst..

[23]  Scott Klasky,et al.  Enabling high-speed asynchronous data extraction and transfer using DART , 2010, Concurr. Comput. Pract. Exp..

[24]  Darius Buntinas,et al.  A uGNI-Based MPICH2 Nemesis Network Module for the Cray XE , 2011, EuroMPI.