This project systematically addresses the enormous complexity of mapping applications to current and future parallel platforms - both scalable parallel architectures consisting of tens of thousands of processors and distributed systems comprised of collections of these and other resources. By integrating the system layers - domain-specific environment, application program, compiler, run-time environment, performance models and simulation, and workflow manager -- and through a systematic strategy for application mapping, the project will exploit the vast machine resources available in such parallel platforms to dramatically increase the productivity of application programmers.
The key contribution of the project will be a systematic solution for performance optimization and adaptive application mapping -- a large step towards automating a process that is currently performed in an ad hoc way by programmers and compilers -- so that it is feasible to obtain scalable performance on parallel and distributed systems consisting of tens of thousands of processing nodes. The application components will be viewed as dynamically adaptive algorithms for which there exist a set of variants and parameters that can be chosen to develop an optimized implementation. Knowledge representation and machine learning techniques utilize this domain knowledge and past experience to navigate the search space efficiently.