Publication | Closed Access
ROSE: COMPILER SUPPORT FOR OBJECT-ORIENTED FRAMEWORKS
95
Citations
0
References
2000
Year
EngineeringCompiler TechnologyObject-oriented ModelingComputer ArchitectureSoftware EngineeringSoftware AnalysisCompilersParallel ComputingDynamic CompilationParallelizing CompilerCompiler SupportComputer EngineeringGeneral Object-oriented FrameworksComputer ScienceOptimizing CompilerSoftware DesignProgram AnalysisFormal MethodsWork RoseObject-oriented ProgrammingPreprocessor Generation ToolParallel ProgrammingSystem Software
ROSE is a preprocessor generation tool for the support of compile time performance optimizations of general object-oriented frameworks. Within this work ROSE is being applied first to Overture, a serial/parallel object-oriented framework for solving partial differential equations in two and three space dimensions. The optimization of the interactions between objects within Overture is of particular interest since the Overture applications can be computationally large (many millions of mesh points and iterating over thousands of time-steps). Unfortunately, optimizations that might be obvious to the framework developer or application developer (e.g. cache based optimizations), due to the precise semantics of the framework's abstractions, are often lost through the C++ compiler's inability to recognize or leverage such semantics. Preprocessing steps can be used to introduce transformations using the semantics of a framework's abstractions, but the development of such a preprocessor tool is particularly complicated for a general object-oriented language such as C++. This paper shows how such framework specific preprocessors can be automatically generated. In this paper we briefly present Overture with some examples, and present our approach toward optimizing the performance for Overture and the A++P++ array class abstractions upon which Overture depends. The results we present show that the semantics of the abstractions represented within Overture and the A++P++ array class library can be used to generate a preprocessor using ROSE. The results demonstrate the performance of an Overture application with and without such a preprocessing step, the final performance with preprocessing is equivalent to that of optimized C and Fortran 77. By design, ROSE is general in its application to any object-oriented framework or application and is in no way specific to Overture.