Abstract
Multicore and NUMA architectures are becoming the dominant processor technology and functional languages are theoretically well suited to exploit them. In practice, however, implementing effective high level parallel functional languages is extremely challenging.
This paper is a systematic programming and performance comparison of four parallel Haskell implementations on a common multicore architecture. It provides a detailed analysis of the performance, and contrasts the programming effort that each language requires with the parallel performance delivered. The study uses 15 ’typical’ programs to compare a ‘no pain’, i.e. entirely implicit, parallel implementation with three ‘low pain’, i.e. semi-explicit, language implementations.
We report detailed studies comparing the parallel performance delivered. The comparative performance metric is speedup which normalises against sequential performance. We ground the speedup comparisons by reporting both sequential and parallel runtimes and efficiencies for three of the languages. To measure the programming effort required by each language we record the number of programs improved and the relative and absolute program changes required to coordinate the parallelism.
The results of the study are encouraging and, on occasion, surprising. We find that fully implicit parallelism as implemented in FDIP cannot yet compete with semi-explicit parallel approaches. Semi-explicit parallelism shows encouraging speedup for many of the programs in the test suite. Languages with implementations designed for distributed memory architectures perform surprisingly well given their high message-passing costs. This leads us to speculate that, as the number of cores grow, implementations with some form of independent heap will outperform those with shared heaps.
This paper is a systematic programming and performance comparison of four parallel Haskell implementations on a common multicore architecture. It provides a detailed analysis of the performance, and contrasts the programming effort that each language requires with the parallel performance delivered. The study uses 15 ’typical’ programs to compare a ‘no pain’, i.e. entirely implicit, parallel implementation with three ‘low pain’, i.e. semi-explicit, language implementations.
We report detailed studies comparing the parallel performance delivered. The comparative performance metric is speedup which normalises against sequential performance. We ground the speedup comparisons by reporting both sequential and parallel runtimes and efficiencies for three of the languages. To measure the programming effort required by each language we record the number of programs improved and the relative and absolute program changes required to coordinate the parallelism.
The results of the study are encouraging and, on occasion, surprising. We find that fully implicit parallelism as implemented in FDIP cannot yet compete with semi-explicit parallel approaches. Semi-explicit parallelism shows encouraging speedup for many of the programs in the test suite. Languages with implementations designed for distributed memory architectures perform surprisingly well given their high message-passing costs. This leads us to speculate that, as the number of cores grow, implementations with some form of independent heap will outperform those with shared heaps.
Originalsprog | Engelsk |
---|---|
Titel | Trends in Functional Programming 10 |
Redaktører | Zoltán Horváth, Viktória Zsók, Peter Achten, Pieter Koopman |
Antal sider | 16 |
Forlag | Intellect |
Publikationsdato | 2011 |
Sider | 49-64 |
Kapitel | 4 |
ISBN (Trykt) | 978-1-84150-158-1 |
ISBN (Elektronisk) | 978-1-84150-442-1 |
Status | Udgivet - 2011 |
Begivenhed | 10th Symposium on Trends in Functional Programming - Selye János University, Komárno, Slovakiet Varighed: 2 jun. 2009 → 4 jun. 2009 Konferencens nummer: 10 |
Konference
Konference | 10th Symposium on Trends in Functional Programming |
---|---|
Nummer | 10 |
Lokation | Selye János University |
Land/Område | Slovakiet |
By | Komárno |
Periode | 02/06/2009 → 04/06/2009 |