Abstract
>We describe Charm++, an object oriented portable parallel
programming language based on C++. Its design philosophy,
implementation, sample applications and their performance on
various parallel machines are described. Charm++ is an explicitly
parallel language consisting of C++ with a few extensions. It
provides a clear separation between sequential and parallel
objects. The execution model of Charm++ is message driven, thus
helping one write programs that are latency-tolerant. The language
supports multiple inheritance, dynamic binding, overloading, strong
typing, and reuse for parallel objects. Charm++ provides specific
modes for sharing information between parallel objects. Extensive
dynamic load balancing strategies are provided. It is based on the
Charm parallel programming system, and its runtime system
implementation reuses most of the runtime system for Charm.