Wavy Abstract Background

Q & A

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

Release

Charmworks debuts CharmMPI, offering unprecedented performance for MPI codes

News

NAMD, a Charm++ application, featured in Gordon Bell Special Prize for COVID-19 Research

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