The diversity and complexity of parallel computers (both proposed and implemented) drives the quest for portable, tractable and efficiently implementable parallel programming models and languages. One approach to the problem focuses upon the design and exploitation of higher order programming and algorithmic constructs which can become the fundamental building blocks in such a model. An analogy can be drawn with the historical development of sequential programming, in which simple, relatively unstructured mechanisms, closely tied to the underlying architecture, have given way to more powerful, structured and abstract concepts. Similar progress in the parallel case would raise the level of abstraction from models in which simple communications (or similar) are primitive to a world in which more complex patterns of computation and interaction are combined and presented as parameterized higher order program-forming constructs.
There are three more or less interwoven threads of research in the area. Work on Algorithmic Skeletons focuses on the selection and implementation of appropriate primitives (the `skeletons'), typically with a bias towards coarse-grain primitives and control-parallel implementation. Researchers in Program Development apply and extend techniques from the sequential branch of the field to the parallel case, developing new design methodologies and models in which, as discussed above, the level of abstraction is raised from the base level of simple concurrent activities, and in which there are facilities for understanding the cost of the program under development during its design. The final thread seeks to design and understand the formal models which underpin the area, whether by viewing existing models in a parallel light (for example, work on the Bird-Meertens Formalism as a parallel programming model) or by developing new ones. Much work in this thread takes a more data-parallel view of the process.
The concerns spanned by these groups range from the very pragmatic questions of implementation techniques and real applications to the abstract world of formal program development. Many researchers from all of the areas had already been brought together electronically, via e-mail lists and WWW pages. The seminar was an opportunity to establish the community and intensify the contacts.
Questions discussed at the seminar included:
Murray Cole, Sergei Gorlatch, Christian Lengauer, David Skillicorn