CnC-Scala: a Declarative Approach to Multicore Parallelism

Speaker: 
Shams Imam
Bio: 
Shams Imam is a graduate student in the Department of Computer Science at Rice University working under Prof. Vivek Sarkar in the Habanero Multicore Software Research Project. His research interests include Parallel Programming Models and Runtime Systems. He has also been involved in projects such as Habanero-Java, Habanero-Scala, and CnC-Python.
Type: 
Technical Talk

We introduce CnC-Scala (CS), a pure Scala implementation of Intel's Concurrent Collections programming model. Extracting parallelism from applications often involves the use of low-level primitives such as locks and threads, and the associated problems of data races and nondeterminism. In contrast, CS allows programmers to express their application logic using a graphical coordination language to compose units of sequential Scala code, with control and data dependences expressed in a simple declarative manner. Thus, CS makes parallel programming accessible to a broad class of programmers who are not trained in parallel programming. Given these declarative constraints, it is the responsibility of the compiler and runtime system to extract parallelism and performance from the application, for a given hardware platform. CS is implemented using a new Scala-based runtime system based on one-shot delimited continuations to avoid thread blocking operations.