For Sequential Code
Charm++ offers increased performance and the ability for code to continue increasing in performance, even as computer processors stop getting faster. You will design a parallel infrastructure in Charm++ and move sections of your sequential code into this superstructure, typically all in C++. Many original sequential functions will remain unchanged.
For Shared-Memory Code
Charm++ offers increased performance on equal single-node hardware with shared memory. Further, the code will scale to larger problem sizes with increased performance by running across multiple computer nodes in a ‘distributed-memory’ fashion, with minor code modifications.
For Distributed-Memory Parallel Code
Charm++ offers improved ability to express sophisticated parallel programs, seamless automatic fault tolerance, and expert-quality facilities to automatically address concerns of communication locality, load imbalance, message aggregation, and more, that would otherwise be left unhandled or receive an ad-hoc per-application treatment.