ABSTRACT

Department of Computer Science, University of Illinois at Urbana-Champaign

Gengbin Zheng

National Center for Supercomputing Applications, University of Illinois at Urbana-Champaign

1.1 Design Philosophy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Object-Based Programming Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Capabilities of the Adaptive Runtime System . . . . . . . . . . . . . . . . . . . 8 1.4 Extensions to the Basic Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.5 Charm++ Ecosystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.6 Other Languages in the Charm++ Family . . . . . . . . . . . . . . . . . . . . . . 14 1.7 Historical Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Charm++ [126] is a C++ based parallel programming system developed at the University of Illinois. It has been designed and refined in the context of collaborative development of multiple science and engineering applications, as the later chapters in this book illustrate. The signature strength of Charm++ is its adaptive runtime system, which allows programmers to deal with increasingly complex supercomputers and sophisticated algorithms with dynamic and evolving behavior. Its basic innovation is the idea of over-decomposition (explained further in Section 1.2): the programmer decomposes the computation into objects rather than processors, and leaves the decision about which object lives on which processor to the runtime system. Specifically, some of the benefits of Charm++ to the programmer include:

• Processor-independent programming: The programmer decomposes the computation into logical units that are natural to the application, uncluttered by the notion of what data is found on which processor, and which computations happen on which processor.