How do programs become more concurrent: a story of program transformations

D Dig, J Marrero, MD Ernst - … of the 4th International Workshop on …, 2011 - dl.acm.org
D Dig, J Marrero, MD Ernst
Proceedings of the 4th International Workshop on Multicore Software Engineering, 2011dl.acm.org
In the multi-core era, programmers need to resort to parallelism if they want to improve
program performance. Thus, a major maintenance task will be to make sequential programs
more concurrent. Must concurrency be designed into a program, or can it be retrofitted later?
What are the most common transformations to retrofit concurrency into sequential programs?
Are these transformations random, or do they belong to certain categories? How can we
automate these transformations? To answer these questions we analyzed the source code …
In the multi-core era, programmers need to resort to parallelism if they want to improve program performance. Thus, a major maintenance task will be to make sequential programs more concurrent. Must concurrency be designed into a program, or can it be retrofitted later? What are the most common transformations to retrofit concurrency into sequential programs? Are these transformations random, or do they belong to certain categories? How can we automate these transformations?
To answer these questions we analyzed the source code of five open-source Java projects and looked at a total of 14 versions. We analyzed qualitatively and quantitatively the concurrency-related transformations. We found that these transformations belong to four categories: transformations that improve the responsiveness, the throughput, the scalability, or correctness of the applications. In 73.9% of these transformations, concurrency was retrofitted on existing program elements. In 20.5% of the transformations, concurrency was designed into new program elements. Our findings educate software developers on how to parallelize sequential programs, and provide hints for tool vendors about what transformations are worth automating.
ACM Digital Library