Constructing a high-performance program requires detailed knowledge of the computer`s architectural features. This knowledge constitutes a detailed, albeit informal, model of computation against which the performance program is written. Similar characteristics must be considered in building a portable high-performance program where the appropriate details are elusive and often unavailable when the program is written. In order to support this type of programming, we call for a Scalable Portability Model (SPM), that uses several novel techniques to meet these challenges.
A portable high-performance program must be capable of adapting to the particular environment in which it is running. We call the technique for achieving this adaptation Two-Phase Adaptation. Firstly, an automatic analysis and exploration of the underlying architecture environment is carried out. Secondly, an efficient matching between the application complexity and the environment complexity is completed.
We present some of the techniques used, and provide evidence that SPM has reached the goals of performance, scalability and portability for an important set of applications.