Skip to main content

Computing per-process summary side-effect information

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

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

Abstract

This paper presents a static algorithm, based on standard iterative dataflow techniques, for computing per-process memory references to shared data in coarse-grained parallel programs. The algorithm constructs control flow graphs for families of processes by recognizing predicates used in control statements whose values are invariant relative to any one process, but vary across processes. It is used in conjunction with interprocedural flow-insensitive side-effect analysis techniques to identify data objects accessed by each process. Dynamically allocated objects and descriptors for sections of arrays are incorporated into the general framework.

The motivation for the work was to reduce coherency overhead in shared memory multiprocessors. However, the algorithm can also be applied to local/global memory allocation decisions in distributed systems.

This work was supported by IBM Contract No. 18830046 and NSF PYI Award #MIP-9058-439.

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. A. Agarwal and A. Gupta. Memory-reference characteristics of multiprocessor applications under mach. In SIGMETRICS Conference on Measurement and Modeling of Computer Systems, pages 215–225, 1988.

    Google Scholar 

  2. J.P. Banning. An efficient way to find the side effects of procedure calls and the aliases of variables. In Sixth Annual Symposium on Principles of Programming Languages, pages 29–41, January 1979.

    Google Scholar 

  3. J. Barth. A practical interprocedural data flow analysis algorithm. CACM, 21(9):724–736, September 1978.

    Google Scholar 

  4. D.R. Chase, M. Wegman, and F.K. Zadeck. Analysis of pointers and structures. In Conference on Programming Language Design and Implementation, pages 296–310, White Plains, NY, June 1990.

    Google Scholar 

  5. D.R. Cheriton, A. Gupta, P.D. Boyle, and H.A. Goosen. The vmp multiprocessor: Initial experience, refinements and performance evaluation. In 15th Annual International Symposium on Computer Architecture, pages 410–421, 1988.

    Google Scholar 

  6. K.D. Cooper and K. Kennedy. Interprocedural side-effect analysis in linear time. In Conference on Programming Languages Design and Implementation, pages 57–66, Atlanta, GA, June 1988.

    Google Scholar 

  7. R. Cytron, S. Karlovsky, and K.P. McAuliffe. Automatic management of programmable caches. In International Conference on Parallel Processing, volume II, pages 229–238, August 1988.

    Google Scholar 

  8. S.J. Eggers and T.E. Jeremiassen. Eliminating false sharing. In International Conference on Parallel Processing, volume I, pages 377–381, August 1991.

    Google Scholar 

  9. S.J. Eggers and R.H. Katz. Evaluating the performance of four snooping cache coherency protocols. In 16th Annual International Symposium on Computer Architecture, pages 2–15, Jerusalem Israel, May 1989.

    Google Scholar 

  10. M. Gupta and D. A. Padua. Effects of program parallelization and stripmining transformations on cache performance in a multiprocessor. In International Conference on Parallel Processing, volume 1, pages 301–304, August 1991.

    Google Scholar 

  11. P. Havlak and K. Kennedy. An implementation of interprocedural bounded regular section analysis. IEEE Transactions on Parallel and Distributed Systems, 2(3), July 1991.

    Google Scholar 

  12. L.J. Hendren and A. Nicolau. Parallelizing programs with recursive data structures. ACM Transactions on Parallel and Distributed Systems, 1(1):35–47, 1990.

    Google Scholar 

  13. S. Horwitz, P. Pfeiffer, and T. Reps. Dependence analysis for pointer variables. In Conference on Programming Language Design and Implementation, pages 28–40, Portland OR, June 1989.

    Google Scholar 

  14. T.E. Jeremiassen and S.J. Eggers. Eliminating false sharing through compiler-based shared data restructuring. Submitted for publication, 1992.

    Google Scholar 

  15. T.E. Jeremiassen and S.J. Eggers. Experimental results of per-process side-effect analysis. Submitted for publication, 1992.

    Google Scholar 

  16. Y. Ju and H. Dietz. Reduction of cache coherence overhead by compiler data layout and loop transformation. In Proceedings of the Fourth Workshop on Languages and Compilers for Parallel Computing, pages q1–q15, August 1991.

    Google Scholar 

  17. J.R. Larus and P.N. Hilfinger. Restructuring lisp programs for concurrent execution. Parallel Programming: Experience with Applications, Languages and Systems, 23(9):100–110, September 1988.

    Google Scholar 

  18. MIPS Computer Systems, Inc., Sunnyvale, CA. MIPS R4000 Microprocessor User's Manual, first edition, 1991.

    Google Scholar 

  19. E. Myers. A precise inter-procedural data flow algorithm. In Symposium on Principles of Programming Languages, pages 219–230, January 1981.

    Google Scholar 

  20. J.K. Peir and R. Cytron. Minimum distance: A method for partitioning recurrences for multiprocessors. IEEE Transactions on Computers, 38(8):1203–1211, August 1989.

    Google Scholar 

  21. C. Polychronopoulos, M. Girkar, M. Haghighat, C.L. Lee, B. Leung, and D. Schouten. Parafrase-2: An environment for parallelizing, partitioning, synchronizing, and scheduling programs on multiprocessors. In International Conference on Parallel Processing, volume II, pages 39–48, August 1989.

    Google Scholar 

  22. C. Ruggieri and T.P. Murtagh. Lifetime analysis of dynamically allocated objects. In Symposium on Principles of Programming Languages, pages 285–293, January 1988.

    Google Scholar 

  23. V. Sarkar and J. Hennessy. Compile-time partitioning and scheduling of parallel programs. In Symposium on Compiler Construction, pages 17–26, June 1986.

    Google Scholar 

  24. D.M. Tullsen and S.J. Eggers. Limitations of cache prefetching on a bus-based multiprocessor. Submitted for publication, 1992.

    Google Scholar 

  25. W. Weihl. Interprocedural data flow analysis in the presence of pointers, procedure variables and label variables. In Symposium on Principles of Programming Languages, pages 83–94, January 1980.

    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

© 1993 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Jeremiassen, T., Eggers, S. (1993). Computing per-process summary side-effect information. In: Banerjee, U., Gelernter, D., Nicolau, A., Padua, D. (eds) Languages and Compilers for Parallel Computing. LCPC 1992. Lecture Notes in Computer Science, vol 757. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-57502-2_47

Download citation

  • DOI: https://doi.org/10.1007/3-540-57502-2_47

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-57502-3

  • Online ISBN: 978-3-540-48201-7

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics