About Our Project
The Center for Programming Models for Scalable Parallel Computing is focused on 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 efficient 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.
Productivity. Compiler technology for global view programming models; annotations to hide complexity of distributed data structures in MPI; design patterns for parallel programming. We will explore the implementation of a general, asynchronous work queue model for automated load balancing and effective support for out-of-core computations, in multiple languages and libraries. Scalability. Compilation for 100K processors and beyond; latency management through function shipping and multithreading. Scaling library approaches such as MPI and GA will require both infrastructure improvements and new programming approaches.
Interoperability. Interoperability of parallel programming models and their implementations. We will ensure that combinations of MPI, Global Arrays, OpenMP, and partitioned global address space languages, where appropriate, have well-defined semantics for interoperability and that our implementations have been tested to exhibit those semantics.
Portability. Implementation of various models that take advantage of the newest features of networks and processors (e.g., InfiniBand RDMA, SMT and multicore processors).
Infrastructure. Enhancements to the runtime system to enable multilevel parallelism, memory management scalable to petascale systems, lightweight and scalable synchronization (processor teams, memory, etc.), multithreading and function shipping.
Performance. High-performance and scalable implementation of various models on the latest and emerging commodity networks/interfaces/protocols and vendor-proprietary networks used in high-end architectures.
Multithreading. OpenMP enhancements to support scientific computing; interoperability of OpenMP and other threading models with MPI; support of multithreaded codes in CAF, UPC, GA, and Titanium, for architectures based on multicore nodes. Basic research in thread safety for and hierarchical parallelism in PGAS languages and GA library.