Charm ++

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Charm ++ [1] este un limbaj de programare orientat pe obiecte, bazat pe C ++ și a fost creat cu scopul de a avea un limbaj de abstractizare la nivel înalt pentru programare paralelă fără pierderi de performanță și cu posibilitatea de a susține diferite medii hardware.

Proiectul a fost dezvoltat de Laboratorul de programare paralelă al Universității din Illinois și este în prezent susținut de toate sistemele de operare majore (Windows, Linux și Osx) și este capabil să ruleze pe o mare varietate de sisteme hardware standard sau dedicate precum Cray sau IBM Gena albastră .

Istorie

La sfârșitul anilor 80, echipa de dezvoltare a Universității a creat un software numit C HARM, care a inclus un nucleu, numit Chare Kernels, până în 1993, când noul model de dezvoltare CHARM ++ a fost inclus în acesta. Cu versiunea 4.5 a C HARM, pachetul a fost numit definitiv CHARM ++ și, la începutul anului 1999, totul a fost rescris în C ++. Versiunea actuală, 6.8.0, acceptă limbi precum OpenMP . În plus, cele mai recente versiuni, în plus față de suportarea limbajelor gpu , cum ar fi OpenCl , au propria lor bibliotecă dedicată, numită „Biblioteca managerului GPU”, scrisă în limbajul CUDA .

Structura limbajului

Programele scrise în limbajul Charm ++ sunt împărțite într-o serie de apeluri coordonate către obiecte numite chares : atunci când un program invocă o metodă sau un obiect, sistemul de runtime Charm ++ trimite un mesaj către acel obiect, care poate fi rezident pe procesor local sau pe un cpu la distanță (calcul paralel). Acest mesaj declanșează execuția codului în interiorul carului, gestionând mesajul în mod asincron. Chares-urile pot fi colectate în grupuri numite array chares, către care este posibil să se trimită mesaje care pot implica întreaga matrice sau o singură cară din interior.

Cartarea tarifelor este absolut transparentă pentru programator, permițând alocarea dinamică a tarifelor către procesor în timpul executării programului: rezultatele sunt posibilitatea toleranței la erori , echilibrarea sarcinii măsurabile, punctelor de control și posibilitatea extinderii sau restricționării set de procesoare pe care programul le poate folosi.

Adaptive MPI (AMPI) este o implementare a standardului Message Parsing Interface (MPI) de pe partea de sus a sistemului de runtime Charm ++, oferind funcționalitatea acestuia din urmă într-un model de programare MPI mai tradițional. AMPI încapsulează fiecare proces MPI într-un fir care migrează la nivel de utilizator și care este asociat cu un obiect Charm ++. Prin incorporarea fiecare fir cu o muncă de sezon, programe Ampi pot lua în mod automat beneficia de funcționalitatea sistemului de rulare Charm ++ cu puține (dacă există) modificări ale programului MPI care stau la baza.

Aplicații

Datorită posibilității de a fi utilizat pentru calcul pe platforme paralele, Charm ++ este baza multor programe științifice precum NAMD (dinamică moleculară), OpenAtom (simulări ab-initio), ChaNGa și Spectre (astronomie), ROCFlow (simulare aerospațială) ), Episimdemics (epidemiologie). Toate aceste programe sunt capabile de scalarea perfectă de la un singur PC la sisteme cluter cu mii de procesoare.

Notă

linkuri externe

Controlul autorității LCCN ( EN ) sh2013002454