Charm++ je paralelní objektově orientovaný programovací jazyk založený na C ++ vyvinutý v Parallel Programming Laboratory na University of Illinois . Charm++ je navržen tak, aby zlepšil efektivitu kódování prostřednictvím abstrakce na vysoké úrovni a zároveň zvýšil výkon na široké škále hardwarových platforem. Programy Charm++ jsou rozděleny do několika objektů, které komunikují prostřednictvím zpráv, nazývaných kouzla . Když program volá metodu na objektu, běhový systém Charm++ odešle zprávu volanému objektu, která může být zpracována na lokálním procesoru nebo na vzdáleném procesoru v paralelním zpracování. Tato zpráva způsobí, že metoda uvnitř znaku bude provedena pro asynchronní zpracování zprávy.
Charms lze kombinovat do char polí a zprávy je možné posílat jednotlivým charům v poli a zároveň celému char poli.
Očarování mapuje na fyzické procesory běhový systém. Mapování kouzla na procesory je pro programátora transparentní, umožňuje běhovému systému dynamicky přiřazovat kouzla za běhu různým procesorům, což umožňuje efektivněji rozložit zátěž a změnit počet zapojených procesorů.
Adaptivní MPI ( AMPI ) je implementace standardu Message Passing Interface nad runtime Charm++, která zpřístupňuje zařízení Charm++ v tradičnějším programovacím modelu MPI. AMPI vytvoří obal pro každý proces MPI ve formě objektu Charm++.