The Center for Programming Models for Scalable Parallel Computing is focused on the research and development in the area of programming models for scalable parallel computing. Programming models are of paramount importance because they affect both the performance delivered by the computer and the productivity of the programmer seeking that performance. Every programming model presents tradeoffs among performance, portability, expressivity, and convenience, and so no one model fits all purposes. The coming generation of petascale computers exacerbates the problem, since vast numbers of nodes, exotic communication networks, and multicore chips will be the order of the day, requiring advanced implementation techniques for libraries and compilers while the scientific application community begs for simpler, more abstract, and convenient ways of conceptualizing their programs for these machines. Work carried out in this Center advances the state of the art in the understanding, definition, implementation, and use of models expressed in libraries, languages, and annotations. Our team includes experts in the effcient implementation of widely used communication libraries, language definition experts (particularly for partitioned global address space languages), compiler specialists addressing both these languages and global view languages, and researchers that study programming patterns for high performance computing.
We carry out research and development at a number of different levels and across a number of different types of programming models. The following are cross-cutting themes in the work we propose.