Abstract
We show that by using an intermediate representation, which supports a formalized interface on which to construct parallelization tools, the mapping of the representation onto parallel architectures can be performed quickly and efficiently. An intermediate representation called HICOR (Hierarchical Intermediate Code Object Representation) is shown to facilitate the exploitation of parallel operations by providing an abstraction layer for performing high-level intermediate code analysis, scheduling, and code generation. An object-oriented design approach has been employed in the development of HICOR and associated tools. Source language constructs are transformed into specialized object classes. Inheritance properties provided by the object-oriented paradigm are utilized to provide a common interface to each object in the HICOR representation. It is this interface that provides the needed consistency and flexibility in which to construct tools that has since been lacking. In particular, a tool to performCompile-Time Scheduling is presented. The scheduling algorithm employed differs from traditional scheduling problems in that merging of tasks is performed to reduce both task creation and communication costs in determining the final schedule. Architectural parameters are provided as input to the heuristic allowing the scheduler to produce near-optimal results for a wide variety of MIMD architectures. Once the final schedule is determined theTarget Code Generator, also presented, is used to generate the corresponding target code. A prototype system has been implemented in C++ which incorporates the HICOR intermediate representation with the tools described. The target architectures include the Sun 630 MP/4, Sequent Symmetry S81, and Stardent Titan.
Similar content being viewed by others
References
W. Baxter and H. R. Bauer, III. The program dependence graph and vectorization,Sixteenth Ann. ACM Symp. on Principles of Programming Languages, pp. 1–11, Austin, Texas (January 1989).
M. Burke, R. Cytron, J. Ferrante, and Wilson Hsieh, Automatic generation of nested, fork-join parallelism,Journal of Supercomputing 2 (3): 71–88 (July 1989).
K. D. Cooper and K. Kennedy, Fast interprocedural alias analysis,Sixteenth Ann. ACM Symp. on Principles of Programming Languages, pp. 49–59, Austin, Texas (January 1989).
M. Girkar and C. Polychronopoulos, Compiling issues for supercomputers,IEEE Computer, pp. 164–173 (September 1988).
S. Horwitz, T. Reps, and D. Binkley, Interprocedural slicing using dependence graphs,Proc. of the ACM SIGPLAN 88 Conf. on Programming Language Design and Implementation (June 1988).
M. McCreary and H. Gill, Automatic determination of grain size for efficient parallel processing,Comm. of the ACM 32 (9): 1073–1078 (September 1989).
S. Richardson and M. Ganapathi, Code optimization across procedures,IEEE Computer, pp. 42–50 (February 1989).
Y. Tanaka, K. Iwasawa, S. Gotoo, and Yukio Umetani, Compiling techniques for firstorder linear recurences on a vector computer,IEEE Computer, pp. 174–181 (September 1988).
J. Ferrante, K. Ottenstein, and J. Warren, The program dependence graph and its use in optimization,ACM Trans. on Programming Languages and Systems 9 (3): 319–349 (July 1987).
M. Girkar and C. Polychronopoulos, Automatic extraction of functional level parallelism from ordinary programs,IEEE Trans. on Parallel and Distributed Systems 3 (2): 166–178 (March 1993).
K. Kennedy, K. S. Mckinley, and C. W. Tseng, Interactive parallel programming using the ParaScope editor,IEEE Trans. on Parallel and Distributed Systems 2 (3): 329–341 (July 1991).
B. K. Szymanski,Parallel Functional Languages and Compilers, Addison-Wesley, Reading, Massachusetts (1991).
K. Pingali, M. Beck, R. Johnson, M. Moudgill, and P. Stodghill, Dependence Flow Graphs: An Algebraic Approach to Program Dependencies. Technical Report TR 90-1152, Cornell University (September 1990).
M. R. Gilder and M. S. Krishnamoorthy, An object-oriented intermediate code representation for the development of parallelization tools,Journal of Object-Oriented Programming (to appear).
M. R. Gilder, An Object Oriented Intermediate Code Representation for an Architecturally Independent Parallelizing Compiler. PhD thesis, Rensselaer Polytechnic Institute, Troy, New York (1993).
J. R. Punin, M. R. Gilder, and M. S. Krishnamoorthy, A GUI for parallel code generation (in progress).
D. Gelernter, A. Nicolau, and D. Padua,Languages and Compilers for Parallel Computing, MIT Press, Cambridge, Massachusetts (1990).
D. Padua and M. Wolfe, Advanced compiler optimizations for supercomputers,Comm. of the ACM 29 (12): 1184–1201 (December 1986).
R. E. Miller and J. W. Thatcher,Complexity of Computer Computations, Plenum Press, New York (1972).
J. D. Ullman. NP-Complete scheduling problems,Journal of Computer and System Sciences 10: 384–393 (1975).
V. Sarkar,Partitioning and Scheduling Parallel Programs for Multiprocessors, MIT Press, Cambridge, Massachusetts (1989).
V. Sarkar, Automatic partitioning of a program dependence graph into parallel tasks,IBM Journal of Research and Development 35 (5): 779–804 (September 1991).
R. W. Stevens,UNIX Network Programming, Prentice Hall, Englewood Cliffs, New Jersey (1990).
M. R. Gilder and M. S. Krishnamoorthy, A Viable Object Oriented Intermediate Code Representation for Parallel Architectures. Technical Report TR 92-35, Rennselaer Polytechnic Institute, Troy, New York (December 1992).
M. S. Krishnamoorthy, A. Suess, M. Onghena, and F. Oxaal, Improvements to Graph-Pack: A system to manipulate graphs and digraphs,DIMACS Workshop on Computational Support for Discrete Mathematics (to appear).
B. W. Char, K. O. Geddes, G. H. Gonnet, M. B. Monagagn, and S. M. Watt,Maple Reference Manual (1988).
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Gilder, M.R., Krishnamoorthy, M.S. Automatic source-code parallelization using HICOR objects. Int J Parallel Prog 22, 303–350 (1994). https://doi.org/10.1007/BF02577736
Received:
Issue Date:
DOI: https://doi.org/10.1007/BF02577736