MULTILISP: a language for concurrent symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Computer
Why functional programming matters
The Computer Journal - Special issue on Lazy functional programming
Multiprocessor execution of functional programs
International Journal of Parallel Programming
The HDG-machine: a highly distributed graph-reducer for a transputer network
The Computer Journal - Special issue: Concurrent programming
Algorithmic skeletons: structured management of parallel computation
Algorithmic skeletons: structured management of parallel computation
Retire Fortran?: a debate rekindled
Communications of the ACM
Numerical recipes in C (2nd ed.): the art of scientific computing
Numerical recipes in C (2nd ed.): the art of scientific computing
The art of parallel programming
The art of parallel programming
A concurrent, generational garbage collector for a multithreaded implementation of ML
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Generational garbage collection for Haskell
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Time and space profiling for non-strict, higher-order functional languages
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
First-class schedules and virtual maps
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Programming parallel algorithms
Communications of the ACM
GUM: a portable parallel implementation of Haskell
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
pHluid: the design of a parallel functional language implementation on workstations
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Developing a practical projection-based parallel Delaunay algorithm
Proceedings of the twelfth annual symposium on Computational geometry
Structured parallel programming: theory meets practice
Computing tomorrow
Auto-blocking matrix-multiplication or tracking BLAS3 performance from source code
PPOPP '97 Proceedings of the sixth ACM SIGPLAN symposium on Principles and practice of parallel programming
Implicit parallel programming in pH
Implicit parallel programming in pH
Functional Programming for Loosely-Coupled Multiprocessors
Functional Programming for Loosely-Coupled Multiprocessors
The Definition of Standard ML
Research Directions in Parallel Functional Programming
Research Directions in Parallel Functional Programming
Lazy Task Creation: A Technique for Increasing the Granularity of Parallel Programs
IEEE Transactions on Parallel and Distributed Systems
PARLE '91 Proceedings of Parallel Architectures and Languages - Volume II
SFP '99 Selected papers from the 1st Scottish Functional Programming Workshop (SFP99)
Load Balancing in a Parallel Graph Reducer
SFP '01 Selected papers from the 3rd Scottish Functional Programming Workshop (SFP01)
Parallelising a Large Functional Program or: Keeping LOLITA Busy
IFL '97 Selected Papers from the 9th International Workshop on Implementation of Functional Languages
DREAM: The DistRibuted Eden Abstract Machine
IFL '97 Selected Papers from the 9th International Workshop on Implementation of Functional Languages
HaskSkel: Algorithmic Skeletons in Haskell
IFL '99 Selected Papers from the 11th International Workshop on Implementation of Functional Languages
Comparative Cross-Platform Performance Results from a Parallelizing SML Compiler
IFL '02 Selected Papers from the 13th International Workshop on Implementation of Functional Languages
A type system for bounded space and functional in-place update
Nordic Journal of Computing
Task and data parallelism in P3L
Patterns and skeletons for parallel and distributed computing
Chinese remainder and interpolation algorithms
SYMSAC '71 Proceedings of the second ACM symposium on Symbolic and algebraic manipulation
The Eden Coordination Model for Distributed Memory Systems
HIPS '97 Proceedings of the 1997 Workshop on High-Level Programming Models and Supportive Environments (HIPS '97)
The Virtual Shared Memory Performance of a Parallel Graph Reducer
CCGRID '02 Proceedings of the 2nd IEEE/ACM International Symposium on Cluster Computing and the Grid
High-level abstractions for parallel functional programming
High-level abstractions for parallel functional programming
Parallel and Distributed Haskells
Journal of Functional Programming
Algorithm + strategy = parallelism
Journal of Functional Programming
Thread migration in a parallel graph reducer
IFL'02 Proceedings of the 14th international conference on Implementation of functional languages
Parallel and Distributed Haskells
Journal of Functional Programming
CODACS Prototype: A Platform-Processor for CHIARA Programs
IPDPS '05 Proceedings of the 19th IEEE International Parallel and Distributed Processing Symposium (IPDPS'05) - Workshop 13 - Volume 14
Parallel functional programming in Eden
Journal of Functional Programming
A parallel SML compiler based on algorithmic skeletons
Journal of Functional Programming
Haskell on a shared-memory multiprocessor
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
Coordination language for distributed clean
Acta Cybernetica
Observing intermediate structures in a parallel lazy functional language
Proceedings of the 9th ACM SIGPLAN international conference on Principles and practice of declarative programming
A Debugger for Parallel Haskell Dialects
ICA3PP '08 Proceedings of the 8th international conference on Algorithms and Architectures for Parallel Processing
BSP Functional Programming: Examples of a Cost Based Methodology
ICCS '08 Proceedings of the 8th international conference on Computational Science, Part I
Asserting and checking determinism for multithreaded programs
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Runtime support for multicore Haskell
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Asserting and checking determinism for multithreaded programs
Communications of the ACM
A parallel framework for computational science
ICCS'03 Proceedings of the 2003 international conference on Computational science: PartII
DETERMIN: inferring likely deterministic specifications of multithreaded programs
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Parallel programming must be deterministic by default
HotPar'09 Proceedings of the First USENIX conference on Hot topics in parallelism
OoOJava: an out-of-order approach to parallel programming
HotPar'10 Proceedings of the 2nd USENIX conference on Hot topics in parallelism
A survey of algorithmic skeleton frameworks: high-level structured parallel programming enablers
Software—Practice & Experience - Focus on Selected PhD Literature Reviews in the Practical Aspects of Software Technology
OoOJava: software out-of-order execution
Proceedings of the 16th ACM symposium on Principles and practice of parallel programming
Testing speculative work in a lazy/eager parallel functional language
LCPC'05 Proceedings of the 18th international conference on Languages and Compilers for Parallel Computing
Generic Executable Semantics for D-Clean
Electronic Notes in Theoretical Computer Science (ENTCS)
DOJ: dynamically parallelizing object-oriented programs
Proceedings of the 17th ACM SIGPLAN symposium on Principles and Practice of Parallel Programming
Managing heterogeneity in a grid parallel haskell
ICCS'05 Proceedings of the 5th international conference on Computational Science - Volume Part II
OpenTS: an outline of dynamic parallelization approach
PaCT'05 Proceedings of the 8th international conference on Parallel Computing Technologies
Building an interface between eden and maple: a way of parallelizing computer algebra algorithms
IFL'03 Proceedings of the 15th international conference on Implementation of Functional Languages
Alias control for deterministic parallelism
Aliasing in Object-Oriented Programming
Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
Hi-index | 0.02 |
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: PMLS, 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 (PMLS).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.