Applying Loop Optimizations to Object-oriented Abstractions Through General Classification of Array Semantics
Optimizing compilers have a long history of applying loop transformations to C and Fortran scientific applications. However, such optimizations are rare in compilers for object-oriented languages such as C++ or Java, where loops operating on user-defined types are left unoptimized due to their unknown semantics. Our goal is to reduce the performance penalty of using high-level object-oriented abstractions. We propose an approach that allows the explicit communication between programmers and compilers. We have extended the traditional Fortran loop optimizations with an open interface. Through this interface, we have developed techniques to automatically recognize and optimize user-defined array abstractions. In addition, we have developed an adapted constant-propagation algorithm to automatically propagate properties of abstractions. We have implemented these techniques in a C++ source-to-source translator and have applied them to optimize several kernels written using an array-class library. Our experimental results show that using our approach, applications using high-level abstractions can achieve comparable, and in cases superior, performance to that achieved by efficient low-level hand-written codes.
- Research Organization:
- Lawrence Livermore National Laboratory (LLNL), Livermore, CA (United States)
- Sponsoring Organization:
- USDOE
- DOE Contract Number:
- W-7405-ENG-48
- OSTI ID:
- 15014021
- Report Number(s):
- UCRL-CONF-202762; TRN: US200803%%991
- Resource Relation:
- Journal Volume: 3602; Conference: Presented at: The 17th International Workshop on Languages and Compilers for Parallel Computing, West Lafeyette, IN, United States, Sep 22 - Sep 25, 2004
- Country of Publication:
- United States
- Language:
- English
Similar Records
Semantic-Aware Automatic Parallelization of Modern Applications Using High-Level Abstractions
Automatic Parallelization Using OpenMP Based on STL Semantics