In the multicore era, a major programming task is to make existing sequential programs parallel. One approach to parallelizing an existing sequential program is to rewrite it from scratch. However, the most common way is to parallelize a program incrementally, by changing the existing code. Each small step can be seen as a behavior-preserving transformation, i.e., a refactoring. While refactoring is more economical than rewriting, it is still tedious because it requires changing many lines of code, and it is error-prone and non-trivial because programmers need to ensure non-interference of parallel operations.

This project aims to significantly enrich educational resources and programmers' toolset for refactoring sequential programs for parallelism and improving the performance of already parallel programs. The PIs plan to pursue research activities in three areas: (1) mining refactorings by studying the evolution of widely used open-source programs; (2) automating refactorings for parallelism that programmers frequently use; and (3) suggesting refactorings that offer several candidate programs with different trade-offs in terms of performance or thread-safety. This project has the potential to revolutionize how programmers parallelize software, to educate them about successful parallelization techniques, and to significantly reduce the cost and increase the quality of their code.

Project Start
Project End
Budget Start
2012-09-01
Budget End
2014-05-31
Support Year
Fiscal Year
2012
Total Cost
$250,000
Indirect Cost
Name
University of Illinois Urbana-Champaign
Department
Type
DUNS #
City
Champaign
State
IL
Country
United States
Zip Code
61820