BACKGROUND AND MOTIVATION
Consider the example program in Figure 1(a) that computes array A. The corresponding recursive version (Figure 1(a)) divides the work into four quadrants and computes
them recursively. The spawn and sync keywords in the recursive program represent the concurrency and synchronization annotations in a Cilk program. The dependences (a.k.a.
the spawn and sync annotations) in the recursive program
are induced by dependences in the loop program. The quadrant A00 begins execution of a given task. A01 and A10
depend on A00 and are separated from the processing of
A00 by a sync. A01 and A10 can themselves be processed
concurrently and are invoked with a spawn keyword without
any intervening synchronization. A11 depends on both A01
and A10 and is ordered appropriately.