Skip to main content

A program's eye view of Miprac

  • Conference paper
  • First Online:

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

Abstract

Miprac is a parallelizing C, Lisp and Fortran compiler. We present its workings by following a C program as it progresses through the modules of the compiler. Miprac makes use of a simple, operational intermediate form, called MIL. Dependence analysis and memory management are performed by a whole-program abstract interpretation of MIL. We present the intermediate form, and illustrate the analysis and transformation of the example program as it becomes a parallel object code for Cedar.

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

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Abramsky, S., and Hankin, C. Abstract Interpretation of Declarative Languages. Ellis Horwood Books in Computing Science. Halsted Press (John Wiley and Sons), 1987, ch. An introduction to abstract interpretation, pp. 9–31.

    Google Scholar 

  2. Ammarguellat, Z. An algorithm for control-flow normalization and its complexity. IEEE TOSE 18, 3 (March 1992), 237–251.

    Google Scholar 

  3. Banning, J. An efficient way to find the side effects of procedure calls and the aliases of variables. In 6th ACM Symposium on Principles of Programming Languages (1979).

    Google Scholar 

  4. Bodin, F. Preliminary report: Data structure analysis in c programs.

    Google Scholar 

  5. Chase, D. R., Wegman, M., and Zadeck, F. K. Analysis of pointers and structures. In ACM SIGPLAN '90 Conference on Programming Language Design and Implementation (1990), pp. 296–310.

    Google Scholar 

  6. Deutsch, A. A storeless model of aliasing and its abstractions using finite representations of right-regular equivalence relations. In Proceedings of the IEEE 1992 International Conference on Computer Languages (Apr. 1992), IEEE Press.

    Google Scholar 

  7. Gifford, D. K., Jouvelot, P., Lucassen, J. M., and Sheldon, M. A. Fx-87 reference manual. Tech. Rep. MIT/LCS/TR-407, Massachusetts Institute of Technology, Jan. 1987.

    Google Scholar 

  8. Guarna, V. A. Analysis of c programs for parallelization in the presence of pointers. Tech. Rep. 695, Center for Supercomputing Research and Development, University of Illinois at Urbana-Champaign, 1987.

    Google Scholar 

  9. Harrison III, W. The interprocedural analysis and automatic parallelization of scheme programs. Lisp and Symbolic Computation: an International Journal 2, 3/4 (1989), 179–396.

    Google Scholar 

  10. Harrison III, W. Generalized iteration space and the parallelization of symbolic programs. In Proceedings of the Workshop on Computation of Symbolic Languages for Parallel Computers (Oct. 1991), I. Foster and E. Tick, Eds., Argonne National Laboratory. ANL-91/34.

    Google Scholar 

  11. Hendren, L., and Nicolau, A. Parallelizing programs with recursive data structures. IEEE Transactions on Parallel and Distributed Systems (Jan. 1990).

    Google Scholar 

  12. Horowitz, S., Pfeiffer, P., and Reps, T. Dependence analysis for pointer variables. In Proceedings of the ACM SIGPLAN 1989 Symposium on Programming Language Design and Implementation (June 1989).

    Google Scholar 

  13. Jones, N. D., and Muchnick, S. S. A flexible approach to interprocedural data flow analysis of programs with recursive data structures. In Conference Record of the Ninth ACM Symposium on Principles of Programming Languages (Jan. 1982), pp. 66–74.

    Google Scholar 

  14. Kuck, D., Davidson, E., Lawrie, D., and Sameh, A. Parallel supercomputing today and the cedar approach. In Experimental Parallel Computing Architectures, J. J. Dongarra, Ed. Elsevier Science Publishers B.V. (North-Holland), New York, NY, 1987, pp. 1–20.

    Google Scholar 

  15. Landi, W., and Ryder, B. A safe approximate algorithm for interprocedural pointer aliasing. Tech. Rep. LCSR-TR-168, Laboratory for Computer Science Research, Rutgers University, Sept. 1991.

    Google Scholar 

  16. Larus, J., and Hilfunger, P. Detecting conflicts between structure accesses. In Proceedings of the Sigplan'88 — Conference on Programming Language Desing and Implementation (1988), pp. 21–34.

    Google Scholar 

  17. L.J. Hendren J. Hummel, A. N. Abstractions for recursive pointer data structures: Improving the analysis and transformations of imperative programs. In ACM Sigplan Conference on Programming Language Design and Implementation (1992).

    Google Scholar 

  18. Lucasses, J., and D.K.Gifford. Polymorphic effect systems. Proceedings 15th POPL (1988), 47–57.

    Google Scholar 

  19. Neirynck, A. Static Analysis of Aliasing and Side Effects in Higher-Order Languages. PhD thesis, Cornell University, January 1988.

    Google Scholar 

  20. Padua, D., and Wolfe, M. J. Advanced compiler optimizations for supercomputers. Communications of the ACM 29, 12 (Dec. 1986).

    Google Scholar 

  21. Polychronopoulos, C., Girkar, M., Haghighat, M., Lee, C., Leung, B., and Schouten, D. Parafrase-2: An environment for parallelizing, partitioning, synchronizing, and scheduling programs on multiprocessors. In Proceedings of the 1989 International Conference on Parallel Processing (Aug. 1989).

    Google Scholar 

  22. Reynolds, J. C. Syntactic control of interference. In 5th ACM Symposium on Principles of Programming Languages (1978).

    Google Scholar 

  23. Schnabel, R. Determining feasibility of a set of nonlinear inequality constraints. In Mathematical Programming Study 16. North-Holland Publishing Company, 1982, pp. 137–146.

    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

Harrison, W., Ammarguellat, Z. (1993). A program's eye view of Miprac. 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_68

Download citation

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

  • 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