The Community for Technology Leaders
RSS Icon
Issue No.01 - January/February (2011 vol.28)
pp: 17-22
Danny Dig , University of Illinois at Urbana-Champaign
In the multicore era, a major programming task will be to make programs more parallel. This is tedious because it requires changing many lines of code; it's also error-prone and nontrivial because programmers need to ensure noninterference of parallel operations. Fortunately, interactive refactoring tools can help reduce the analysis and transformation burden. The author describes how refactoring tools can improve programmer productivity, program performance, and program portability. The article also describes a toolset that supports several refactorings for making programs thread-safe, threading sequential programs for throughput, and improving scalability of parallel programs.
refactoring, parallelism, concurrency
Danny Dig, "A Refactoring Approach to Parallelism", IEEE Software, vol.28, no. 1, pp. 17-22, January/February 2011, doi:10.1109/MS.2011.1
1. D.J. Kuck, "Automatic Program Restructuring for High-Speed Computation," Proc. Conf. Analysing Problem Classes and Programming for Parallel Computing, Springer, 1981, pp. 66–84.
2. F. Allen et al., "An Overview for the Ptran Analysis System for Multiprocessing," J. Parallel and Distributed Computing, vol. 5, no. 5, 1988, pp. 617–640.
3. R. Allen, D. Callahan, and K. Kennedy, "Automatic Decomposition of Scientific Programs for Parallel Execution," Proc. 14th ACM SIGACT-SIGPLAN Symp. Principles of Programming Languages, ACM Press, 1987, pp. 63–76.
4. S.P. Amarasinghe et al., "An Overview of a Compiler for Scalable Parallel Machines," Proc. 6th Int'l Workshop Languages and Compilers for Parallel Computing, Springer, 1993, pp. 253–272.
5. K. Kennedy, K.S. McKinley, and C.W. Tseng, "Interactive Parallel Programming Using the Parascope Editor," IEEE Trans. Parallel and Distributed Systems, vol. 2, no. 3, 1991, pp. 329–341.
6. S.-W. Liao et al., "Suif Explorer: An Interactive and Interprocedural Parallelizer," Proc. 7th ACM SIGPLAN Symp. Principles and Practice of Parallel Programming, ACM Press, 1999, pp. 37–48.
7. D. Dig, J. Marrero, and M.D. Ernst, "Refactoring Sequential Java Code for Concurrency via Concurrent Libraries," Proc. 31st Int'l Conf. Software Eng. (ICSE), IEEE Press, 2009, pp. 397–407.
8. F. Kjolstad et al., "Refactoring for Immutability," to appear in Proc. 33rd Int'l Conf. Software Eng. (ICSE), IEEE Press, 2011.
9. D. Dig et al., ReLooper: Refactoring for Loop Parallelism, tech. report, Dept. Computer Science, Univ. of Illinois at Urbana-Champaign, Sept. 2009;
10. J. Wloka, M. Sridharan, and F. Tip, "Refactoring for Reentrancy," Proc. 7th Joint Meeting European Soft. Eng Conf. and the Int'l. Symp. Foundations Software Eng. (ESEC/FSE), ACM Press, 2009, pp. 173–182.
11. R. Fuhrer and V. Saraswat, "Concurrency Refactoring for x10," Proc. 3rd ACM Workshop Refactoring Tools, ACM Press, 2009.
12. M. Méndez et al., "A Catalog and Classification of Fortran Refactorings," Proc. 11th Symp. Software Eng. (ASSE 2010), 2010;
13. D. Dig, J. Marrero, and M. D. Ernst, "How Do Programs Become more Concurrent? A Story of Program Transformations," tech. report, Computer Science and Artificial Intelligence Laboratory, MIT, Sept. 2008;
14. D. Lea, Concurrent Programming in Java, Addison-Wesley, 2000.
15. B. Goetz et al., Java Concurrency in Practice, Addison-Wesley, 2006.
18 ms
(Ver 2.0)

Marketing Automation Platform Marketing Automation Tool