Semantic foundations of commutativity analysis
This paper presents the semantic foundations of commutativity analysis, an analysis technique for automatically parallelizing programs written in a sequential, imperative programming language. Commutativity analysis views the computation as composed of operations on objects. It then analyzes the program at this granularity to discover when operations commute (i.e. generate the same result regardless of the order in which they execute). If all of the operations required to perform a given computation commute, the compiler can automatically generate parallel code. This paper shows that the basic analysis technique is sound. We have implemented a parallelizing compiler that uses commutativity analysis as its basic analysis technique; this paper also presents performance results from two automatically parallelized applications.
Unable to display preview. Download preview PDF.
- 2.J. Barnes and P. Hut. A hierarchical O(NlogN) force-calculation algorithm. Nature, pages 446–449, December 1976.Google Scholar
- 4.R. Kemmerer and S. Eckmann. UNISEX: a UNIx-based Symbolic EXecutor for pascal. Software—Practice and Experience, 15(5):439–458, May 1985.Google Scholar
- 5.M. Rinard and P. Diniz. Commutativity analysis: A new analysis framework for parallelizing compilers. Technical Report TRCS96-08, Dept. of Computer Science, University of California at Santa Barbara, May 1996.Google Scholar
- 6.M. Rinard and P. Diniz. Semantic foundations of commutativity analysis. Technical Report TRCS96-09, Dept. of Computer Science, University of California at Santa Barbara, May 1996.Google Scholar