OSL: An Algorithmic Skeleton Library with Exceptions

Abstract Exception handling is a traditional and natural mechanism to manage errors and events that disrupt the normal flow of program instructions. In most concurrent or parallel systems, exception handling is done locally or sequentially, and cannot guarantee the global coherence of the system after an exception is caught. Working with a structured parallel model is an advantage in this respect. Algorithmic skeletons, that are patterns of parallel algorithms on distributed data structures, offer such a structured model. However very few algorithmic skeleton libraries provide a specific parallel exception mechanism, and no C++-based library. In this paper we propose the design of an exception mechanism for the C++ Orleans Skeleton Library that ensures the global coherence of the system after exceptions are caught. We explain our design choices, experiment on the performance penalty of its use, and we illustrate how to purposefully use this mechanism to extract the results in the course of some algorithms.

[1]  Philip Wadler,et al.  Comprehending monads , 1990, LISP and Functional Programming.

[2]  Jörg Kienzle,et al.  Action-Oriented Exception Handling in Cooperative and Competitive Concurrent Object-Oriented Systems , 2000, Advances in Exception Handling Techniques.

[3]  R. Di Cosmo,et al.  A "Minimal Disruption" Skeleton Experiment: Seamless Map & Reduce Embedding in OCaml , 2012, ICCS.

[4]  Murray Cole,et al.  Algorithmic Skeletons: Structured Management of Parallel Computation , 1989 .

[5]  Frédéric Loulergue,et al.  Bulk synchronous parallel ML with exceptions , 2006, Future Gener. Comput. Syst..

[6]  Herbert Kuchen,et al.  Data Parallel Skeletons in Java , 2012, ICCS.

[7]  Frédéric Loulergue,et al.  Parallel programming and performance predictability with Orléans Skeleton Library , 2011, 2011 International Conference on High Performance Computing & Simulation.

[8]  Frédéric Loulergue,et al.  Parallel Superposition for Bulk Synchronous Parallel ML , 2003, International Conference on Computational Science.

[9]  Frédéric Loulergue,et al.  Bulk Synchronous Parallel ML: Modular Implementation and Performance Prediction , 2005, International Conference on Computational Science.

[10]  Rita Loogen,et al.  Under Consideration for Publication in J. Functional Programming Parallel Functional Programming in Eden , 2022 .

[12]  Leslie G. Valiant,et al.  A bridging model for parallel computation , 1990, CACM.

[13]  Henryk Krawczyk,et al.  Object Serialization and Remote Exception Pattern for Distributed C++/MPI Application , 2007, PaCT.

[14]  Herbert Kuchen,et al.  Enhancing Muesli's Data Parallel Skeletons for Multi-core Computer Architectures , 2010, 2010 IEEE 12th International Conference on High Performance Computing and Communications (HPCC).

[15]  Henri E. Bal Fault-tolerant parallel programming in Argus , 1992, Concurr. Pract. Exp..

[16]  Steven J. Deitz,et al.  Global-view abstractions for user-defined reductions and scans , 2006, PPoPP '06.

[17]  Zhenjiang Hu,et al.  A library of constructive skeletons for sequential style of parallel programming , 2006, InfoScale '06.

[18]  Matti Rintala,et al.  Exceptions in remote procedure calls using C++ template metaprogramming , 2007, Softw. Pract. Exp..

[19]  John H. Reppy,et al.  Implicitly-threaded parallelism in Manticore , 2008, ICFP 2008.

[20]  Ludovic Henrio,et al.  Exceptions for Algorithmic Skeletons , 2010, Euro-Par.

[21]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[22]  John B. Goodenough,et al.  Exception handling: issues and a proposed notation , 1975, CACM.

[23]  Patrizio Dazzi,et al.  Joint Structured/Unstructured Parallelism Exploitation in muskel , 2006, International Conference on Computational Science.