A Retargetable, Dynamic Compiler and Embedded Language

This is a technical paper accepted to the 2011 International Symposium on Code Generation and Optimization (CGO) conference. See the "Article Attachments" section on this page to download the PDF version.


Our ability to create systems with many cores is exceeding the average software developer’s ability to effectively program them. This is a problem that plagues our industry. Since the vast majority of the world’s software developers are not parallel programming experts, making it easy to write, port, and debug programs that operate on applications with ample data parallelism is essential to enabling the use of multi- and many-core processor architectures. However, those architectures and ISAs are also shifting and diversifying quickly, making it hard for a single  binary to run best on all possible targets. Because of this, retargetability and dynamic compilation are of growing relevance.

This paper introduces Array Building Blocks (ArBB), which is a retargetable dynamic compilation framework. This system focuses on making it easier to write and port programs so that they can harvest data and thread parallelism on both multicore and heterogeneous many-core architectures, while staying within standard C++. ArBB interoperates with other programming models to help meet the demands we hear from customers for a solution with both greater programmer productivity and good performance.

This work makes contributions in language features, compiler architecture, code transformations and optimizations. It presents performance data from our forthcoming beta release product, and quantitatively shows the impact of some key analyses, enabling transformations and optimizations for a variety of benchmarks that are of interest to our customers.

For more complete information about compiler optimizations, see our Optimization Notice.