• Home
  • Search
  • Low-pain, high-gain multicore programming in Haskell
  • Cite Icon2
  • https://doi.org/10.1145/1629635.1629639Copy DOI Icon

Low-pain, high-gain multicore programming in Haskell

Show More
  • Abstract
  • Literature Map
  • Citations
  • Similar Papers
Abstract

With the emergence of commodity multicore architectures, exploiting tightly-coupled parallelism has become increasingly important. Functional programming languages, such as Haskell, are, in principle, well placed to take advantage of this trend, offering the ability to easily identify large amounts of fine-grained parallelism. Unfortunately, obtaining real performance benefits has often proved hard to realise in practice. This paper reports on a new approach using middleware that has been constructed using the Eden parallel dialect of Haskell. Our approach is "low pain" in the sense that the programmer constructs a parallel program by inserting a small number of higher-order algorithmic skeletons at key points in the program. It is "high gain" in the sense that we are able to get good parallel speedups. Our approach is unusual in that we do not attempt to use shared memory directly, but rather coordinate parallel computations using a message-passing implementation. This approach has a number of advantages. Firstly, coordination, i.e. locking and communication, is both confined to limited shared memory areas, essentially the communication buffers, and is also isolated within well-understood libraries. Secondly, the coarse thread granularity that we obtain reduces coordination overheads, so locks are normally needed only on (relatively large) messages, and not on individual data items, as is often the case for simple shared-memory implementations. Finally, cache coherency requirements are reduced since individual tasks do not share caches, and can garbage collect independently. We report results for two representative computational algebra problems. Computational algebra is a challenging application area that has not been widely studied in the general parallelism community. Computational algebra applications have high computational demands, and are, in principle, often suitable for parallel execution, but usually display a high degree of irregularity in terms of both task and data structure. This makes it difficult to construct parallel applications that perform well in practice. Using our system, we are able to obtain both extremely good processor utilisation (97%) and very good absolute speedups (up to 7.7) on an eight-core machine.

Similar Papers
  • Book Chapter
  • Citations3

Functional Data Structures

  • Oct 28, 2004
  • Chris Okasaki
  • PDF
  • Research Article
  • Citations1

Artificial Intelligence in the American Healthcare Industry: Looking Forward to 2030

  • Oct 06, 2022
  • Journal of Medical Research and Surgery
  • Federico R Tewes
  • PDF
  • Research Article

ANALYSIS OF MECHANISMS AND EFFICIENCY OF SPECIALIZED LANGUAGES OF FUNCTIONAL PROGRAMMING

  • Dec 17, 2019
  • Science and Transport Progress
  • I M Storchak +1
  • Conference Article
  • Citations3

Formalization of operations and function definitions in a functional programming language for data structures

  • Jan 01, 1987
  • John C Thompson +1
  • PDF
  • Research Article
  • Citations6

Foundational Integration Verification of a Cryptographic Server

  • Jun 20, 2024
  • Proceedings of the ACM on Programming Languages
  • Andres Erbsen +6
  • Research Article
  • Citations101

Partial evaluation of functional logic programs

  • Jul 01, 1998
  • ACM Transactions on Programming Languages and Systems
  • María Alpuente +2
  • Research Article
  • Citations34

A multivector data structure for differential forms and equations

  • Nov 01, 2000
  • Mathematics and Computers in Simulation
  • Jeffrey A Chard +1
  • Book Chapter
  • Citations3

Support for Fine-Grained Synchronization in Shared-Memory Multiprocessors

  • Jan 01, 2011
  • Vladimir Vlassov +3
  • Conference Instance
  • Citations1

Proceedings of the 3rd ACM SIGPLAN workshop on Functional high-performance computing

  • Sep 03, 2014
  • Conference Article
  • Citations1

Contractive Functions on Infinite Data Structures

  • Aug 31, 2016
  • Venanzio Capretta +2
  • Research Article
  • Citations17

Data Structures and Algorithms for Counting Problems on Graphs using GPU

  • Jan 01, 2013
  • International Journal of Networking and Computing
  • Amlan Chatterjee +2
  • Book Chapter
  • Citations38

Concurrent clean

  • Jan 01, 1991
  • E G J M H Nöcker +3
  • Research Article
  • Citations5

Reversible Garbage Collection for Reversible Functional Languages

  • Jul 01, 2018
  • New Generation Computing
  • Torben Ægidius Mogensen
  • PDF
  • Conference Article
  • Citations6

Program Fusion with Paramorphisms

  • Jul 01, 2006
  • Electronic workshops in computing
  • Facundo Domínguez +1
  • Research Article
  • Citations2

Superfusion: Eliminating Intermediate Data Structures via Inductive Synthesis

  • Jun 20, 2024
  • Proceedings of the ACM on Programming Languages
  • Ruyi Ji +4
Cactus Communications logo

Copyright 2026 Cactus Communications. All rights reserved.