Data Parallel Skeletons in Java
Ernsting Steffen, Kuchen Herbert
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.
algorithmic skeletons, parallel programming, distributed programming, Java