Charm++ er et C ++- baseret parallelt objektorienteret programmeringssprog udviklet ved Parallel Programming Laboratory ved University of Illinois . Charm++ er designet til at forbedre kodningseffektiviteten gennem abstraktioner på højt niveau og samtidig øge ydeevnen på en lang række hardwareplatforme. Charm++ programmer er opdelt i flere objekter, der kommunikerer gennem beskeder, kaldet charms . Når et program kalder en metode på et objekt, sender Charm++ runtime-systemet en besked til det kaldte objekt, som kan behandles på den lokale processor eller på en fjernprocessor i parallel computing. Denne meddelelse får metoden inde i char til at blive udført for at behandle meddelelsen asynkront.
Charms kan kombineres til char -arrays , og beskeder kan sendes til individuelle chars i arrayet og til hele char-arrayet på samme tid.
Fortryllelser kortlægges til fysiske processorer af runtime-systemet. Kortlægningen af charms til processorer er gennemsigtig for programmøren, det giver runtime-systemet mulighed for dynamisk at tildele charms til forskellige processorer under runtime, hvilket gør det muligt mere effektivt at fordele belastningen og ændre antallet af involverede processorer.
Adaptive MPI ( AMPI ) er en implementering af Message Passing Interface- standarden oven på Charm++ runtime, der gør Charm++ faciliteter tilgængelige i den mere traditionelle MPI-programmeringsmodel. AMPI opretter en indpakning for hver MPI-proces i form af et Charm++ objekt.