PPL Logo

Highlights of Our Work

Our goal is to develop technology that improves performance of parallel applications while also improving programmer productivity. We aim to reach a point where, with our freely distributed software base, complex irregular and dynamic applications can (a) be developed quickly and (b) perform scalably on machines with thousands of processors.

Processor virtualization is one of our core techniques: the programmer divides the computation into a large number of entities, which are mapped to the available processors by an intelligent runtime system. This separation of concerns between programmers and the system is key to attaining both our goals together.

Tools: Charm++, a parallel C++ library, and AMPI, an adaptive MPI implementation, provide processor virtualization. They are supported by our research on intelligent runtime systems, including load balancing and communication optimizations. We are developing performance visualization and analysis tools that can provide intuitive and specific feedback for improving performance. To further enhance programmer productivity, we are developing frameworks that automate domain-specific parallelization techniques, and producing reusable libraries for parallel algorithms.

Clusters and the Grid: Via the Faucets framework, we simplify parallel job submission and monitoring, and efficiently exploit grid-based resources. New research also aims at fault tolerance.

To ensure relevance and long-term impact, we work in the context of real applications. Our collaborative research projects involve bio-molecular simulation (NAMD), rocket simulation, cosmology (ChaNGa), quantum chemistry (OpenAtom), space-time meshes, and structural dynamics.

Our software is available for download with manuals. We invite you to browse our presentations, posters, and publications.