Charm++: Parallel Objects
CS 641 Lecture, Dr. Lawlor
Charm++ is a little parallel
library for C++, where a small translator generates "proxy" objects
that let you call methods on objects living on distant CPUs.
These "parallel objects" make it a lot easier to get:
- Better initial load balance, by splitting the problem down into many objects (more than the number of processors).
- Run-time responsive load balancing, by "migrating" objects from
overloaded to underloaded processors. Charm++ can do this at
runtime without screwing up the running application, because
applications talk to objects, not processors.
- Computation/communication overlap. The fact that objects
only run when their network messages arrive has the surprising benefit
that less CPU time is wasted "blocked waiting for data" as is common in
MPI. Many independent pieces of the computation can intelligently
share the CPU.
There's a pretty good tutorial here.