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.
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 ]; }distribuit și paralel | Software pentru calcul|
---|---|
Standarde, biblioteci | |
Software de monitorizare | |
Software de control |