PARA'04 State-of-the-Art
in Scientific Computing
June 20-23, 2004 (Home page)

Updated: 29 February 2004

Telescoping Languages As An Approach To Architecture Specific Optimizations

Dan Quinlan
CASC LLNL
USA

Increasingly complex modern architectures warrant increasingly aggressive optimizations tailored specific to their subtleties. Moreover, evidence suggests that increasingly aggressive platform specific transformations are required and are showing greater profitability in recent years. ROSE is a library for the construction of source-to-source translators. The use of source-to-source translation provides an essential mechanism to tailor application programs to the complexity of increasingly sophisticated and deep memory hierarchies found within modern processor designs. We will present how within ROSE transformations can be defined. Specifically we will show how the use of semantically rich high-level abstractions can be used to provide fundamentally more information for use at compiler time in the optimization of scientific applications. Our development of ROSE is part of our approach toward the development of telescoping languages generally. Within Telescoping Languages, the use of high-level user-defined abstractions, not formally a part of the base language, are optimized as if they formed a domain specific language with full compile time optimization support. The extra information present within the semantics of the high-level abstractions in many cases can provide an essential short-cut to the program analysis. This approach simplifies the development of numerical libraries by separating the optimization from the library implementation and within a compilation step where the full context can be readily seen. The idea of higher level languages driving the generation of lower level C++ code was originally discussed by Stroustrup in 1994. The techniques presented in this talk are a special case of compiler support for high-level abstractions such as those found in object-oriented numerical libraries. Specifically in this work we utilize the semantics of the high-level abstractions and generate low-level C++ code.

Home page


2004-02-29