Abstract
Software re-use via libraries is a strategy that allows the cost of
software to be amortized. A parallel programming system must
support the ability to develop modules that can be "fitted
together" in a variety of contexts. Although it is important to be
able to reuse parallel libraries, it is also more difficult to use
parallel modules in comparison to sequential module. We present a
methodology for developing libraries that addresses these issues
effectively. The methodology, which is embodied in the Charm
system, employs message-driven execution (in contrast to
traditional, receive based message passing), information sharing
abstractions, the notion of branched objects, and explicit support
for modules.