Skip to main content

Automatic Array Privatization

  • Chapter
  • First Online:
Compiler Optimizations for Scalable Parallel Systems

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

Summary

This chapter discusses techniques for automatic array privatization developed as part of the Polaris project at the University of Illinois at Urbana-Champaign. Array privatization is one of the most important transformations for effective program parallelization.

The array privatization problem is formulatedas data flow equations involving sets of scalars andarra y regions. A single-pass algorithm to solve these data flow equations is introduced. Finally, this chapter presents a demand-driven symbolic analysis algorithm to manipulate array regions whose bounds are represented by symbolic expressions.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Z. Ammarguellat and W. L. Harrison. Automatic recognition of induction variables andrecurrence relations by abstract interpretation. In Proc. of the ACM SIGPLAN’90 Conference on Programming Language Design and Implementation, pages 283–295. ACM Press, New York, 1990.

    Google Scholar 

  2. A. V. Aho, R. Sethi, and J.D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 1986.

    Google Scholar 

  3. B. Alpern, M. N. Wegman, and F. K. Zadeck. Detecting equality of variables in programs. In Proc. of the 15th ACM SIGPLAN Symposium on Principles of Programming Languages, pages 1–11. ACM Press, New York, 1988.

    Chapter  Google Scholar 

  4. Utpal Banerjee. Dependence Analysis for Supercomputing. Kluwer Academic Publishers, 1988.

    Google Scholar 

  5. M. Burke, R. Cytron, J. Ferrante, and W. Hsieh. Automatic generation of nested, fork-join parallelism. Journal of Supercomputing, pages 71–88, 1989.

    Google Scholar 

  6. William Blume and Rudolf Eigenmann. Symbolic analysis techniques needed for the effective parallelization of the perfect benchmarks. Technical Report 1332, Univ. of Illinois at Urbana-Champaign, Cntr. for Supercomputing Res. & Dev., January 1994.

    Google Scholar 

  7. William Blume and Rudolf Eigenmann. The Range Test: A Dependence Test for Symbolic, Non-linear Expressions. In Proceedings of Supercomputing’94, November 1994, Washington D.C., pages 528–537. IEEE Computer Society Press, Los Alamitos, CA, November 1994.

    Google Scholar 

  8. [BEF+94]_Bill Blume, Rudolf Eigenmann, Keith Faigin, John Grout, Jay Hoeflinger, David Padua, Paul Petersen, Bill Pottenger, Lawrence Rauchwerger, Peng Tu, and Stephen Weatherford. Polaris: The Next Generation in Parallelizing Compilers. In K. Pingali, U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Lecture Notes in Computer Science No. 892: Languages and Compilers for Parallel Computing, 7th Int’l. Workshop. Ithaca, NY, pages 141–154. Springer-Verlag, August 1994.

    Chapter  Google Scholar 

  9. R. Ballance, A. Maccabe, and K. Ottenstein. The program dependence web: a representation supporting control-, data-, and demand-driven interpretation of imperative languages. In Proceedings of the ACM SIGPLAN’90 Conference on Programming Language Design and Implementatio, pages 257–271. ACM Press, New York, June 1990.

    Google Scholar 

  10. Ron Cytron and Jeanne Ferrante. What’s in a name? or the value of renaming for parallelism detection and storage allocation. In Proc. 1987 International Conf. on Parallel Processing, pages 19–27. The Pennsylvania State University Press, August 1987.

    Google Scholar 

  11. [CFR+91]_Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck. Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems, 13(4):451–490, October 1991.

    Article  Google Scholar 

  12. P. Cousot and N. Halbwachs. Automatic discovery of linear restraints among variables of a program. In Proceedings of the 5th Annual ACM Symposium on Principles of Programming Languages, pages 84–97. ACM Press, New York, January 1978.

    Chapter  Google Scholar 

  13. P. Cousot and N. Halbwachs. Abstract interpretation and application to logic programs. Journal of Logic Programming, 13(2–3):103–179, 1992.

    Article  MATH  MathSciNet  Google Scholar 

  14. T. E. Cheatham, G. H. Holloway, and J. A. Townley. Symbolic evaluation andt he analysis of programs. IEEE Transactions on Software Engineering, 5(4):402–417, 1979.

    Article  Google Scholar 

  15. D. Callahan and K. Kennedy. Analysis of interprocedural side effects in a parallel programming environment. Journal of Parallel and Distributed Computing, 5:517–550, 1988.

    Article  Google Scholar 

  16. D. Callahan and K. Kennedy. Compiling programs for distributedmemory multiprocessors. Journal of Supercomputing, 2:151–169, October 1988.

    Article  Google Scholar 

  17. L. A. Clarke and D. J. Richardson. Applications of symbolic evaluation. Journal of Systems and Software, 5(1):15–35, 1985.

    Article  Google Scholar 

  18. Rudolf Eigenmann, Jay Hoeflinger, Zhiyuan Li, and David Padua. Experience in the Automatic Parallelization of Four Perfect-Benchmark Programs. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Lecture Notes in Computer Science No. 589: Languages and Compilers for Parallel Computing, 4th Int’l. Workshop, Santa Clara, CA, pages 65–83. Springer-Verlag, August 1991.

    Chapter  Google Scholar 

  19. P. Feautrier. Array expansion. In Proc. 1988 ACM Int’l Conf. on Supercomputing, pages 429–441. ACM Press, New York, July 1988.

    Google Scholar 

  20. J. Ferrante, K. J. Ottenstein, and J. D. Warren. The program dependency graph and its uses in optimization. ACM Transactions on Programming Languages and Systems, 9(3):319–349, June 1987.

    Article  MATH  Google Scholar 

  21. M. P. Gerlek, E. Stoltz, and M. Wolfe. Beyondi nduction variables: Detecting and classifying sequences using a demand-driven ssa form. ACM Transactions on Programming Languages and Systems.

    Google Scholar 

  22. Paul Havlak. Construction of thinnedgat ed single-assignment form. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Lecture Notes in Computer Science No. 768: Languages and Compilers for Parallel Computing, 6th Int’l. Workshop. Portland, OR, pages 477–499. Springer-Verlag, August 1993.

    Google Scholar 

  23. M. R. Haghighat and C. D. Polychronopoulos. Symbolic program analysis andop timization for parallelizing compilers. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Lecture Notes in Computer Science No. 757: Languages and Compilers for Parallel Computing, 5th Int’l. Workshop. New Haven, CT, pages 538–562. Springer-Verlag, August 1992.

    Google Scholar 

  24. Zhiyuan Li. Array privatization for parallel execution of loops. In Proc. 1992 ACM Int’l Conf. on Supercomputing, pages 313–322. ACM Press, New York, 1992.

    Google Scholar 

  25. D. E. Maydan, S. P. Amarasinghe, and M. S. Lam. Data dependence andd ata-flow analysis of arrays. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Lecture Notes in Computer Science No. 757: Languages and Compilers for Parallel Computing, 5th Int’l. Workshop. New Haven, CT, pages 434–448. Springer-Verlag, August 1992.

    Google Scholar 

  26. J. H. Morris and B. Wegbreit. Subgoal induction. Communication of ACM, 20(4):209–222, 1977.

    Article  MATH  MathSciNet  Google Scholar 

  27. D. Padua and M. Wolfe. Advanced compiler optimizations for supercomputers. Communications of the ACM, 29(12):1184–1201, December 1986.

    Article  Google Scholar 

  28. A. Rogers and K. Pingali. Process decomposition through locality of reference. In Proc. the ACM SIGPLAN’ 89 Conference on Program Language Design and Implementation. ACM Press, New York, June 1989.

    Google Scholar 

  29. B. K. Rosen, M. N. Wegman, and F. K. Zadeck. Global value numbers and redundant computation. In Proc. of the 15th ACM SIGPLAN Symposium on Principles of Programming Languages, pages 12–27. ACM Press, New York, 1988.

    Chapter  Google Scholar 

  30. Peng Tu and David Padua. Array privatization for shared and distributed memory machines. In Proc. 2nd Workshop on Languages, Compilers, and Run-Time Environments for Distributed Memory Machines, in ACM SIGPLAN Notices, January 1993.

    Google Scholar 

  31. Peng Tu and David Padua. Automatic array privatization. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Lecture Notes in Computer Science No. 768: Languages and Compilers for Parallel Computing, 6th Int’l. Workshop. Portland, OR, pages 500–521. Springer-Verlag, August 1993.

    Google Scholar 

  32. Peng Tu and David Padua. Efficient Building and Placing of Gating Functions. Proceedings of the SIGPLAN’95 Conference on Programming Language Design and Implementation, June 1995, 1994.

    Google Scholar 

  33. Michael Joseph Wolfe. Optimizing supercompilers for supercomputers. Technical Report UIUCDCS-R-82-1105, Department of Computer Science, University of Illinois, October 1982.

    Google Scholar 

  34. Michael Wolfe. Beyondin duction variables. In Proceedings of the ACM SIGPLAN’90 Conference on Programming Language Design and Implementatio, pages 162–174. ACM Press, New York, 1992.

    Google Scholar 

  35. H. Zima, H.-J. Bast, and M. Gerndt. Superb: A tool for semi-automatic MIMD/SIMD parallelization. Parallel Computing, 6:1–18, 1988.

    Article  Google Scholar 

  36. Hans Zima and Barbara Chapman. Supercompilers for Parallel and Vector Computers. ACM Press, 1991.

    Google Scholar 

  37. Chuan-Qi Zhu and Pen-Chung Yew. A scheme to enforce data dependence on large multiprocessor systems. IEEE Transactions on Software Engineering, 13(6):726–739, June 1987.

    Article  MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2001 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Tu, P., Padua, D. (2001). Automatic Array Privatization. In: Pande, S., Agrawal, D.P. (eds) Compiler Optimizations for Scalable Parallel Systems. Lecture Notes in Computer Science, vol 1808. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45403-9_8

Download citation

  • DOI: https://doi.org/10.1007/3-540-45403-9_8

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-41945-7

  • Online ISBN: 978-3-540-45403-8

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics