What is Charm++?

Charm++ is a mature, highly scalable parallel programming system, and is an alternative to current shared and distributed methods. Though written in a C++ skeleton, it is compatible with Fortran, C, and C++. Code written in MPI can call Charm++, and Charm++ can call MPI, OpenMP, CUDA, and more.

Where Charm++ Helps

Charm++ helps creators of compute intensive software deliver better shared and distributed memory parallel application performance, and improves overall throughput and reduces development and maintenance effort by enabling object oriented methods, dynamic load balancing, and fault tolerance with high level C++ style programming.

Literature


Services


Charm++


Highlights


AMPI


Overview Presentation

Features

Work Parallelization

The problem is broken down into logical units, which are automatically mapped to processors.

Load Balancing

Load imbalance arises in many HPC applications, and also occurs on mixed-hardware clusters. Rather than make every program solve this on its own, Charm++ provides automatic load balancing for all applications.

Automatic Communication & Computation Overlap

Charm++ exploits logical decomposition to enable dynamic overlap of communication and computation as the application executes.

Checkpointing & Resilience

Applications written in Charm++ can automatically checkpoint and restart with no extra code or special OS support. They can also run through node failures!

Power/Temperature Management

Charm++ can adapt execution to limit power consumption, reduce hotspots to improve reliability, and conserve energy to reduce cluster TCO.


Tools

Projections: an extensive suite for understanding the performance of your applications.

LiveViz: get live visualization data from any application.

CharmDebug: debug your Charm++ code interactively

Libraries

Collision Detection: a highly scalable collision detection library written in Charm++.

Sorting: a highly efficient Charm++ library that can be used to sort billions of keys.