A Unified Runtime for PGAS and Event-Driven Programming

A well-recognized characteristic of extreme scale systems is that their computation bandwidths far exceed their communication bandwidths. PGAS runtimes have proven to be effective in enabling efficient use of communication bandwidth for many applications, due to their efficient support for short non- blocking one-sided messages. However, they were not designed for exploiting the massive levels of intra-node parallelism found in extreme scale systems. Thus, a key question in the use of PGAS runtimes on extreme scale platforms is: what kind of node-level runtime system should be integrated with PGAS runtimes? In this paper, we explore the premise that event-driven intra- node runtimes could be promising candidates for integration with PGAS runtimes, due to their ability to overlap useful computation with background long-latency operations. For this exploration, we use OpenSHMEM as an exemplar of PGAS runtimes, and Node.js as an exemplar of event-driven runtimes. While Node.js may seem an unusual choice for high-performance computing, its prominent role as an event-driven runtime for server-side Javascript is a good match for what we need for optimizing the use of communication bandwidth. At the same time, the availability of excess computation bandwidth in extreme scale systems can help mitigate the local computation overheads of Javascript relative to native languages such as C++. Further, since the Node.js environment is single-threaded, we get an automatic guarantee that no data races will occur on Javascript objects, a guarantee that we cannot get with C++. Our integration of Open- SHMEM and Node.js makes it possible to expose nonblocking PGAS operations as JavaScript constructs that can seamlessly be used with the JavaScript asynchronous mechanisms, such as those based on promises. We believe that the exploration and preliminary results in this paper offer a new direction for future research on building high productivity runtimes for extreme scale systems.

[1]  Vivek Sarkar,et al.  Integrating Asynchronous Task Parallelism with OpenSHMEM , 2016, OpenSHMEM.

[2]  Vivek Sarkar,et al.  HabaneroUPC++: a Compiler-free PGAS Library , 2014, PGAS.

[3]  Katherine A. Yelick,et al.  UPC++: A PGAS Extension for C++ , 2014, 2014 IEEE 28th International Parallel and Distributed Processing Symposium.

[4]  Christina Freytag,et al.  Using Mpi Portable Parallel Programming With The Message Passing Interface , 2016 .

[5]  Vivek Sarkar,et al.  A Pluggable Framework for Composable HPC Scheduling Libraries , 2017, 2017 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW).

[6]  Steve Vinoski,et al.  Node.js: Using JavaScript to Build High-Performance Network Programs , 2010, IEEE Internet Comput..

[7]  Katherine Yelick,et al.  Introduction to UPC and Language Specification , 2000 .

[8]  Barbara M. Chapman,et al.  Introducing OpenSHMEM: SHMEM for the PGAS community , 2010, PGAS '10.

[9]  Robert W. Numrich,et al.  Co-array Fortran for parallel programming , 1998, FORF.