Concurrent Polyglot: An Extensible Compiler Framework

Date

2011-07-14

Authors

Journal Title

Journal ISSN

Volume Title

Publisher

Computer Science & Engineering

Abstract

We have today crossed the threshold of increasing clock frequencies as the dominant solution to faster computing, and it is imperative for software developers to be able to think in the concurrent and parallel paradigm. Important still is to equip programmers with the right tools to develop concurrent and parallel software. Software concurrency is a widely researched area, and many of today's compilers concentrate on compiling for parallelism. However, although concurrent compilers have been explored since the 1970s, very few of them exist today that justify multicore environments. For instance, gmake [1] supports coarse grained parallelism through the -j option for building independent files in parallel. Our effort here brings into perspective a much finer grained approach: targeting the abstract syntax tree to extract opportunities for parallel and concurrent compilation. Polyglot is an extensible compiler framework. It allows the extension of Java in domainspecific ways into languages that may define their own new constructs. Compilation in Polyglot is sequential. The compiler uses only one core, even if additional cores are present. In order to fully utilize the power of the underlying hardware, we present here our efforts in making Polyglot concurrent. Parallelization of the compilation process can yield faster compilation times. It also presents the correctness and scalability challenges that make this a test bed for experimenting with various concurrency models. As part of the larger Polyglot project, we evaluate and present here the performance of Concurrent Polyglot against benchmarks and compare with the performance of Sequential Polyglot. We also present correctness of the output produced by Concurrent Polyglot.

Description

Keywords

Citation