1 Introduction

This manual describes CHARM++, an object oriented portable parallel programming language based on C++. Its program structure, execution model, interface language constructs and runtime system calls are described here1.

CHARM++ has continuously evolved since the OOPSLA 1993 paper. The earlier versions modified the C++ syntax to support CHARM++ primitives, and contained a full-fledged CHARM++ translator that parsed the CHARM++ syntactic extensions as well as the C++ syntax to produce a C++ program, which was later compiled using a C++ compiler. The current version does not augment the C++ syntax, and does not use a CHARM++ translator as in previous versions. Instead, the older constructs are converted to calls into the runtime library, several new constructs are added, and minimal language constructs are used to describe the interfaces.

CHARM++ is an explicitly parallel language based on C++ with a runtime library for supporting parallel computation called the Charm kernel. It provides a clear separation between sequential and parallel objects. The execution model of CHARM++ is message driven, thus helping one write programs that are latency-tolerant. CHARM++ supports dynamic load balancing while creating new work as well as periodically, based on object migration. Several dynamic load balancing strategies are provided. CHARM++ supports both irregular as well as regular, data-parallel applications. It is based on the CONVERSE interoperable runtime system for parallel programming.

Currently the parallel platforms supported by CHARM++ are the BlueGene/L,BlueGene/P, PSC Lemieux, IBM SP, SGI Origin2000, Cray XT3/4, Cray X1, Cray T3E, a single workstation or a network of workstations from Sun Microsystems (Solaris), IBM RS-6000 (AIX) SGI (IRIX 5.3 or 6.4), HP (HP-UX), Intel x86 (Linux, Windows 98/2000/XP), Intel IA64, Intel x86_64, multicore x86 and x86_64, and Apple Mac. The communication protocols and infrastructures supported by CHARM++ are UDP, TCP, Myrinet, Infiniband, Quadrics Elan, Shmem, MPI and NCSA VMI. CHARM++ programs can run without changing the source on all these platforms. Please see the CHARM++/CONVERSE Installation and Usage Manual for details about installing, compiling and running CHARM++ programs.



Subsections

June 29, 2008
Charm Homepage