Dissertation Defense

Compiler and Runtime Techniques for Automatic Parallelization of Sequential Applications

Mojtaba Mehrara

Multicore designs have emerged as the mainstream design paradigm for the microprocessor industry. Unfortunately, providing multiple cores does not directly translate into performance for most applications. An attractive approach for exploiting multiple cores is to rely on tools, both compilers and runtime optimizers, to automatically extract threads from sequential applications. This dissertation tackles many challenges faced in automatic parallelization of sequential applications, including general-purpose applications written in C/C++ and client-side web applications written in JavaScript. First, a complete parallelizing compiler system for C/C++ is presented. This system successfully identifies parallelization opportunities in programs and transforms the code to a parallel version. A matching runtime system, STMlite, is introduced which monitors the parallelized program behavior, and fixes any misspeculations that might happen.

The second piece of work, focuses on a similar problem in a very different application domain, JavaScript programs running on the client's web browser. The nature of the JavaScript language and its target execution environments impose a completely different set of challenges that we intend to solve in this dissertation. We first propose the ParaScript parallelizing engine which identifies and speculatively parallelizes potentially parallel code segments while the code is running in the browser. A low-cost and highly customized speculation approach verifies the execution of the parallelized client-side code and rolls back in case of any misspeculation. In addition, we introduce ParaGuard, a technique which executes the runtime checks, required by the JavaScript compiler, in parallel with the main execution.

Sponsored by

S. Mahlke