Supporting asynchronization in OpenMP for event-driven programming

Abstract The event-driven programming pattern is pervasive in a wide range of modern software applications. Unfortunately, it is not easy to achieve good performance and responsiveness when developing event-driven applications. Traditional approaches require a great amount of programmer effort to restructure and refactor code, to achieve the performance speedup from parallelism and asynchronization. Not only does this restructuring require a lot of development time, it also makes the code harder to debug and understand. We propose an asynchronous programming model based on the philosophy of OpenMP, which does not require code restructuring of the original sequential code. This asynchronous programming model is complementary to the existing OpenMP fork-join model. The coexistence of the two models has potential to decrease developing time for parallel event-driven programs, since it avoids major code refactoring. In addition to its programming simplicity, evaluations show that this approach achieves good performance improvements consistent with more traditional event-driven parallelization.

[1]  Andrew W. Appel,et al.  Compiling with Continuations , 1991 .

[2]  Michael D. Ernst,et al.  Finding errors in multithreaded GUI applications , 2012, ISSTA 2012.

[3]  Brian Demsky,et al.  OoOJava: software out-of-order execution , 2011, PPoPP '11.

[4]  Nasser Giacaman,et al.  Exception Handling with OpenMP in Object-Oriented Languages , 2015, IWOMP.

[5]  Ben Shneiderman,et al.  Response time and display rate in human performance with computers , 1984, CSUR.

[6]  Damien Zufferey,et al.  P: safe asynchronous event-driven programming , 2013, PLDI.

[7]  Mahadev Satyanarayanan,et al.  Quantifying interactive user experience on thin clients , 2006, Computer.

[8]  Ralf S. Engelschall Portable Multithreading-The Signal Stack Trick for User-Space Thread Creation , 2000, USENIX Annual Technical Conference, General Track.

[9]  Eli Upfal,et al.  A simple load balancing scheme for task allocation in parallel machines , 1991, SPAA '91.

[10]  Vikas,et al.  Pyjama: OpenMP-like implementation for Java, with GUI extensions , 2013, PMAM '13.

[11]  Douglas Clark Schmidt,et al.  Reactor An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events , 1995 .

[12]  Brian Demsky,et al.  DOJ: dynamically parallelizing object-oriented programs , 2012, PPoPP '12.

[13]  Arie van Deursen,et al.  A study and toolkit for asynchronous programming in c# , 2014, ICSE.

[14]  Carl Hewitt,et al.  A Universal Modular ACTOR Formalism for Artificial Intelligence , 1973, IJCAI.

[15]  Douglas C. Schmidt,et al.  Object-oriented application frameworks , 1997, CACM.

[16]  Matteo Frigo,et al.  The implementation of the Cilk-5 multithreaded language , 1998, PLDI.

[17]  Roberto Ierusalimschy,et al.  Coroutines in Lua , 2004 .

[18]  Willy Zwaenepoel,et al.  Flash: An efficient and portable Web server , 1999, USENIX Annual Technical Conference, General Track.

[19]  Martin Odersky,et al.  Scala Actors: Unifying thread-based and event-based programming , 2009, Theor. Comput. Sci..

[20]  Rupak Majumdar,et al.  Tasks: language support for event-driven programming , 2007, PEPM '07.

[21]  Charles E. Leiserson,et al.  Programming with exceptions in JCilk , 2006, Sci. Comput. Program..

[22]  David R. Cheriton,et al.  Comparing the performance of web server architectures , 2007, EuroSys '07.

[23]  L.A. Smith,et al.  A Parallel Java Grande Benchmark Suite , 2001, ACM/IEEE SC 2001 Conference (SC'01).

[24]  Douglas C. Schmidt,et al.  An Object Behavioral Pattern for Demultiplexing and Dispatching Handlers for Asynchronous Events , 1998 .

[25]  Jeff A. Johnson,et al.  Improving user-interface responsiveness despite performance limitations , 1990, Digest of Papers Compcon Spring '90. Thirty-Fifth IEEE Computer Society International Conference on Intellectual Leverage.

[26]  Markus Schordan,et al.  The Language of the Visitor Design Pattern , 2006, J. Univers. Comput. Sci..

[27]  Bruno Cabral,et al.  Eve: A Parallel Event-Driven Programming Language , 2014, Euro-Par Workshops.

[28]  Matthias Hauswirth,et al.  Listener latency profiling: Measuring the perceptible performance of interactive Java applications , 2011, Sci. Comput. Program..

[29]  Nasser Giacaman,et al.  Task Parallelism for Object Oriented Programs , 2008, 2008 International Symposium on Parallel Architectures, Algorithms, and Networks (i-span 2008).