Data Parallel Skeletons in Java

Abstract In the past years, multi-core processors and clusters of multi-core processors have emerged to be promising approaches to meet the growing demand for computing performance. They deliver scalable performance, certainly at the costs of tedious and complex parallel programming. Due to a lack of high-level abstractions, developers of parallel applications have to deal with low-level details such as coordinating threads or synchronizing processes. Thus, parallel programming still remains a dificult and error-prone task. In order to shield the programmer from these low–level details, algorithmic skeletons have been proposed. They encapsulate typical parallel programming patterns and have emerged to be an effcient and scalable approach to simplifying the development of parallel applications. In this paper, we present a Java binding of our skeleton library Muesli. We point out strengths and weaknesses of Java with respect to parallel and distributed computing. A matrix multiplication benchmark demonstrates that the Java Generics deliver poor performance, thus the Java implementation is unable to compete with the C++ implementation in terms of performance.

[1]  Patrizio Dazzi,et al.  Scalable Computing: Practice and Experience WSSP, Warsaw, Poland, 2007. To appear. MUSKEL: AN EXPANDABLE SKELETON ENVIRONMENT∗ , 2007 .

[2]  Stephen Gilmore,et al.  Flexible Skeletal Programming with eSkel , 2005, Euro-Par.

[3]  Salvatore Orlando,et al.  P3 L: A structured high-level parallel language, and its structured support , 1995, Concurr. Pract. Exp..

[4]  Denis Caromel,et al.  Fine Tuning Algorithmic Skeletons , 2007, Euro-Par.

[5]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[6]  Anthony Skjellum,et al.  Using MPI - portable parallel programming with the message-parsing interface , 1994 .

[7]  Christian Lengauer,et al.  HDC : A higher-order language for divide-and-conquer , 2001 .

[8]  Horacio González-Vélez,et al.  A survey on statistical disclosure control and micro-aggregation techniques for secure statistical databases , 2010 .

[9]  Marco Danelutto,et al.  An advanced environment supporting structured parallel programming in Java , 2003, Future Gener. Comput. Syst..

[10]  Barbara Chapman,et al.  Using OpenMP: Portable Shared Memory Parallel Programming (Scientific and Engineering Computation) , 2007 .

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

[12]  Herbert Kuchen,et al.  A Skeleton Library , 2002, Euro-Par.

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

[14]  Mark Baker,et al.  Nested parallelism for multi-core HPC systems using Java , 2009, J. Parallel Distributed Comput..

[15]  Christian Lengauer,et al.  HDC: A Higher-Order Language for Divide-and-Conquer , 2000, Parallel Process. Lett..

[16]  M. J. Quinn,et al.  Parallel computing (2nd ed.): theory and practice , 1994 .

[17]  Herbert Kuchen,et al.  Data Parallel Skeletons for GPU Clusters and Multi-GPU Systems , 2011, PARCO.

[18]  João Luís Sobral,et al.  Enabling JaSkel skeletons for clusters and computational Grids , 2007, 2007 IEEE International Conference on Cluster Computing.

[19]  Hideya Iwasaki,et al.  A Parallel Skeleton Library for Multi-core Clusters , 2009, 2009 International Conference on Parallel Processing.

[20]  Mario Leyton,et al.  Skandium: Multi-core Programming with Algorithmic Skeletons , 2010, 2010 18th Euromicro Conference on Parallel, Distributed and Network-based Processing.