A Provable Time and Space Efficient Implementation of NESL

Abstract:
In this paper we prove time and space bounds for the implementation of
the programming language NESL on various parallel machine models.
NESL is a sugared typed lambda-calculus with a set of array
primitives and an explicit parallel map over arrays. Our results
extend previous work on provable implementation bounds for functional
languages by considering space and by including arrays. For modeling
the cost of NESL we augment a standard call-by-value operational
semantics to return two cost measures: a DAG representing the
sequential dependences in the computation, and a measure of the space
taken by a sequential implementation. We show that a NESL program
with w work (nodes in the DAG), d depth (levels in the DAG), and
s sequential space can be implemented on a p processor
butterfly network, hypercube, or CRCW PRAM using
O(w/p + d log p) time and O(s + d p log p)
reachable space. For programs with
sufficient parallelism these bounds are optimal in that they give
linear speedup and use space within a constant factor of the
sequential space.

Note that this online version corrects some typographical errors, mostly in
Figure 8.