Harnessing the multicores: Nested data parallelism in Haskell

34Citations
Citations of this article
70Readers
Mendeley users who have this article in their library.

This article is free to access.

Abstract

If you want to program a parallel computer, a purely functional language like Haskell is a promising starting point. Since the language is pure, it is by-default safe for parallel evaluation, whereas imperative languages are by-default unsafe. But that doesn't make it easy! Indeed it has proved quite difficult to get robust, scalable performance increases through parallel functional programming, especially as the number of processors increases. A particularly promising and well-studied approach to employing large numbers of processors is data parallelism. Blelloch's pioneering work on NESL showed that it was possible to combine a rather flexible programming model (nested data parallelism) with a fast, scalable execution model (flat data parallelism). In this paper we describe Data Parallel Haskell, which embodies nested data parallelism in a modern, general-purpose language, implemented in a state-of-the-art compiler, GHC. We focus particularly on the vectorisation transformation, which transforms nested to flat data parallelism. © Peyton Jones, Leshchinskiy, Keller, Chakravarty.

Cite

CITATION STYLE

APA

Jones, S. P., Leshchinskiy, R., Keller, G., & Chakravarty, M. M. T. (2008). Harnessing the multicores: Nested data parallelism in Haskell. In Leibniz International Proceedings in Informatics, LIPIcs (Vol. 2, pp. 383–414). https://doi.org/10.1007/978-3-540-89330-1_10

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free