Abstract. We briefly introduce the notion of Semantically Enhanced Library Languages, SELL, as a practical and economical alternative to special-purpose programming languages for high-performance computing. Then we describe the Pivot infrastructure for program analysis and transformation that is our main tool for supporting SELL. Finally, we outline how the IPR (The Pivot's Internal Program Representation) can be used to represent central notions of high-performance computing, such as parallelizable array operations. Our focus is on a broad exposition of ideas, rather than technical details 1 .
Languages and librariesFor ease of programming, portability, and acceptable performance, we design and implement special-purpose programming languages for high-performance computing [15]. Alternatively, we can use a Semantically Enhanced Library Language. A SELL is a language created by extending a programming language (usually a popular general-purpose programming language) with a library providing the desired added functionality and then using a tool to provide the desired semantic guarantees needed to reach a goal (often a higher level semantics, absence of certain kinds of errors, or library-specific optimizations) [12]. This paper focuses on a tool, The Pivot, being developed to support SELLs in ISO C++ [11,5] and its application to High-Performance Computing.
A brief overview of the PivotThe Pivot is a general framework for the analysis and transformation of C++ programs. It is designed to handle the complete ISO C++, especially more advanced uses of templates and including some proposed C++0x features. It is compiler independent. The central part of the Pivot is a fully typed abstract syntax tree called IPR (Internal Program Representation).There are lots of (more than 20) tools for static analysis and transformation of C++ programs, e.g. [7,2,8,6]. However, few -if any -handle all of ISO 1 This is the "cut" or "abbreviated" version of this paper. For a full version, see