Skip to main content

Parallelizing loops with indirect array references or pointers

  • IV. Loop Parallelism
  • Conference paper
  • First Online:
Book cover Languages and Compilers for Parallel Computing (LCPC 1991)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 589))

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. H. Agrawal and J.R. Horgan. Dynamic program slicing. In Proc. SIGPLAN '90 Conf. Program. Lang. Design and Implement, pages 246–256, 1990.

    Google Scholar 

  2. A.V. Aho, J.E. Hopcroft, and J.D. Ullman. The Design and Analysis of Computer Algorithms. Addison-Wesley Publishing Company, 1974.

    Google Scholar 

  3. 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.

    Google Scholar 

  4. U. Banerjee. Data dependence in ordinary programs. Master's thesis, University of Illinois at Urbana-Champaign, November 1976.

    Google Scholar 

  5. U. Banerjee. Dependence Analysis for Supercomputing. Kluwer Academic Publishers, 1988.

    Google Scholar 

  6. 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.

    Google Scholar 

  7. 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.

    Google Scholar 

  8. Marina C. Chen. A design methodology for synthesizing parallel algorithms and architectures. Journal of Parallel and Distributed Computing, December 1986.

    Google Scholar 

  9. P. Debefve, F. Odeh, and A.E. Ruehli. Waveform Techniques, pages 41–127. Elsevier Science Publishers B.V., 1987.

    Google Scholar 

  10. 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.

    Google Scholar 

  11. M.R. Garey and D.S. Johnson. Computers and Intracrability A Guide to the Theory of NP-Completeness. 1979.

    Google Scholar 

  12. W.L. Harrison. Compiling Lisp for evaluation on a tightly coupled multiprocessor. Technical Report 565, University of Illinois at Urbana-Champaign, March 1986.

    Google Scholar 

  13. 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.

    Google Scholar 

  14. 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.

    Google Scholar 

  15. 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.

    Google Scholar 

  16. 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.

    Google Scholar 

  17. B. Korel and J. Laski. Dynamic program slicing. Information Processing Letters, 29:155–163, October 1988.

    Google Scholar 

  18. 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.

    Google Scholar 

  19. 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.

    Google Scholar 

  20. 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.

    Google Scholar 

  21. J. Li and M.C. Chen. Generating explicit communication from shared-memory program references. In Proc. Supercomputing '90, pages 865–876, 1990.

    Google Scholar 

  22. Z. Li and W. Abu-Sufah. On reducing data synchronization in multiprocessed loops. IEEE Trans. on Computer, C-36(1):105–109, January 1987.

    Google Scholar 

  23. 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.

    Google Scholar 

  24. L.C. Lu and M.C. Chen. Subdomain dependence test for massive parallelism. In Proc. Supercomputing '90, pages 962–972, 1990.

    Google Scholar 

  25. S.P. Midkiff and D.A. Padua. Compiler algorithms for synchronization. IEEE Trans. on Computer, C-36(12):1485–1495, December 1987.

    Google Scholar 

  26. 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.

    Google Scholar 

  27. 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.

    Google Scholar 

  28. 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.

    Google Scholar 

  29. 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.

    Google Scholar 

  30. 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.

    Google Scholar 

  31. 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.

    Google Scholar 

  32. M. Weiser. Program slicing. IEEE Trans. on Software Engineering, 10(4):352–357, July 1984.

    Google Scholar 

  33. M. Wolfe. Optimizing Supercompilers for Supercomputers. The MIT Press, 1989.

    Google Scholar 

  34. 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.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Utpal Banerjee David Gelernter Alex Nicolau David Padua

Rights and permissions

Reprints 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

Publish with us

Policies and ethics