Abstract
In this chapter, we presented features of Charm++ and adaptive MPI, programming methodologies that we believe are well-suited for programming petascale machines. They provide a programming model that is independent of the number of processors, automate resource management, and support concurrent composition. Several full-scale applications developed using Charm++ were shown to have scaled to tens of thousands of processors, in spite of their irregular and dynamic nature. The adaptive runtime system at the heart of Charm++ can be used for supporting multiple programming models, as well as enabling interoperability among modules developed using them.
Charm++ has attained a degree of success less common among academically developed programming models: e.g., 15-20% of the CPU cycles at two national centers (National Computational Science Alliance (NCSA) and Pittsburgh Supercomputing Center (PSC)) during a one-year period were spent on Charm++ applications, mainly NAMD. It is a mature, stable programming system, with mature performance analysis tools. Thus, it should not be dismissed as just an experimental system, but rather be accepted as a mainstream model that can have an impact on the state of the art in parallel computing. We hope that the next generation of applications being developed using Charm++ will further cement its place as one of the significant models for parallel programming.