Charm++ is a machine independent parallel programming system. Programs
written using this system will run unchanged on MIMD machines with or without a
shared memory. It provides high-level mechanisms and strategies to facilitate
the task of developing even highly complex parallel applications. For an overview of the system, please read:
Charm++ programs are written in C++ with a few library calls and
an interface description language for publishing Charm++ objects.
Charm++ supports multiple inheritance, late
bindings, and polymorphism.
Platforms: The system currently runs on IBM's Blue Gene/P, Blue Gene/L,
Cray XT3, XT4, XT5, Infiniband clusters such as Ranger, LoneStar and Abe,
clusters of UNIX workstations and even single-processor UNIX, Solaris and
Windows machines. It also runs on accelerators such as the Cell BE and GPGPUs.
The design of the system is based on the following tenets:
- Efficient Portability: Portability is an essential catalyst for the development of reusable
parallel software. Charm++ programs run unchanged on MIMD
machines with or without a shared memory.
The programming model induces better data locality,
allowing it to support machine independence without losing efficiency.
- Latency Tolerance:
Latency of communication - the idea that remote data will take longer
to access - is a significant issue common across most MIMD platforms.
Message-driven execution, supported in Charm++ , is a very useful
mechanism for tolerating or hiding this latency.
In message driven execution (which is distinct from just
message-passing), a processor is allocated to a process only when a
message for the process is received.
This means when a process blocks, waiting for a message, another
process may execute on the processor. It also means that a single
process may block for any number of distinct messages, and will be
awakened when any of these messages arrive.
Thus, it forms an effective way of scheduling a processor in the presence
of potentially large latencies.
- Dynamic Load Balancing:
Dynamic creation and migration of work is necessary in many
applications. Charm++ supports this by providing dynamic
(as well as static) load balancing strategies.
- Reuse and Modularity:
It should be possible to develop parallel software by reusing
existing parallel software. Charm++ supports this with a
well-developed ``module'' construct and associated mechanisms.
These mechanisms allow for
compositionality of modules without sacrificing the latency-tolerance.
With them, two modules, each spread over hundreds of processors, may
exchange data in a distributed fashion.
The Programming Model:
Programs consist of potentially medium-grained processes (called chares),
a special type of replicated process, and collections of chares.
These processes interact with
each other via messages. There may be thousands of medium-grained processes on
each processor, or just a few, depending on the application.
The ``replicated processes'' can also be used for implementing novel
information sharing abstractions, distributed data structures,
and intermodule interfaces.
The system can be considered a concurrent object-oriented system with
a clear separation between sequential and parallel objects.
As shown in this figure, the objects are mapped by the runtime system to appropriate processors to balance the load.
Reusable Libraries: The modularity-related features make the
system very attractive for building library modules that are highly
reusable because they can be used in a variety of data-distributions.
We have just begun the process of building such libraries, and have a
small collection of library modules. However, we
expect such libraries, contributed by us and other users, to be one of
the most significant aspects of the system.
Regular and Irregular Computations:
For regular computations, the system is useful because it
provides portability, static load balancing, and
latency tolerance via message driven execution, and facilitates
construction and flexible reuse of libraries.
The system is unique for the extensive support it provides for highly
irregular computations. This includes management of many medium-grained
processes, support for prioritization, dynamic load balancing
strategies, handling of dynamic data-structures such as lists and
graphs, etc.
|
- 10-13
Chao Mei, Gengbin Zheng, Filippo Gioachin and Laxmikant V. Kale , Optimizing a Parallel Runtime System for Multicore Clusters: A Case Study, To appear in Proceedings of Teragrid'10
- 10-06
Laxmikant V. Kale and Gengbin Zheng, Charm++ and AMPI: Adaptive Runtime Strategies via Migratable Objects, Advanced Computational Infrastructures for Parallel and Distributed Applications (Wiley-Interscience), 2009
- 07-04
Laxmikant V. Kale, Eric Bohm, Celso L. Mendes, Terry Wilmarth, Gengbin Zheng, Programming Petascale Applications with Charm++ and AMPI, In Petascale Computing: Algorithms and Applications, CRC Press
- 04-16
Attila Gursoy, Laxmikant V. Kale, Performance and Modularity Benefits of Message-Driven Execution, Journal of Parallel and Distributed Computing No. 64, pp. 461-480, 2004
- 96-11
L. V. Kale and Sanjeev Krishnan, Charm++: Parallel Programming with Message-Driven Objects, Book Chapter in "Parallel Programming using C++", by Gregory V. Wilson and Paul Lu. MIT Press, 1996. pp 175-213.
- 95-03
L. V. Kale, B. Ramkumar, A. B. Sinha, A. Gursoy , The Charm Parallel Programming Language and System: Part II - The Runtime System,
- 95-02
L. V. Kale, B. Ramkumar, A. B. Sinha, A. Gursoy , The Charm Parallel Programming Language and System: Part I --- Description of Language Features,
- 93-02
L.V. Kale and Sanjeev Krishnan, CHARM++ : A Portable Concurrent Object Oriented System Based On C++, Proceedings of the Conference on Object Oriented Programming Systems, Languages and Applications, Sept-Oct 1993. ACM Sigplan Notes, Vol. 28, No. 10, pp. 91-108. (Also: Technical Report UIUCDCS-R-93-1796, March 1993, University of Illinois, Urbana, IL.) [Internal Report #93-2, March 93]
- 90-08
W.W. Shu and L.V. Kale , Chare Kernel - A Runtime Support System for Parallel Computations , Journal of Parallel and Distributed Computing, Academic Press Vol. 11, pp. 198-211, 1990
- 90-03
L.V. Kale, The Chare Kernel Parallel Programming Language and System, Proceedings of the International Conference on Parallel Processing, Aug 1990.
|