Charm++ on C ++ -pohjainen rinnakkainen olio-ohjelmointikieli , joka on kehitetty Illinoisin yliopiston Parallel Programming Laboratoryssa . Charm++ on suunniteltu parantamaan koodaustehokkuutta korkean tason abstraktioiden avulla ja samalla lisäämään suorituskykyä useilla eri laitteistoalustoilla. Charm++-ohjelmat on jaettu useisiin viesteihin vuorovaikutuksessa oleviin objekteihin, joita kutsutaan charmiksi .(chare). Kun ohjelma kutsuu menetelmää objektissa, Charm++-ajonaikainen järjestelmä lähettää kutsutulle objektille viestin, joka voidaan käsitellä paikallisella prosessorilla tai etäprosessorilla rinnakkaislaskennassa. Tämä viesti saa aikaan merkin sisällä olevan menetelmän suorittamisen, joka käsittelee viestin asynkronisesti.
Charmeja voidaan yhdistää char- taulukoiksi ja viestejä voidaan lähettää taulukon yksittäisille merkeille ja koko merkkijonolle samanaikaisesti.
Ajonaikainen järjestelmä yhdistää lumoukset fyysisiin prosessoreihin. Oikopolkujen yhdistäminen prosessoreihin on ohjelmoijalle läpinäkyvää, sen avulla ajonaikainen järjestelmä voi dynaamisesti määrittää oikopolkuja eri prosessoreille ajon aikana, mikä mahdollistaa kuormituksen tehokkaamman jakamisen ja mukana olevien prosessorien määrän muuttamisen.
Adaptive MPI ( AMPI ) on Charm++- ajoajan lisäksi Charm++-ajoajan lisäksi Charm++-toiminnot, jotka ovat käytettävissä perinteisemmässä MPI-ohjelmointimallissa. AMPI luo kullekin MPI-prosessille kääreen Charm++-objektin muodossa.