Building parallel programming language constructs in the AbleC extensible C compiler framework

We are holding an AbleC tutorial at the ACM Symposium on the Principles and Practice of Parallel Programming (PPoPP) on Saturday, February 16, 2019.

This tutorial will teach participants how to create expressive language extensions to the ableC extensible C compiler framework. Specifically, it will cover

how to define new concrete syntax for extensions,

how to specify abstract syntax and type checking of extension constructs,

how to overload existing C operators for extension introduced types, and

how to easily specify the translation from extension constructs to their implementation in plain C.

We have re-implemented several parallel programming language features from the literature as extensions to ableC. This includes extensions based on the following:

Cilk-5; this ableC extension adds the Cilk features of spawn and sync . It translates cilk functions into the same slow and fast clones of the the Cilk-to-C translator and uses the MIT Cilk runtime as the target of this translation.

and . It translates functions into the same slow and fast clones of the the Cilk-to-C translator and uses the MIT Cilk runtime as the target of this translation. Halide; this ableC extension adds the explicit loop scheduling transformations as seen in Halide.

TACO; this ableC extension implements the efficient sparse tensor representations and operations as described in the Kjolstad’s OOPLSA 2017 “TACO” paper.

The 4-page tutorial abstract that appears in the PPoPP proceedings can be found here.

This tutorial focuses on implementing parallel programming language features as language extensions to ableC. Examples of such extensions can be found in

The PPoPP tutorial materials will all be posted here. This will be a more structured and complete version of the current ableC tutorials that can be found here.