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.
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.
Load Balancing
Load Balancing
Charm++ exploits logical decomposition to enable dynamic overlap of communication and computation as the application executes.
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!
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.