Wavy Abstract Background

News

Two projects using Charm++ named finalists for Gordon Bell Special Prize

News

Presentations from Charm++ Workshop 2021 Now Available
 

Q & A

The Power of Charm++ and Runtime Systems: Interview with Laxmikant Kale

Introducing the Charm++ Programming System

From a single processor to distributed memory machines, Charm++ applications run a unified programming model that scales with your needs

Features

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

work-par.png

Processor Virtualization

Processor Virtualization

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.

lb_edited.png

Load Balancing

Load Balancing

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

overlap.png

Communication & Computation Overlap

Communication & Computation Overlap

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

ft.png

Checkpointing & Resilience

Checkpointing & Resilience

The dynamic scheduler in the Charm++ runtime system executes work as its data becomes available. This minimizes time spent idle, waiting for communication and synchronization. It also enables concurrent composition of multiple modules.

ae.png

Asynchronous Execution

Asynchronous Execution