2016
DOI: 10.1017/s0956796816000071
|View full text |Cite
|
Sign up to set email alerts
|

Composable scheduler activations for Haskell

Abstract: The runtime for a modern, concurrent, garbage collected language like Java or Haskell is like an operating system: sophisticated, complex, performant, but alas very hard to change. If more of the runtime system were in the high level language, it would be far more modular and malleable. In this paper, we describe a novel concurrency substrate design for the Glasgow Haskell Compiler (GHC) that allows multicore schedulers for concurrent and parallel Haskell programs to be safely and modularly described as librar… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1

Citation Types

0
4
0

Year Published

2016
2016
2020
2020

Publication Types

Select...
2
2
1

Relationship

2
3

Authors

Journals

citations
Cited by 5 publications
(4 citation statements)
references
References 37 publications
(67 reference statements)
0
4
0
Order By: Relevance
“…Moreover, unlike our approach, the Par-monad is restricted to shared memory parallelism. Two separate lightweight implementations of concurrent Haskell have also been produced that lift scheduling and other concurrency features to the Haskell level (Li et al, 2007;Sivaramakrishnan et al, 2013). This complements our work, that instead focuses on the introduction and control of parallelism.…”
Section: Scheduling Support In Haskellmentioning
confidence: 76%
“…Moreover, unlike our approach, the Par-monad is restricted to shared memory parallelism. Two separate lightweight implementations of concurrent Haskell have also been produced that lift scheduling and other concurrency features to the Haskell level (Li et al, 2007;Sivaramakrishnan et al, 2013). This complements our work, that instead focuses on the introduction and control of parallelism.…”
Section: Scheduling Support In Haskellmentioning
confidence: 76%
“…In Multicore OCaml, the user-level thread schedulers themselves are expressed as OCaml libraries, thus minimising the secret sauce that gets baked into high-performance multicore runtime systems [31]. This modular design allows the scheduling policy to be changed by swapping out the scheduler library for a different one with the same interface.…”
Section: Motivationmentioning
confidence: 99%
“…However, implementing these features in the runtime system warrants that the scheduler itself be part of the runtime system, which is incompatible with our goal of writing thread schedulers in OCaml. Attempts to lift the scheduler from the runtime system to a library in the high-level language while retaining other features in the runtime system lead to further complications [31].…”
Section: Motivationmentioning
confidence: 99%
“…There has been much interest in lightweight threading models ranging from using runtime managed thread pools such as those found in C# (C# Language Specification, 2014) and the java.util.concurrent package (Lea, 1999), to continuation-based systems found in functional languages such as Scheme (Mohr et al, 1990;Kranz et al, 1989), CML (Reppy, 2007), Haskell (Sivaramakrishnan et al, 2013;Harris et al, 2005), and Erlang (Armstrong et al, 1996). Parasitic threads can be viewed as a form of lightweight threading, though there are a number of key differences.…”
Section: Lightweight Threadsmentioning
confidence: 99%