
Abstract:
Libraries provide the application developer with convenient
high-level user-defined abstractions for a specific application domain.
We will describe ROSE, an object-oriented infrastructure for
source-to-source translation that provides an interface for programmers
to write their own specialized translators for optimizing such
abstractions. ROSE is a part of current research on telescoping
languages, which provides optimizations of the use of libraries in
scientific applications. This talk will describe the approaches within
ROSE to extend the optimization techniques, common in well defined
languages, to the optimization of scientific applications using well
defined libraries. We will present how high-level grammars, customized
to a specific library, can be automatically generated and used to both
recognize high-level abstractions within applications and also trigger
the optimization of their use. 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 user-defined abstractions such as
those found in object-oriented numerical libraries. Specifically in this
work we utilize the semantics of the user-defined abstractions and
automate the generation of significantly more efficient lower-level C++
code.
ROSE includes a rich set of tools for generating customized
transformations to support optimization of application codes. We
currently support full C and C++(including template instantiation etc.),
with Fortran 90 support under development as part of a collaboration with
Rice to use their version of the Open64 F90 frontend. ROSE represents an
attempt to define an open compiler infrastructure to handle the full
complexity of full scale DOE applications codes using the languages
common to scientific computing within DOE. We expect that such an
infrastructure will also be useful for the development of numerous tools
that may then realistically expect to work on full scale laboratory
applications (commonly exceeding a million lines of code).