Realisations for Non-Strict Languages
Parallel implementations of non-strict functional languages using graph reduction are all based on the following model:
The graph is held in one or more large heap memories (see below);
There are a number of processing agents each of which uses one or more (slightly modified) sequential abstract machines to execute a thread in order to evaluate some part of the graph to WHNF;
Threads that are not currently being executed reside in one or more thread pools — if they have not yet started evaluation, they are often called sparks (see below) and may reside in one or more separate spark pools;
Synchronisation is required whenever a thread requires the value of an expression that is currently being evaluated by another thread.
KeywordsParallel Machine Transition Rule Garbage Collection Abstract Machine Graph Reduction
Unable to display preview. Download preview PDF.