gibbon-0.3: A compiler for operating on serialized data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Gibbon.Passes.ParAlloc

Description

Do all things necessary to compile parallel allocations to a single region.

In the sequential semantics, (letloc-after x) can only run after x is written to the store. In the parallel version, we relax this requirement. Every letloc-after leads to creation of a new region, and we later tie things together with pointers.

let x = spawn (foo [l1]) letloc l2 = after x let y = foo [l2] _ = sync

will be transformed to:

let x = spawn (foo [l1]) letregion r3 letloc l3 = start r3 let y = foo [l3] _ = sync letloc l2 = after x tie l2 l3

Need a better name for this pass.

Documentation