This Article 
 Bibliographic References 
 Add to: 
The Combining DAG: A Technique for Parallel Data Flow Analysis
August 1994 (vol. 5 no. 8)
pp. 805-813

As the number of available multiprocessors increases, so does the importance of providing software support for these systems, including parallel compilers. Data flow analysis, an important component of software tools, may be computed many times during the compilation of a program, especially when compiling for a multiprocessor. Althoughconverting a sequential data flow algorithm to a parallel algorithm can present someopportunities for computing data flow in parallel, more parallelism can be exposed by thedevelopment of new parallel data flow algorithms. We present a technique that computesrapid data flow problems in parallel and thus is applicable for commonly used classicaldata flow problems, including reaching definitions, reachable uses, available expressions,and very busy expressions. Unlike previous techniques, our technique exploits theinherent parallelism in the data flow computation that occurs across independent paths,within linear paths, and in paths through loops of a control flow graph. The technique first changes cyclic structures in a control flow graph to acyclic structures and then builds a combining directed acyclic graph (DAG) that represents the paths through the control flow graph needed to compute data flow. Data flow is then computed using two passesover the DAG by computing the data flow for the nodes on each level of the DAG inparallel. We also present experimental results comparing the performance of our algorithm with a sequential algorithm and a parallelized sequential algorithm.

[1] F. E. Allen and J. Cocke, "A program data flow analysis procedure,"CACM, vol. 19, no. 3, Mar. 1977.
[2] T. R. Allen and D. A. Padua, "Debugging Fortran on a shared memory machine,"Proc. Int. Conf. Parallel Processing, 1987, pp. 721-727.
[3] D. Callahan, K. Kennedy, and J. Subhlok, "Analysis of event synchronization in a parallel programming tool," inProc. Second ACM SIGPLAN Symp. Principles Practice Parallel Programming, Seattle, WA, Mar. 1990.
[4] P. A. Emrath and D. A. Padua, "Automatic detection of nondeterminacy in parallel programs," inProc. Workshop Parallel and Distributed Debugging, May 1988, pp. 89-99.
[5] P. G. Frankl and E. J. Weyuker, "An applicable family of data flow testing criteria,"IEEE Trans. Software Eng., vol. 14, pp. 1483-1498, Oct. 1988.
[6] T. Gross, A. Zobel, and M. Zolg, "Parallel compilation for a parallel machine,"Proc. SIGPLAN'89 Conf. Programming Language Design and Implementation, 1989, pp. 91-100.
[7] R. Gupta, L. L. Pollock, and M. L. Soffa, "Parallelizing data flow analysis,"Workshop on Parallel Compilation, Kingston, ON, Canada, 1990.
[8] M. J. Harrold and M. L. Soffa, "Interprocedural data flow testing,"Proc. Software Testing, Analysis, and Verification Symp., 1989, pp. 158-167.
[9] J. B. Kam and J. D. Ullman, "Global data flow analysis and iterative algorithms,"J. ACM, vol. 23, no. 1, pp. 158-171, Jan. 1976.
[10] J. B. Kam and J. D. Ullman, "Monotone data flow analysis frameworks,"Acta Informatica, vol. 7, pp. 305-317, 1977.
[11] K. W. Kennedy, "Node listings applied to data flow analysis,"Conf. Record 2nd ACM Symp. Principles of Programming Languages, 1975, pp. 10-21.
[12] Y.-F. Lee, T. J. Marlowe, and B. G. Ryder, "Experiences with a parallel algorithm for data flow analysis,"J. Supercomputing, vol. 5, pp. 163-188, Oct. 1991.
[13] T. J. Marlowe and B. G. Ryder, "An efficient hybrid algorithm for incremental data flow analysis,"Conf. Record ACM Symp. Principles of Programming Languages, 1990, pp. 184-196.
[14] B. P. Miller, and J.-D. Choi, "A mechanism for efficient debugging of parallel programs," inProc. ACM SIGPLAN '88 Conf. Programming Language Design and Implementation, June 1988, pp. 135-144.
[15] B. Ryder, "ISMM: Incremental software maintenance manager,"Proc. Conf. Software Maintenance, 1989, pp. 142-164.
[16] V. Sarkar and J. Hennessy, "Compile-time partitioning and scheduling of parallel programs," inProc. SIGPLAN Symp. Compiler Construction, July 1986, pp. 17-26.
[17] V. Seshadri, D. B. Wortman, M. D. Junkin, S. Weber, C. P. Yu, and I. Samll, "Semantic analysis in a concurrent compiler,"Proc. SIGPLAN'88 Conf. Programming Language Design and Implementation, 1988, pp. 298-312.
[18] A. Zobel, "Parallel compiler optimization,"Workshop on Parallel Compilation, Kingston, ON, Canada, 1990.

Index Terms:
Index Termsdirected graphs; parallel programming; program compilers; parallel algorithms; parallel processing; DAG; parallel data flow analysis; multiprocessors; parallel compilers; software tools; sequential data flow algorithm; parallel algorithm; parallel data flow algorithms; rapid data flow problems; control flow graph; cyclic structures; combining directed acyclic graph; performance; sequential algorithm; parallelized sequential algorithm
R. Kramer, R. Gupta, M.L. Soffa, "The Combining DAG: A Technique for Parallel Data Flow Analysis," IEEE Transactions on Parallel and Distributed Systems, vol. 5, no. 8, pp. 805-813, Aug. 1994, doi:10.1109/71.298205
Usage of this product signifies your acceptance of the Terms of Use.