This section describes what knowledge the reader is assumed to have, what knowledge the reader will gain by working through this tutorial, a description of the tutorial itself, and so on.
This section describes the basic ideas behind the Charm++ programming model. It introduces the concept of chares, asyncronous message passing, and so on.
This section describes the Charm++ Runtime System and what role it plays during the execution of a Charm++ application. The various software layers (i.e. machine layer, Converse, and so on) along with what role they play will be discussed.
This introduces the basic of Charm++ programming. Simple example programs are discussed along with the associated concepts of the Charm++ programming model.
This section introduces the basic components that make up a Charm++ program (chare classes, entry methods, .ci files, and so on). It also introduces some of the Charm++ tools that are use to compile a Charm++ program.
This example "Hello World" program represents the simplest Charm++ program that can be written. The source code is given and key ideas are pointed out to help the reader understand the basics of a Charm++ program.
This example "Hello World" program is slightly more advanced than the basic one presented previously. This program creates multiple chare objects in the form of a chare array.
This section contains example Charm++ programs (some in detail, some left as excersise to the reader).
... Parallel prefix program (code, description of object instances, communication, Charm++ concepts utilized, etc.) ...
... Bubble sort program (code, description of object instances, communication, Charm++ concepts utilized, etc.) ...
... 2D Jacobi program (code, description of object instances, communication, Charm++ concepts utilized, etc.) ...
This section presents some of the abstractions that are contained in Charm++ (reductions, and so on).
This section contains more example Charm++ programs which use one or more of the Charm++ abstractions.
PI Example
...
This section presents some of the tools that are available to Charm++ applications.
This section presents some of the abstractions that are contained in Charm++ (reductions, and so on).
This section covers some of the functionality that is provided by the Converse layer which can be utilized by Charm++ applications, such as Converse Threads and so on.
Converse Threads
...
This section presents some of the libraries and frameworks that have been built on top of the Charm++ Runtime System.
The Adaptive Message Passing Interface (AMPI) is an implementation of Message Passing Interface (MPI). AMPI allows MPI programs, with little to no modification, run on top of and utilize the features of the Charm++ Runtime System (such as virtualization, checkpointing, and so on).
Intro
...
...
Intro
...
From the atomically small to the galactically huge, Charm++ applications are used to do scientfic computing all over the world. Charm++ applications have been shown to scale to as many as 40,000 processors. This section will give you an idea of some of the applications that have been created using Charm++.
Nanoscale Molecular Dynamics (NAMD): Classical Molecular Dynamics
...
LeanCP: Quantum Molecular Dynamics
...
ChaNGa: Cosmology Simulation
...
BigSim: Petascale Systems Simulation
...
Rocstar: Rocket Simulation
(NOTE: A portion of this application has been written using the Charm++ programming model.) ...
An introduction to building the Charm++ Runtime System.
A reference for keywords and options in the interface file.
A reference for keywords and options in the interface file.