Compiling C for vectorization, parallelization, and inline expansion

  • Authors:
  • R. Allen;S. Johnson

  • Affiliations:
  • Ardent Computer Corporation, Sunnyvale, CA;Ardent Computer Corporation, Sunnyvale, CA

  • Venue:
  • PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
  • Year:
  • 1988

Quantified Score

Hi-index 0.01

Visualization

Abstract

Practical implementations of real languages are often an excellent way of testing the applicability of theoretical principles. Many stresses and strains arise from fitting practicalities, such as performance and standard compatibility, to theoretical models and methods. These stresses and strains are valuable sources of new research and insight, as well as an oft-needed check on the egos of theoreticians.Two fertile areas that are often explored by implementations arePlaces where tractable models fail to match practice. This can lead to new models, and may also affect practice (e.g., the average programming language has become more context free over the last several decades).Places where existing algorithms fail to deal with practical problems effectively, frequently because the problems are large in some dimension that has not been much explored.The present paper discusses the application of a much studied body of algorithms and techniques [Alle 83, KKLW 80, Bane 76, Wolf 78, Wolf 82, Kenn 80, Lamp 74, Huso 82] for vectorizing and optimizing Fortran to the problem of vectorizing and optimizing C. In the course of this work some algorithms were discarded, others invented, and many were tuned and modified. The experience gave us insight into the strengths and weaknesses of the current theory, as well as into the strong and weak points of C on vector/parallel machines. This paper attempts to communicate some of those insights.