The practice of using temporary scalar or array variables to store the results of common subexpressions presents several challenges to a parallelizing compiler. Not only does dependence analysis and, as a result, parallelization suffer; but existing techniques used for partitioning programs and generating communication for parallel execution on distributed-memory multicomputers also tend to break down. Techniques that have been developed over the years to compensate for this programming practice include scalar expansion, global forward substitution, and privatization, each of which has its own strengths and weaknesses. Compared to scalar expansion and global forward substitution privatization has the advantage of not causing an increase in memory requirements or operation counts, but when compiling for distributed-memory machines it causes several new problems to arise. We present a simple extension to a uniform array-region analysis framework that utilizes privatization information to partition loops and generate efficient communication, using the owner-computes rule, in the presence of temporary variables.
['Daniel J. Palermo', 'Ernesto Su', 'Eugene W. Hodges', 'Prithviraj Banerjee']
Compiler support for privatization on distributed-memory machines