Unified Parallel C (UPC) | |
---|---|
Kieliluokka | rinnakkainen, pakottava (menettelyllinen), rakenteellinen |
Esiintyi | 1999 |
Tekijä | UPC-konsortio |
Vapauta | 2.12.2011-5-18 |
Tyyppijärjestelmä | staattinen |
Tärkeimmät toteutukset | GNU UPC , IBM XL UPC Compilers , HP UPC , Berkeley UPC , Michigan Tech MuPC , Cray UPC |
Vaikutettu | C , AC, Split-C , Rinnakkais C-esiprosessori |
Verkkosivusto | upc.gwu.edu |
Unified Parallel C ( UPC ) on C-ohjelmointikielen laajennus, joka on suunniteltu tehokkaaseen laskemiseen suurissa rinnakkaisissa tietokoneissa, mukaan lukien SMP / NUMA-järjestelmät, joissa on jaettu muisti (yksi osoitetila) ja hajautettu muisti (esimerkiksi klustereissa). . Ohjelmoija saa pääsyn koko globaaliin jaettuun osoiteavaruuteen ( PGAS ), siihen tallennettuja muuttujia voi lukea ja muokata mikä tahansa prosessori. Jokainen arvo tallennetaan yhden prosessorin fyysiseen muistiin. UPC käyttää SPMD (Single Program Multiple Data) -mallia, jossa rinnakkaisuuden aste on kiinteä ohjelman käynnistyksen yhteydessä, tyypillisesti yhden suoritussäikeen tasolla prosessorin ydintä kohden.
Ilmaistakseen rinnakkaisuutta UPC lisää ISO C 99 :ään konstruktit:
UPC:hen vaikutti merkittävästi kolme aikaisempaa ISO C 99 rinnakkaislaajennusta: AC, Split-C ja Parallel C Preprocessor (PCP). UPC ei ole niiden supersetti, vaan pikemminkin yritys yhdistää niiden parhaat puolet. UPC yhdistää ohjelmoinnin helppouden jaetun muistin paradigmassa datan allokoinnin hallinnan tasoon ja viestintäparadigman suorituskykyyn.
Esimerkki rinnakkaisesta skalaarikerronnasta [1]
# sisältää <upc_relaxed.h> # define N 1000 * KIEREET jaettu float A [ N ], B [ N ]; jaettu float MUL [ N ]; void scalar_mul_a_b () { int i ; upc_forall ( i = 0 ; i < N ; i ++ ; i ) MUL [ i ] = A [ i ] * B [ i ]; }hajautettuun ja rinnakkaislaskentaan _ _ | Ohjelmisto|
---|---|
Standardit, kirjastot | |
Valvontaohjelmisto | |
Ohjausohjelmisto |