![](https://static.wixstatic.com/media/11062b_6a134fc09ea34833a17d295e295ab517f000.jpg/v1/fill/w_288,h_162,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_avif,quality_auto/11062b_6a134fc09ea34833a17d295e295ab517f000.jpg)
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](https://static.wixstatic.com/media/486781_eab08e573ca34dd6a33f9e1184adcdcf~mv2.png/v1/fill/w_84,h_84,al_c,q_85,usm_0.66_1.00_0.01,blur_3,enc_avif,quality_auto/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](https://static.wixstatic.com/media/486781_22c16d39c0484aca8344fb7cd2f42d5a~mv2.png/v1/fill/w_84,h_84,al_c,q_85,usm_0.66_1.00_0.01,blur_3,enc_avif,quality_auto/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](https://static.wixstatic.com/media/486781_bf58ac7495dc4088a69b6e436db4d7f5~mv2.png/v1/fill/w_84,h_84,al_c,q_85,usm_0.66_1.00_0.01,blur_3,enc_avif,quality_auto/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](https://static.wixstatic.com/media/486781_bca8002e7caf419ab3253895abed0e57~mv2.png/v1/fill/w_84,h_84,al_c,q_85,usm_0.66_1.00_0.01,blur_3,enc_avif,quality_auto/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](https://static.wixstatic.com/media/486781_07443f5f04914f5ba64b12da176fdeb4~mv2.png/v1/fill/w_84,h_84,al_c,q_85,usm_0.66_1.00_0.01,blur_3,enc_avif,quality_auto/ae.png)