A Compositional Approach to Scalable Parallel Software
- View All
High-end computing systems are needed to study important, compute-intensive applications such as scientific simulations, multimedia stream processing, and geographical information systems. While these systems are still evolving, it is clear that they will be extremely large and complex, with tens to hundreds of thousands of processors providing a deep hierarchy of systems and resources. This research will develop the theory, techniques, and building blocks that can be used by domain scientists who are not expert parallel programmers to compose efficient applications for such complex systems.Hence, the outcomes of the research should greatly increase the number of potential users of high-end machines to include essentially all scientists whose problems could take advantage of such systems. The software resulting from this research, including the testbed applications for important problems in computational biology and physics, will be made publically available.Composition is a natural way to construct and reason about large, complex systems. This research will develop compositional strategies for building applications and for optimizing and controlling the application and its use of system resources.This project will use the STAPL (the Standard Template Adaptive Parallel Library) infrastructure for parallel C++ code. STAPL includes of a collection of generic parallel algorithms and distributed containers. In this research, STAPL''s existing adaptive capabilities will be further refined and novel techniques will be developed for compositional performance modeling and for providing fault-tolerance capabilities that can be set individually for each container or algorithm instance in the program. A modern programming interface will be designed based on composition of parallel operations that will be modeled on the range abstractions in STAPL and C++0x and directly supported by a high-level compiler.