A Charm++ egy C ++ alapú párhuzamos objektum-orientált programozási nyelv , amelyet az Illinoisi Egyetem Párhuzamos programozási Laboratóriumában fejlesztettek ki . A Charm++ célja a kódolás hatékonyságának javítása a magas szintű absztrakciókkal, miközben növeli a teljesítményt számos hardverplatformon. A Charm++ programok több objektumra vannak lebontva, amelyek üzeneteken keresztül kommunikálnak, ezeket varázslóknak nevezzük . Amikor egy program meghív egy metódust egy objektumon, a Charm++ futásidejű rendszer üzenetet küld a hívott objektumnak, amely feldolgozható a helyi processzoron vagy egy távoli processzoron párhuzamos számítással. Ez az üzenet a karakteren belüli metódus végrehajtását eredményezi az üzenet aszinkron feldolgozásához.
A varázsjegyek char tömbökké kombinálhatók, és üzenetek küldhetők a tömb egyes karaktereinek és a teljes char tömbnek egyszerre.
A varázslatokat a futásidejű rendszer leképezi a fizikai processzorokra. A varázsjelek processzorokhoz leképezése a programozó számára átlátható, lehetővé teszi a futásidejű rendszer számára, hogy futás közben dinamikusan hozzárendeljen charmokat a különböző processzorokhoz, ami lehetővé teszi a terhelés hatékonyabb elosztását és az érintett processzorok számának változtatását.
Az adaptív MPI ( AMPI ) a Charm++ futási környezet mellett a Message Passing Interface szabvány megvalósítása , amely a Charm++ szolgáltatásait elérhetővé teszi a hagyományosabb MPI programozási modellben. Az AMPI minden MPI-folyamathoz létrehoz egy burkolót Charm++ objektum formájában.