BSP in a Lazy Functional Context

The BSP model of computing allows parallel programs to be ported to a wide range of architectures with predictable runtime performance. We show how BSP may be implemented in a Haskell library in a way that preserves the cost predictability, and avoids the synchronisation-matching problem of low-level BSP. The library comprises interchangeable components, from which sequential and parallel implementations may be constructed, with a choice of local features including runtime cost-measurement.