Welcome to the Charm++ Tutorial

Welcome to the Charm++ Programming Tutorial! We are happy that you are interested in learning about the Charm++ Programming Model and what it can do for you as a programmer. The purpose of this tutorial is to give the reader a basic understanding of how to program using the Charm++ parallel programming model. Charm++ is an object-oriented message passing parallel programming model which has mainly been used in the realm of HPC and scientific computing. Charm++ can be used to write parallel applications that run on a variety of machines ranging from a single notebook/desktop computer to computer clusters containing tens of thousands of processors. To date, Charm++ applications have been shown to scale to as many as forty thousand processors on some of the world's largest and most powerful supercomputers. We are always eager to get feedback from our users. If you have any questions or comments about this tutorial or about Charm++ in general, please feel free to contact us at We hope you find this tutorial helpful.

What the Reader Should Know Before Starting

The reader is expected to be familiar with the C++ programming language and, at least, the basics of the object-oriented programming style used in C++. The reader is also recommended to have a basic understanding of multiple "threads of execution" or concurrency. Previous experience in parallel programming will help, but is not required.

The Charm++ distribution, which contains the Charm++ Runtime System and related tools, libraries, and so on, can be downloaded here.

While working through this tutorial, the reader may find the information in the various manuals helpful (in particular, the The Charm++ Programming Language Manual). For additional information on Charm++ and related software, please see the Charm++ Homepage.