"SAT stands for Stages And Tranformations and is the name of an approach to the high-level, performance-directed design of parallel programs. The target programs obtained with this approach are sequences of internally parallel stages, i.e., they fall within the SPMD model. Formal program transformations are used for deriving each parallel stage and optimizing the combination of several stages. The main advantage of the SAT approach is the comparatively high level of abstraction at which performance-relevant design decisions can be made. One consequence is that choices become much clearer than at the code level, enhancing comparability; another is that there is an increased potential for automation of the programming process. This paper summarizes the approach and assesses its usefulness, with emphasis on one basic parallel programming pattern, the list homomorphism, which captures the divide-and-conquer paradigm. We survey the transformational theory, provide a range of practical examples, and discuss the potential for automation and also the demands made on application programmers and implementers."
Sergei Gorlatch and Chris Lengauer