Rinnakkaismuisti - Parallel RAM
In Computer Science , joka on rinnakkainen random-access kone ( rinnakkainen RAM tai PRAM ) on yhteinen-muisti abstrakti kone . Kuten nimestään käy ilmi, PRAM on tarkoitettu rinnakkaislaskennan analogiseksi hajasaantikoneelle (ei pidä sekoittaa hajasaantimuistiin ). Samalla tavalla kuin peräkkäisten algoritmien suunnittelijat käyttävät RAM-muistia algoritmisen suorituskyvyn (kuten aikakompleksisuuden) mallintamiseen, rinnakkaisalgoritmisuunnittelijat käyttävät PRAM-mallia rinnakkaisten algoritmien suorituskyvyn mallintamiseen (kuten aikakompleksisuus, jossa prosessoreiden määrä oletetaan yleensä myös ilmoitettu). Samoin kuin tavassa, jolla RAM-malli laiminlyö käytännön asioita, kuten välimuistin käyttöajan päämuistiin verrattuna, PRAM-malli laiminlyö sellaiset ongelmat kuin synkronoinnin ja tiedonsiirron , mutta tarjoaa minkä tahansa määrän (ongelman koosta riippuen) prosessoreita. Esimerkiksi algoritmin hinta arvioidaan käyttämällä kahta parametria O (aika) ja O (aika × prosessorin numero).
Luku- / kirjoitusristiriidat
Luku- / kirjoitusristiriidat, joita yleisesti kutsutaan lukituksiksi samaan jaettuun muistipaikkaan samanaikaisesti, ratkaistaan jollakin seuraavista strategioista:
- Yksinoikeus lukea yksinoikeudella (EREW) - jokainen muistisolu voidaan lukea tai kirjoittaa vain yhdelle prosessorille kerrallaan
- Rinnakkaislukukirjoitus (CREW) - useat prosessorit voivat lukea muistisolun, mutta vain yksi voi kirjoittaa kerrallaan
- Eksklusiivinen samanaikainen kirjoitus (ERCW) - ei koskaan otettu huomioon
- Samanaikainen luku samanaikainen kirjoitus (CRCW) - useat prosessorit voivat lukea ja kirjoittaa. CRCW PRAM -laitetta kutsutaan joskus samanaikaiseksi pääsykoneeksi .
Tässä E ja C tarkoittavat vastaavasti yksinoikeutta ja vastaavaa. Luku ei aiheuta ristiriitoja, kun samanaikainen kirjoitus määritellään edelleen seuraavasti:
- Common - kaikki prosessorit kirjoittavat saman arvon; muutoin on laitonta
- Mielivaltainen - vain yksi mielivaltainen yritys onnistuu, toiset jäävät eläkkeelle
- Prioriteetti - prosessorin sijoitus osoittaa, kuka kirjoittaa
- Toinen tyyppinen matriisinpienennystoiminto, kuten SUMMA, Looginen JA MAX.
Useita yksinkertaistavia oletuksia tehdään ottaen huomioon PRAM: n algoritmien kehittäminen. He ovat:
- Koneessa olevien prosessorien lukumäärää ei ole rajoitettu.
- Mihin tahansa muistipaikkaan pääsee tasaisesti mistä tahansa prosessorista.
- Järjestelmän jaetun muistin määrää ei ole rajoitettu.
- Resurssikilpailu puuttuu.
- Näille koneille kirjoitetut ohjelmat ovat yleensä SIMD- tyyppisiä .
Tällaiset algoritmit ovat hyödyllisiä ymmärtämään samanaikaisuuden hyödyntämistä, jakamalla alkuperäinen ongelma samanlaisiksi alaongelmiksi ja ratkaisemaan ne rinnakkain. Muodollisen P-RAM-mallin käyttöönoton Wyllien vuonna 1979 tekemässä opinnäytetyössä oli tarkoitus kvantifioida rinnakkaisten algoritmien analyysi Turingin koneen analogisella tavalla . Analyysi keskittyi MIMD-mallintamiseen CREW-mallin avulla, mutta osoitti, että monet variantit, mukaan lukien CRCW-mallin toteuttaminen ja SIMD-koneella toteutaminen, olivat mahdollisia vain jatkuvalla yleiskustannuksella.
Toteutus
PRAM-algoritmeja ei voida rinnastaa CPU: n ja dynaamisen RAM-muistin (DRAM) yhdistelmään, koska DRAM ei salli samanaikaista käyttöä; mutta ne voidaan toteuttaa laitteistona tai lukea / kirjoittaa kenttäohjelmoitavan porttiryhmän (FPGA) sisäisiin staattisiin hajasaantimuistilohkoihin (SRAM ), se voidaan tehdä CRCW-algoritmilla.
PRAM (tai RAM) -algoritmien käytännön relevanssin testi riippuu kuitenkin siitä, tarjoaako niiden kustannusmalli tehokkaan abstraktin joistakin tietokoneista; kyseisen tietokoneen rakenne voi olla aivan erilainen kuin abstrakti malli. Tieto lisättävistä ohjelmisto- ja laitteistokerroksista on tämän artikkelin ulkopuolella. Mutta artikkelit, kuten Vishkin (2011), osoittavat, kuinka PRAM: n kaltaista abstraktiota voidaan tukea eksplisiittisellä monisäikeisellä (XMT) paradigmalla, ja artikkelit, kuten Caragea & Vishkin (2011), osoittavat, että PRAM-algoritmi maksimaaliselle virtausongelmalle voi tarjota voimakkaita nopeuksia samaan ongelmaan verrattuna nopeimpaan sarjaohjelmaan. Artikkeli Ghanim, Vishkin & Barua (2018) osoitti, että PRAM-algoritmit sellaisenaan voivat saavuttaa kilpailukykyisen suorituskyvyn jopa ilman ylimääräisiä ponnisteluja heittääksesi ne monisäikeisiksi ohjelmiksi XMT: lle.
Esimerkkikoodi
Tämä on esimerkki SystemVerilog- koodista, joka löytää taulukon maksimiarvon vain kahdessa kellojaksossa. Se vertaa kaikkia matriisin elementtien yhdistelmiä ensimmäisellä kellolla ja yhdistää tuloksen toisella kellolla. Se käyttää CRCW-muistia; m[i] <= 1ja maxNo <= data[i]kirjoitetaan samanaikaisesti. Samanaikaisuus ei aiheuta ristiriitoja, koska algoritmi takaa, että sama arvo kirjoitetaan samaan muistiin. Tämä koodi voidaan suorittaa FPGA- laitteistolla.
module FindMax #(parameter int len = 8)
(input bit clock, resetN, input bit[7:0] data[len], output bit[7:0] maxNo);
typedef enum bit[1:0] {COMPARE, MERGE, DONE} State;
State state;
bit m[len];
int i, j;
always_ff @(posedge clock, negedge resetN) begin
if (!resetN) begin
for (i = 0; i < len; i++) m[i] <= 0;
state <= COMPARE;
end else begin
case (state)
COMPARE: begin
for (i = 0; i < len; i++) begin
for (j = 0; j < len; j++) begin
if (data[i] < data[j]) m[i] <= 1;
end
end
state <= MERGE;
end
MERGE: begin
for (i = 0; i < len; i++) begin
if (m[i] == 0) maxNo <= data[i];
end
state <= DONE;
end
endcase
end
end
endmodule
Katso myös
- PRAM-algoritmien analyysi
- Flynnin taksonomia
- Lukitsematon ja odottamaton algoritmi
- Satunnainen kone
- Rinnakkainen ohjelmointimalli
- XMTC
- Rinnakkainen ulkoinen muisti (malli)
Viitteet
- Eppstein, David; Galil, Zvi (1988), "Yhdistelmälaskennan rinnakkaiset algoritmiset tekniikat", Annu. Rev. Comput. Sci. , 3 : 233–283, doi : 10.1146 / annurev.cs.03.060188.001313
- JaJa, Joseph (1992), Johdatus rinnakkaisalgoritmeihin , Addison-Wesley, ISBN 0-201-54856-9
- Karp, Richard M .; Ramachandran, Vijaya (1988), Tutkimus rinnakkaisalgoritmeista jaettuja muistikoneita varten , Kalifornian yliopisto, Berkeley, EECS-laitos, tekniikka. Edustaja UCB / CSD-88-408
- Keller, Jörg; Christoph Keßler; Jesper Träff (2001). Käytännön PRAM-ohjelmointi . John Wiley ja Pojat. ISBN 0-471-35351-5.
- Vishkin, Uzi (2009), Thinking in Parallel: Some Basic Data-Parallel Algorithms and Techniques, 104 sivua (PDF) , luokan muistiinpanot rinnakkaisalgoritmeista vuodesta 1992 lähtien Marylandin yliopistossa, College Parkissa, Tel Avivin yliopistossa ja Technion
- Vishkin, Uzi (2011), "Yksinkertaisen abstraktion käyttö tietojenkäsittelyn keksimiseksi rinnakkaisuuden puolesta", ACM : n viestintä , 54 : 75–85, doi : 10.1145 / 1866739.1866757
- Caragea, George Constantin; Vishkin, Uzi (2011), "Lyhyt ilmoitus: Parempia nopeuksia rinnakkaiselle maksimivirtaukselle", Proceedings of the 23. ACM symposium on Parallelism in algorithms and architecture - SPAA '11 , s. 131, doi : 10.1145 / 1989493.1989511 , ISBN 9781450307437
- Ghanim, Fady; Vishkin, Uzi; Barua, Rajeev (2018), "Easy PRAM-pohjaisia korkean suorituskyvyn rinnakkaisohjelmointi ICE", IEEE Transactions on Rinnakkaiset ja hajautetut järjestelmät , 29 (2): 377-390, doi : 10.1109 / TPDS.2017.2754376 , HDL : 1903 / 18521
Ulkoiset linkit
- Saarlandin yliopiston PRAM-prototyyppi
- Marylandin yliopiston PRAM-On-Chip-prototyyppi . Tämä prototyyppi pyrkii asettamaan useita rinnakkaisia prosessoreita ja kankaan niiden yhdistämiseksi yhdelle sirulle
- XMTC: PRAM-tyyppinen ohjelmointi - ohjelmistojulkaisu