Charm++

С Википедије, слободне енциклопедије

Charm++ je paralelni objektno-orijentisani programski jezik baziran na C++ jeziku i razvijen u Paralelnoj Programskog Laboratoriji na Univerzitetu Ilinoja. Charm++ je dizajniran sa ciljem povećanja programerske produktivnosti, putem omogućavanja visokog nivoa apstrakcije paralelnog programiranja, dok u isto vreme isporučuje efikasno izvršavanje na širokom krugu hardverskih platformi. Programi napisani u Charm++ se razlažu u više objekata, poslužitelja (engl. char), koji kooperiraju putem poruka. Kad je metod jednog objekta pozvan, Charm++ prometni sistem pošalje poruku pozvanom objektu, koji se može nalaziti na lokalnom ili na udaljenom procesoru. Poruka uzrokuje izvršavanje koda objekta na poslužitelju u asinhronom modu.

Poslužitelji se mogu organizovati u uređene kolekcije zvane nizovi poslužitelja. Poruke se mogu poslati pojedinim poslužiteljima u nizu, ili celom nizu simultano. Poslužitelji programa su alocirani na fizičke procesore jednim adaptivnim izvršnim sistemom. Mapiranje poslužitelja na procesore je transparentno za programera, i to je ta transparentnost da dozvoljava izvršnom sistemu da dinamički menja asocijacije poslužitelja i procesora u toku egzekucije programa. Na taj način se ostvaruje balansiranje opterećenja, tolerancija greški, i automatska provera. To isto tako daje paralelnom programu mogućnost smanjenja i uvećanja broja korišćenih procesora.

Molekularno dinamički simulacioni paket NAMD je implementiran koristeći Charm++.

Adaptivni MPI (AMPI) je implementacija Interfejs predavanja poruka standarda preko Charm++ izvršnog sistema. To daje Charm++ sistemu tradicionalni MPI programski model. AMPI stavlja svaki MPI proces unutar pokretne niti sa korisnički-nivoom koja je implementirana kao Charm++ objekt. Usađivanjem svake niti sa poslužiteljom, AMPI programi mogu automatski da iskoriste osobine Charm++ izvršnog sistema sa malo ili bez promena na potpornom MPI programu.

Vidi još[уреди | уреди извор]

Reference[уреди | уреди извор]

Spoljašnje veze[уреди | уреди извор]