Paralela unificată C

Unified Parallel C (UPC)
Clasa de limba paralel, imperativ (procedural), structural
Aparut in 1999
Autor Consorțiul UPC
Eliberare 2.12.2/2011-5-18
Tip sistem static
Implementări majore GNU UPC , IBM XL UPC Compilers , HP UPC , Berkeley UPC , Michigan Tech MuPC , Cray UPC
A fost influențat C , AC, Split-C , Preprocesor paralel C
Site-ul web upc.gwu.edu

Unified Parallel C ( UPC ) este o extensie a limbajului de programare C concepută pentru calculul de înaltă performanță pe computere paralele la scară mare, inclusiv sisteme SMP / NUMA cu memorie partajată (spațiu de adresă unic) și memorie distribuită (de exemplu, pe clustere) . Programatorului i se oferă acces la întregul spațiu de adresă partajat global ( PGAS ), variabilele stocate în acesta putând fi citite și modificate de orice procesor. Fiecare valoare este stocată în memoria fizică a unuia dintre procesoare. UPC folosește modelul SPMD (Single Program Multiple Data), în care gradul de paralelism este fixat la pornirea programului, de obicei la nivelul unui fir de execuție per nucleu de procesor.

Pentru a exprima paralelismul, UPC adaugă la ISO C 99 constructele:

UPC a fost influențat semnificativ de trei extensii paralele ISO C 99 anterioare: AC, Split-C și Parallel C Preprocessor (PCP). UPC nu este un superset al acestora, ci mai degrabă o încercare de a combina cele mai bune dintre ele. UPC combină ușurința de programare într-o paradigmă de memorie partajată cu nivelul de control al alocării datelor și performanța unei paradigme de mesagerie.

Exemplu

Un exemplu de înmulțire scalară paralelă [1]

# include <upc_relaxed.h> # definiți N 1000 * THREADS plutitor comun A [ N ], B [ N ]; plutitor comun MUL [ N ]; void scalar_mul_a_b () { int i ; upc_forall ( i = 0 ; i < N ; i ++ ; i ) MUL [ i ] = A [ i ] * B [ i ]; }

Vezi și

Note

  1. http://upc.gwu.edu/tutorials/UPC-SC05.pdf Arhivat 31 ianuarie 2012 la diapozitivul Wayback Machine 21

Link -uri