Charm++ is designed with the goal of enhancing programmer productivity by providing a high-level abstraction of a parallel program while at the same time delivering good performance on a wide variety of underlying hardware platforms.
Applications implemented using Charm++ include NAMD (molecular dynamics) and OpenAtom (quantum chemistry), ChaNGa and SpECTRE (astronomy), EpiSimdemics (epidemiology), and Cello/Enzo-E (adaptive mesh refinement).
Users can take pre-existing MPI applications, recompile them using AMPI's compiler wrappers, and begin experimenting with process virtualization, dynamic load balancing, and fault tolerance.
These threads are fast to context switch between, and so multiple of them can be co-scheduled on the same core based on the availability of messages for them.
For more information on AMPI, see the manual: http://charm.cs.illinois.edu/manuals/html/ampi/manual.html Charm4py[3] is a Python parallel computing framework built on top of the Charm++ C++ runtime, which it uses as a shared library.