Supercompilers - Extended Abstract
The current growing interest in supercomputers will undoubtedly give rise to the question of how to program on such machines. One obvious answer is with supercompilers! We define supercompilers as highly automated transformational programming systems that can translate high level mathematical problem specifications into machine code for a variety of target computers that could be represented by a diversity of abstract parallel and sequential complexity models. Since one would not expect the object code produced by a supercompiler to be comprehensible relative to the abstractly specified source code, a reasonable supercompiler would have to compile a performance description of the object code also. This is made possible by new insights into the basic nature of what a variable is, and a careful integration of performance with semantics.
A new general top down framework is provided to facilitate powerful transformations, which can be adapted for both sequential and parallel models, and are applied in a sequence of steps to implement strategy, access paths and invariants, conventional storage structures, and other essential features of efficient programs. Some of these transformations based on fixed point theory are new, while others are improved variants of previous investigations.
Our concepts and techniques are illustrated using RAPTS, a running transformational programming system that embodies many of the features found in our notion of supercompilers.
KeywordsSorting Rosen Alan
Unable to display preview. Download preview PDF.
- 2.Aho, Hopcroft, Ullman. Design and Analysis of Computer Algorithms. Addison-Wesley, 1974.Google Scholar
- 3.Alien, Frances E., Cocke, John, and Kennedy, Ken. Reduction of Operator Strength. In: Program Flow Analysis. Muchnick, S., Jones, N., Eds., Prentice Hall, 1981, pp. 79–101.Google Scholar
- 6.Birkhoff, Garrett. Lattice Theory. American Mathematical Society, Providence, 1966.Google Scholar
- 8.Cheatham, T. E., and Wegbreit, Ben. A Laboratory for the Study of Automating Programming. Proc. AFIPS 1972 Spring Joint Computer Conf., 1972.Google Scholar
- 10.Cocke, J. and Schwartz, J. T. Programming Languages and Their Compilers. CIMS, New York University, 1969. Lecture NotesGoogle Scholar
- 13.Demers, A., Donahue, J. Making Variables Abstract: An Equational Theory for Russell. Proceedings Tenth ACM Symposium on Principles of Programming Languages, Jan, 1983, pp. pp 59–72.Google Scholar
- 15.Earley, Jay. High Level Operations in Automatic Programming. Proc. Symp. on Very High Level Langs., Apr, 1974. Sigplan Notices, Vol 9, Num 4Google Scholar
- 17.Fong, A. C. Elimination of Common Subexpressions in Very High Level Languages. Proceedings 4th ACM Symposium on Principles of Programming Languages, Jan, 1977, pp. 48–57.Google Scholar
- 18.Fong, A C. Inductively Computable Constructs in Very High Level Languages. Proceedings 6th ACM Symposium on Principles of Programming Languages, Jan, 1979, pp. 21–28.Google Scholar
- 19.Fong, A. C. and Ullman, J. D. Induction Variables in Very High Level Languages. Proceedings Third ACM Symposium on Principles of Programming Languages, Jan, 1976, pp. 104–112.Google Scholar
- 21.Gerhart, S. Correctness Preserving Program Transformations. Proc. Second ACM Symposium on Principles of Programming Languages, 1975.Google Scholar
- 26.Naqui, S., Menschen, L. Synthesizing Least Fixed Point Queries into Non-recursive Iterative Programs. IJCAI 83, Aug, 1983, pp. 25–28.Google Scholar
- 27.Paige, R. Formal Differentiation. UMI Research Press, Ann Arbor, Mich, 1981. Revision of Ph.D. thesis, NYU, June 1979Google Scholar
- 28.Paige, R. Transformational Programming — Applications to Algorithms and Systems. Proceedings Tenth ACM Symposium on Principles of Programming Languages, Jan, 1983, pp. 73–87.Google Scholar
- 29.Paige, Robert. Applications of Finite Differencing to Database Integrity Control and Query/Transaction Optimization. In: Advances In Database Theory, Volume 2, Gallaire, H., Minker, J., and Nicolas, J.-M., Ed., Plenum Press, New York, to appear 1984.Google Scholar
- 31.Ramshaw, L. H. Formalizing the Analysis of Algorithms. Tech. Rept SL-79–5, Xerox Palo Alto Research Center, June, 1979.Google Scholar
- 32.Reif, J. and Scherlis, W. Deriving Efficient Graph Algorithms. Carnegie-Mellon U., 1982. Technical ReportGoogle Scholar
- 34.Rosen, B. K. Degrees of Availability. In: Program Flow Analysis, Muchnick, S., Jones, N., Eds., Prentice Hall, 1981, pp. 55–76.Google Scholar
- 36.Schwartz, J. T. On Programming: An Interim Report on the SETL Project, Installments I and II. CIMS, New York Univ., New York, 1974.Google Scholar
- 39.Tarjan, R. E. “A Unified Approach to Path Problems.” JACM 28, 3 (July 1981).Google Scholar