Composition & Coordination Language (C&CL)
We will develop a language for specifying high-level program composition and coordination to provide programmers with a programming model that is safe and efficient. The language will include support for parallelism patterns, such as divide-and-conquer [Blumofe, Joerg et al. 1995], MapReduce [Dean 2006], data-driven execution [Kale and Krishnan 1996; Cicotti and Baden 2006], and data parallelism [Blelloch, Chatterjee et al. 1994; Charles, Donawa et al. 2005; Chamberlain, Callahan et al. 2007]. The language will also support the specification of side effects on functions and a rich set of data partitioning operations for shared data structures [Lucassen and Gifford 1988; Clarke, Potter et al. 1998]. The research products will be a language definition, analyses to ensure lack of concurrency errors [Cheng, Feng et al. 1998; Naik, Aiken et al. 2006; Kamil and Yelick 2007], runtime techniques for composing schedulers within various frameworks, and a prototype implementation that runs on existing multicore platforms and our own manycore design. We will develop use the coordination and composition language to build domain-specific application frameworks for our driving applications, e.g., a parallel streaming/pipe-and-filter environment for media applications (audio or image) with transformations based on spectral and structured grid libraries.
(Objective: The overarching goal of the work is that we demonstrate the creation of multiple application frameworks, which demonstrate 10X productivity improvements over handcrafted parallel implementations.)
Note: Please see the SEJITS Research Project description for the continuation of this work.