Higher-Order and Symbolic Computation, 16(3)203-251
Comparing Parallel Functional Languages: Programming and
Performance
H-W. Loidl, School of Mathematical and Computer Sciences,
Heriot-Watt University, Edinburgh EH14 4AS, Scotland
F. Rubio, Dpto. Sistemas Informaticos y Programacion, Universidad
Complutense de Madrid, 28040 Madrid, Spain
N. Scaife, Japan Advanced Institute for Science and Technology,
1/8 Asahidai, Tatsunokuchi, Nomigun, Ishikawa, 923-1211
K. Hammond, School of Computer Science, University of St Andrews,
KY16 9SS, Scotland
S. Horiguchi, Japan Advanced Institute for Science and Technology,
1/8 Asahidai, Tatsunokuchi, Nomigun, Ishikawa, 923-1211
U. Klusik, Fachbereich Mathematik und Informatik,
Philipps-Universität Marburg, D-35032 Marburg, Germany
R. Loogen, Fachbereich Mathematik und Informatik,
Philipps-Universität Marburg, D-35032 Marburg, Germany
G.J. Michaelson, School of Mathematical and Computer Sciences,
Heriot-Watt University, Edinburgh EH14 4AS, Scotland
R. Pena, Dpto. Sistemas Informaticos y Programacion, Universidad
Complutense de Madrid, 28040 Madrid, Spain
S. Priebe, Fachbereich Mathematik und Informatik,
Philipps-Universität Marburg, D-35032 Marburg, Germany
A.J. Rebon, School of Computer Science, University of St Andrews,
KY16 9SS, Scotland
P.W. Trinder, School of Mathematical and Computer Sciences,
Heriot-Watt University, Edinburgh EH14 4AS, Scotland
Abstract: This paper presents a practical evaluation and
comparison of three state-of-the-art parallel functional
languages. The evaluation is based on implementations of three typical
symbolic computation programs, with performance measured on a
Beowulf-class parallel architecture.
We assess three mature parallel functional languages: GML, a system
for implicitly parallel execution of ML programs; GPH, a mainly
implicit parallel extension of Haskell; and Eden, a more explicit
parallel extension of Haskell designed for both distributed and
parallel execution. While all three languages employ a completely
implicit approach to communication, each language takes a different
approach to specifying and controlling parallelism, ranging from
explicit identification of processes as language constructs (Eden)
through annotation of potential parallelism (GPH) to automatic
detection of parallel skeletons in sequential code (GML).
We present detailed performance measurements of all three systems on a
widely available parallel architecture: a Beowulf cluster of low-cost
commodity workstations. We use three representative symbolic
applications: a matrix multiplication algorithm, an exact linear
system solver, and a simple ray-tracer. Our results show how moderate
speedups can be achieved with little or no changes to the sequential
code, and that parallel performance can be significantly improved even
within our high-level model of parallel functional programming by
controlling key aspects of the program such as load distribution and
thread granularity.
Keywords: Parallel Computation, Functional Programming,
Skeletons, Implicit Parallelism, Automatic Task Decomposition, Load
Balancing, Haskell, ML
|
This article can be downloaded [here].
|
|