A parallelizing compiler by object oriented design

Applying conventional compiler design methodology to a parallelizing compiler, its internal data structures tend to get too complicated quickly. Thus, we introduce object oriented design from the problem analysis stage and achieve the following improvements: 1) consistent modeling from the theory to the implementation; 2) reduced program size through improved reusability based on better class design methodology; and 3) flexible coding through a stub class for parallelization. We extract objects based on stream and thus clarify similarities and differences to the conventional design schemes. Then we show the framework of the internal classes used in our parallelizing compiler which enhances design level reusability in C++ implementation of the compiler. Furthermore, we provide a virtual class to be used as a unit of MIMD style parallel execution and make it a common representation among different parallelization algorithms. Finally, we compare our design against SUIF, which also uses C++, and show the improvements on the design classes.

[1]  Henri E. Bal,et al.  Object distribution in Orca using Compile-Time and Run-Time techniques , 1993, OOPSLA '93.

[2]  Dennis G. Kafura,et al.  Inheritance in Actor Based Concurrent Object-Oriented Languages , 1989, Comput. J..

[3]  William E. Lorensen,et al.  Object-Oriented Modeling and Design , 1991, TOOLS.

[4]  Ken Kennedy,et al.  Compiling Fortran D for MIMD distributed-memory machines , 1992, CACM.

[5]  Patrick H. Loy A comparison of object-oriented and structured development methods , 1990, SOEN.

[6]  Justin O. Graver,et al.  TS: an optimizing compiler for smalltalk , 1988, OOPSLA 1988.

[7]  Norihisa Doi,et al.  An Implementation of an Operating System Kernel Using Concurrent Object-Oriented Language ABCL/c+ , 1988, ECOOP.

[8]  E. Colbert,et al.  The object-oriented software development method: a practical approach to object-oriented development , 1989, TRI-Ada '89.

[9]  Ian Graham,et al.  Object oriented methods (2nd ed.) , 1994 .

[10]  Mark Lorenz,et al.  Object-oriented software metrics - a practical guide , 1994 .

[11]  Constantine D. Polychronopoulos,et al.  The structure of parafrase-2: an advanced parallelizing compiler for C and FORTRAN , 1990 .

[12]  Ken Kennedy,et al.  Automatic translation of FORTRAN programs to vector form , 1987, TOPL.

[13]  Paul T. Ward How to integrate object orientation with structured analysis and design , 1989, IEEE Software.

[14]  Wen-mei W. Hwu,et al.  Performance Implications of Synchronization Support for Parallel Fortran Programs , 1994, J. Parallel Distributed Comput..

[15]  Federico Vazquez,et al.  Using object oriented structured development to implement a hybrid system , 1993, SOEN.

[16]  Grady Booch,et al.  Object-oriented development , 1986, IEEE Transactions on Software Engineering.

[17]  Alan Snyder Encapsulation and inheritance in object-oriented programming languages , 1986, OOPSLA 1986.

[18]  Edward Yourdon,et al.  Object-oriented analysis (2nd ed.) , 1991 .