Skip to main content

Automatic array privatization

  • Conference paper
  • First Online:
Languages and Compilers for Parallel Computing (LCPC 1993)

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

Abstract

Array privatization is one of the most effective transformations for the exploitation of parallelism. In this paper, we present a technique for automatic array privatization. Our algorithm uses data flow analysis of array references to identify privatizable arrays intraprocedurally as well as interprocedurally. It employs static and dynamic resolution to determine the last value of a lived private array. We compare the result of automatic array privatization with that of manual array privatization and identify directions for future improvement. To enhance the effectiveness of our algorithm, we develop a goal directly technique to analysis symbolic variables in the present of conditional statements, loops and index arrays.

The research described was supported by Army contract DABT63-92-C-0033 and CSRD affiliate program from Motorola Corporation. This work is not necessarily representative of the positions or policies of the Army or the Government.

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. B. Alpern, M. N. Wegman, and F. K. Zadeck. Detecting Equality of Variables in Programs. In Proc. of the 15th ACM Symposium on Principles of Programming Languages, pages 1–11, 1988.

    Google Scholar 

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

    Google Scholar 

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

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

  5. D. Callahan and K. Kennedy. Compiling programs for distributed-memory multi-processors. Journal of Supercomputing, 2:151–169, October 1988.

    Article  Google Scholar 

  6. Ron Cytron and Jeanne Ferante. 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, August 1987.

    Google Scholar 

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

  8. R. Eigenmann, J. Hoeflinger, Z. Li, and D. Padua. Experience in the automatic parallelization of four Perfect-Benchmark programs. In Proc. 4-th Workshop on Programming Languages and Compilers for Parallel Computing. Pitman/MIT Press, August 1991.

    Google Scholar 

  9. P. Feautrier. Array expansion. In Proc. 1988 ACM Int'l Conf. on Supercomputing, July 1988.

    Google Scholar 

  10. High Performance Fortran Forum. High performance fortran language specification (draft). Technical report, High Performance Fortran Forum, January 1993.

    Google Scholar 

  11. Zhiyuan Li. Array privatization for parallel execution of loops. In Proc. of ICS'92, pages 313–322, 1992.

    Google Scholar 

  12. D. E. Maydan, S. P. Amarasinghe, and M. S. Lam. Data dependence and dataflow analysis of arrays. In Proc. 5rd Workshop on Programming Languages and Compilers for Parallel Computing, August 1992.

    Google Scholar 

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

    Article  Google Scholar 

  14. A. Rogers and K. Pingali. Process decomposition through locality of reference. In Proc. the SIGPLAN '89 Conference on Program Language Design and Implementation, June 1989.

    Google Scholar 

  15. B. K. Rosen, M. N. Wegman, and F. K. Zadeck. Global Value Numbers and Redundant Computation. In Proc. of the 15th ACM Symposium on Principles of Programming Languages, pages 12–27, 1988.

    Google Scholar 

  16. 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, to appear on ACM SIGPLAN Notices 1993, September 1992.

    Google Scholar 

  17. M. N. Wegman and F. K. Zadeck. Constant propagation with conditional branches. ACM Transactions on Programming Languages and Systems, 13(2):181–210, April 1991.

    Article  Google Scholar 

  18. Michael Wolfe. Beyond induction variables. ACM PLDI'92, 1992.

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

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

    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

© 1994 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Tu, P., Padua, D. (1994). Automatic array privatization. In: Banerjee, U., Gelernter, D., Nicolau, A., Padua, D. (eds) Languages and Compilers for Parallel Computing. LCPC 1993. Lecture Notes in Computer Science, vol 768. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-57659-2_29

Download citation

  • DOI: https://doi.org/10.1007/3-540-57659-2_29

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-57659-4

  • Online ISBN: 978-3-540-48308-3

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics