Abstract
This paper presents a hybrid compiler/run-time approach for parallelizing loops with indirections and pointers. A scheduler is generated by the compiler based on information deduced from dependence analysis and program slicing. At run-time, the scheduler records dynamic dependences and allocates work to processors based on the run-time reference patterns. The central point is that compiler analysis can help to make the overhead incurred by the run-time scheduler insignificantly low. Two new techniques are developed: (1) scheduler generation using program slicing and dependence, recording procedures, and (2) redundant reference elimination for reducing both the space and time required to record the dynamic references. The effectiveness of this approach is demonstrated by parallelizing a waveform-relaxation-based circuit simulator, which is a 12,000-line C program.
Preview
Unable to display preview. Download preview PDF.
References
H. Agrawal and J.R. Horgan. Dynamic program slicing. In Proc. SIGPLAN '90 Conf. Program. Lang. Design and Implement, pages 246–256, 1990.
A.V. Aho, J.E. Hopcroft, and J.D. Ullman. The Design and Analysis of Computer Algorithms. Addison-Wesley Publishing Company, 1974.
J.R. Allen and K. Kennedy. Automatic translation of fortran programs to vector form. ACM Trans. on Programming Languages and Systems, 9(4):491–542, October 1987.
U. Banerjee. Data dependence in ordinary programs. Master's thesis, University of Illinois at Urbana-Champaign, November 1976.
U. Banerjee. Dependence Analysis for Supercomputing. Kluwer Academic Publishers, 1988.
M. Burke and R. Cytron. Interprocedural dependence analysis and parallelization. In Proceedings of the SIGPLAN'86 Symposium on Compiler Construction, pages 162–175. ACM, 1986.
D.R. Chase, M. Wegman, and F.K. Zadeck. Analysis of pointers and structures. In Proc. SIGPLAN '90 Conf. Program. Lang. Design and Implement., pages 296–310, 1990.
Marina C. Chen. A design methodology for synthesizing parallel algorithms and architectures. Journal of Parallel and Distributed Computing, December 1986.
P. Debefve, F. Odeh, and A.E. Ruehli. Waveform Techniques, pages 41–127. Elsevier Science Publishers B.V., 1987.
Z. Fang, P. Tang, P.C. Yew, and C.Q. Zhu. Dynamic processor self-scheduling for general parallel nested loops. IEEE Trans. on Computers, 39(7):919–929, July 1990.
M.R. Garey and D.S. Johnson. Computers and Intracrability A Guide to the Theory of NP-Completeness. 1979.
W.L. Harrison. Compiling Lisp for evaluation on a tightly coupled multiprocessor. Technical Report 565, University of Illinois at Urbana-Champaign, March 1986.
L.J. Hendren and A. Nicolau. Parallelizing programs with recursive data structures. IEEE Trans. on Parallel and Distributed Systems, 1(1):35–47, January 1990.
S. Horwitz, P. Pfeiffer, and T. Reps. Dependence analysis for pointer variables. In Proc. SIGPLAN '89 Conf. Program. Lang. Design and Implement., pages 28–40, 1988.
S. Horwitz, T. Reps, and D. Binkley. Interprocedural slicing using dependence graph. ACM Trans. on Programming Languages and Systems, 12(1):26–60, Jan. 1990.
N.D. Jones and S. Muchnick. A flexible approach to interprocedural data flow analysis and programs with recursive data structures. In 9th ACM Symp. Principles Program. Lang., pages 66–74, 1982.
B. Korel and J. Laski. Dynamic program slicing. Information Processing Letters, 29:155–163, October 1988.
V.P. Krothapalli and P. Sadayappan. Removal of redundant dependences in DOACROSS loops with constant dependences. In Proc. of the Third ACM SIGPLAN Symposium on Principles & Practice of Parallel Programming, pages 51–60, 1991.
J.R. Larus and P.N. Hilfinger. Detecting conflicts between structure accesses. In Proc. SIGPLAN '88 Conf. Program. Lang. Design and Implement., pages 21–34, 1988.
J.R. Larus and P.N. Hilfinger. Restructuring Lisp programs for concurrent execution. In ACM/SIGPLAN PPEALS Parallel Program.: Exp. Appl. Lang. Syst., pages 100–110, 1988.
J. Li and M.C. Chen. Generating explicit communication from shared-memory program references. In Proc. Supercomputing '90, pages 865–876, 1990.
Z. Li and W. Abu-Sufah. On reducing data synchronization in multiprocessed loops. IEEE Trans. on Computer, C-36(1):105–109, January 1987.
Z. Li, P.C. Yew, and C.Q. Zhu. An efficient data dependence analysis for parallelizing compilers. IEEE Trans. on Parallel and Distributed Systems, 1(1):26–34, January 1990.
L.C. Lu and M.C. Chen. Subdomain dependence test for massive parallelism. In Proc. Supercomputing '90, pages 962–972, 1990.
S.P. Midkiff and D.A. Padua. Compiler algorithms for synchronization. IEEE Trans. on Computer, C-36(12):1485–1495, December 1987.
R. Mirchandaney, J.H. Saltz, R.M. Smith, D.M. Nicol, and K. Crowley. Principles of runtime support for parallel processors. In Proc. 1988 ACM Int'l. Conf. Supercomput., pages 140–152, July 1988.
C.D. Polychronopoulos and D.J. Kuck. Guided self-scheduling: A pratical scheduling scheme for parallel supercomputers. IEEE Trans. on Computers, C-36(12):1425–1439, Dec. 1987.
J.H. Saltz and M.C. Chen. Automated problem mapping: the crystal run-time system. In The Proceedings of the Conference on Hypercube Microprocessors, Knoxville, TN, September 1986.
J.H. Saltz, K. Crowley, R. Mirchandaney, and H. Berryman. Run-time scheduling and execution of loops on message passing machines. J. Parallel Distributed Comput., 8:303–312, April 1990.
J.H. Saltz, R. Mirchandaney, and K. Crowley. Run-time parallelization and scheduling of loops. IEEE Trans. on Computers, 40(5):603–612, May 1991.
P. Tang, P.C. Yew, and C.Q. Zhu. Impact of self-scheduling order on performance of multiprocessor systems. In Proc. 1988 ACM Int'l. Conf. Supercomput., pages 593–603, July 1988.
M. Weiser. Program slicing. IEEE Trans. on Software Engineering, 10(4):352–357, July 1984.
M. Wolfe. Optimizing Supercompilers for Supercomputers. The MIT Press, 1989.
C.Q. Zhu and P.C. Yew. A scheme to enforce data dependence on large multiprocessor systems. IEEE Trans. on Computer, C-36(6):726–739, June 1987.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1992 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Lu, L.C., Chen, M. (1992). Parallelizing loops with indirect array references or pointers. In: Banerjee, U., Gelernter, D., Nicolau, A., Padua, D. (eds) Languages and Compilers for Parallel Computing. LCPC 1991. Lecture Notes in Computer Science, vol 589. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0038666
Download citation
DOI: https://doi.org/10.1007/BFb0038666
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-55422-6
Online ISBN: 978-3-540-47063-2
eBook Packages: Springer Book Archive