Stabiloivat synkronoijat ja nimeäminen

Samankaltaiset tiedostot
Stabiloivat synkronoijat ja nimeäminen

Stabilointi. Marja Hassinen. p.1/48

Stabilointi. arvosana. arvostelija. Marja Hassinen

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007

Paikallinen stabilointi

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmi on periaatteellisella tasolla seuraava:

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen

Johdatus graafiteoriaan

Itsestabilointi: perusmääritelmiä ja klassisia tuloksia

(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun:

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Hajautetut algoritmit. seminaari syksyllä 2007 vastuuhenkilö Jyrki Kivinen toinen vetäjä Timo Karvi

Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003

Algoritmit 2. Luento 2 To Timo Männikkö

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

Tarkennamme geneeristä painamiskorotusalgoritmia

v 1 v 2 v 3 v 4 d lapsisolmua d 1 avainta lapsen v i alipuun avaimet k i 1 ja k i k 0 =, k d = Sisäsolmuissa vähint. yksi avain vähint.

Oikeasta tosi-epätosi -väittämästä saa pisteen, ja hyvästä perustelusta toisen.

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Jaetun muistin muuntaminen viestinvälitykseksi

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

Fibonacci-kasoilla voidaan toteuttaa samat operaatiot kuin binomikasoilla.

7.4 Sormenjälkitekniikka

58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut

Algoritmit 2. Luento 2 Ke Timo Männikkö

811312A Tietorakenteet ja algoritmit V Verkkojen algoritmeja Osa1 : Leveys- ja syvyyshaku

Algoritmit 2. Luento 4 To Timo Männikkö

Verkon värittämistä hajautetuilla algoritmeilla

Algoritmit 2. Luento 11 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen)

811312A Tietorakenteet ja algoritmit, , Harjoitus 6, Ratkaisu

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Algoritmit 1. Demot Timo Männikkö


811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 2, , vastauksia

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Tietorakenteet, laskuharjoitus 10, ratkaisuja. 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

v 8 v 9 v 5 C v 3 v 4

Miten käydä läpi puun alkiot (traversal)?

811312A Tietorakenteet ja algoritmit V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

Datatähti 2019 loppu

Algoritmit 2. Luento 4 Ke Timo Männikkö

Pienin virittävä puu (minimum spanning tree)

10. Painotetut graafit

58131 Tietorakenteet (kevät 2008) 1. kurssikoe, ratkaisuja

811312A Tietorakenteet ja algoritmit, VI Algoritmien suunnitteluparadigmoja

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

A TIETORAKENTEET JA ALGORITMIT

Itsestabiloivat algoritmit: Paikallinen stabilointi

14 Tasapainotetut puurakenteet

A TIETORAKENTEET JA ALGORITMIT

Algoritmit 2. Demot Timo Männikkö

Koe ma 1.3 klo salissa A111, koeaika kuten tavallista 2h 30min

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

Algoritmit 2. Luento 5 Ti Timo Männikkö

1. Tarkastellaan seuraavaa stokastista Petri-verkkoa: p 2. p 1. lock write 1

Tietorakenteet, laskuharjoitus 7, ratkaisuja

1. Johdanto. Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

1.1 Tavallinen binäärihakupuu

B + -puut. Kerttu Pollari-Malmi

10. Painotetut graafit

Algoritmit 2. Luento 12 Ke Timo Männikkö

58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto)

Algoritmit 1. Luento 13 Ma Timo Männikkö

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...

4. Joukkojen käsittely

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

UML -mallinnus TILAKAAVIO

811120P Diskreetit rakenteet

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

Luento 5. Timo Savola. 28. huhtikuuta 2006

3.4 Peruutus (backtracking)

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Algoritmit 1. Luento 13 Ti Timo Männikkö

Ohjelmoinnin perusteet Y Python

2 Konekieli, aliohjelmat, keskeytykset

Luku 8. Aluekyselyt. 8.1 Summataulukko

Oppijan saama palaute määrää oppimisen tyypin

Algoritmit 2. Luento 6 Ke Timo Männikkö

13 Lyhimmät painotetut polut

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

Silmukkaoptimoinnista

Algoritmit 1. Luento 11 Ti Timo Männikkö

Kuittaukset verkkolaskutuksessa (sanoman välityksessä) Pohjustus VLFn Kuittaus-työryhmälle V-M Sahlberg / Apix Messaging Oy Versio: 27.1.

Algoritmit 1. Demot Timo Männikkö

Kysymyksiä koko kurssista?

Transkriptio:

Stabiloivat synkronoijat ja nimeäminen Mikko Ajoviita 2.11.2007

Synkronoija Synkronoija on algoritmi, joka muuntaa synkronoidun algoritmin siten, että se voidaan suorittaa synkronoimattomassa järjestelmässä. Algoritmin suunnittelu ja analyysi on usein helpompaa kuin synkronoidussa järjestelmässä. Synkronisessa järjestelmässä prosessorit vaihtavat tilaa samanaikaisesti, joten tietyn alkutilan jälkeinen suoritus voidaan määritellä tarkasti. Synkronoimattomassa järjestelmässä tietyn alkutilan jälkeinen suoritus taas ei ole yksiselitteinen.

Aina ei kuitenkaan ole järkevää käyttää synkronoijaa, koska tehokkuus kärsii. Kun etenemisnopeutta rajoitetaan synkronoinnilla, niin nopeimmat prosessorit joutuvat suorittamaan toimenpiteitä hitaimpien prosessorien tahtiin. Lisäksi nopeammat prosessorit eivät voi auttaa hitaampia prosessoreja suorituksessa. Seuraavaksi tarkastelemme kolmea erilaista synkronoijaa Yksinkertaista itsestabiloivaa alfa-synkronoijan rajoittamatonta versiota. Rajoitettua versiota alfa-synkronoijasta. Sekä beta-synkronoijaa.

Rajoittamaton alfa-synkronoija Alfa-synkronoija käyttää apunaan itsestabiloivaa datalink algoritmia. Jokainen sanoma välittyy perille ja samoin kuittaus viestistä takaisin. Prosessori P lähettää viestin m prosessorille Q ja jää odottamaan kuittausta. P ei lähetä uutta viestiä m ennen kuin on saanut kuittauksen. Kuittausviesti voi sisältää tiedon prosessorin Q tilasta.

Jokaisella prosessorilla on tilamuuttuja phase i. Alfa-synkronoijan toiminta on määritelty seuraavasti: 1. Kahden naapurin tilamuuttujien arvot saavat erota toisistaan korkeintaan yhdellä. 2. Jokaista tilamuuttujaa kasvatetaan äärettömän monta kertaa.

Itsestabiloiva alfa-synkronoija (rajoittamaton versio) 1. do forever 2. forall P j N(i) do received j := false 3. do 4. DLsend (phase i ) 5. upon DLreceive(ack j, phase j ) 6. received j := true 7. phase ji := phase j 8. upon DLreceive(phase j ) 9. phase ji := phase j 10. until P j N(i) received j := true 11. if P j N(i) phase i phase ji then 12. phase i := phase i + 1 13. od

Algoritmin oikeellisuus perustuu kahteen lemmaan. Lemma 1. Jokaisen kelvollisen suorituksen jälkeen päädytään sellaiseen alkutilaan, jossa kaikkien naapuriprosessorien tilamuuttujat eroavat toisistaan korkeintaan yhdellä. Lemma 2. Jokaisessa kelvollisessa suorituksessa tilamuuttujia kasvatetaan äärettömän monta kertaa Rajoittamaton versio ei kuitenkaan toimi käytännössä.

Rajoitettu alfa-synkronija Ongelman kuvaus säilyy samana kuin rajoittamattomassakin versiossa. Tilamuuttajien arvossa on mukana modulo M,, missä M N (N on prosessorien lukumäärä.) Jokaisella prosessorilla on lisäksi nollausmuuttuja reset, i joka saa arvoja välillä 0-2N.

Ideana on selvittää eroaako kahden naapurin tilamuuttuja yli yhdellä toisistaan. Tällaisessa tapauksessa kaikkien prosessorien tilamuuttujat nollataan. Eli päästään alkutilaan, jossa kaikkien tilat ovat nollia. Stabiloinnin jälkeen laskenta etenee kuin rajoittamattomassakin versiossa.

Nollaaminen Kun prosessori huomaa, että sen tilamuuttuja eroaa yli yhdellä naapurista, se asettaa oman nollausmuuttujansa nollaksi. Tämän seurauksena naapureiden nollausmuuttujat eivät voi olla suurempia kuin yksi. Naapureiden seuraavien naapureiden nollausmuuttuja ei voi olla suurempi kuin kaksi jne. Siten prosessori, joka asettaa nollausmuuttujansa nollaksi, aiheuttaa nollausaallon koko verkkoon.

Itsestabiloiva alfa-synkronoija (rajoitettu versio) 1 do forever 2. forall P j N(i) do received j = false 3. PhaseUpdate = false 4. ResetUpdate = false 5. do 6. DLsend(phase j, reset j ) //start send to all neighbours 7. upon DLreceive(ack j, phase j, reset j ) 8. received j = true 9. UpdatePhase( ) 10. upon DLreceive(phase j, reset j ) 11. UpdatePhase( ) 12. until P j N(i) received j = true //all send terminated 13. If ResetUpdate = false then 14. if P j N(i) reset i reset ji then reset i = min(2n, reset i +1) 15. if PhaseUpdate = false and 16. P j N(i) phase i {phase ji, (phase ji -1)mod M} then 17. phase i = (phase i +1)mod M 18. od

19. UpdatePhase() 20. phase ji = phasej 21. reset ji = reset j 22. If reset i > reset ji then 23. reset i = min(2n, reset ji + 1) 24. ResetUpdate = true 25. If phase ji {(phase i -1)mod M, phase i, (phase i +1) mod M} then 26. reset i = 0 27. ResetUpdate = true 28. If reset i 2N then 29. phase i = 0 30. PhaseUpdate = true

Algoritmin oikeellisuus perustuu kahteen lemmaan. Lemma 1. Jokainen kelvollinen suoritus päättyy turvalliseen tilaan, jos mikään prosessori ei aseta nollausmuuttujaansa nollaksi. Lemma 2. Jokainen kelvollinen suoritus päättyy turvalliseen tilaan, jos jokin prosessori asettaa nollausmuuttujansa nollaksi.

Beta-synkronoija Käytetään apuna jaettua muistia prosessorien välillä. Jokaisella prosessorilla on värimuuttuja. Tarkoituksena on värjätä verkko saman väriseksi. Synkronointi voidaan jakaa kolmeen osaan: 1. Pohjustuksena muodostetaan virittävä puu, jossa on erikseen määritelty juuri. (Leader Election Algorithm and Spanning Tree Construction Algorithm).

2. Virittävä puu värjätään juuresta lähtien. - Juuri välittää tiedon omasta väristään lapsilleen puussa. - Muut prosessorit lukevat vanhempansa värin ja välittävät sen omille lapsilleen puussa. - Näin koko puu värjäytyy samalla värillä. värjäys P 1 värjäys P 2 P 3 värjäys värjäys P 4 P 5

3. Kuittaus värjäyksen valmistumisesta välitetään juurelle. - Kun prosessori on välittänyt värin lapsilleen, se jää odottamaan kuittausta. - Kun prosessori saa tiedon lapsiltaan, että sen kaikki alipuut on värjätty juuren värillä, se välittää kuittauksen omalle vanhemmalleen. - Lopulta juuri saa kuittauksen omilta lapsiltaan, että koko puu on värjätty. - Tällöin juuri valitsee uuden värin ja välittää sen taas lapsilleen. kuittaus P 1 kuittaus P 2 P 3 kuittaus P 4 kuittaus P 5

Itsestabiloiva beta-synkronoija 1. Root: do forever 2. forall P j children(i) do lr ji := read(r ji ) 3. if P j children(i) (lr ji i 4. color i := (color i +1)mod(5n - 3) 5. forall P í children(i) do write r ji.color := color i 6. od 7. Other: do forever 8. forall P j {children(i) parent} do lr ji := read (r ji ) 9. if color i lr parent,i.color then 10. color i := lr parent,i.color 11. else if P j children(i) (lr ji i 12. write r i,parent.color := color i 13. forall P j children(i) do write r ij.color := color i 14. od

Lemma 1. Jokaisessa kelvollisessa suorituksessa, juuri vaihtaa väriään vähintään kerran jokaisen 2d+1 syklin aikana. Lemma 2. Alkutilaan, jossa kaikkien prosessorien väri on sama, päästään O(dn) syklin aikana. Algoritmi saavuttaa turvallisen tilan O(dn) syklin kuluessa.

Nimeämistekniikka Tavoitteena on nimetä prosessorit verkossa yksilöivillä tunnuksilla. Perustana Update-algoritmin muunnelma sekä beta-synkronoija. Erilaisia tunnisteita suuri määrä. Satunnaisen tunnisteen valinnassa apuna Schedular-Luck peli.

Perusidea Aluksi prosessoreilla annetaan satunnaiset tunnisteet. Päivitystekniikan avulla muodostetaan virittävä puu tai puita. Värjäystekniikan avulla puut värjätään. Jos jokin tunniste esiintyy useampaan otteeseen, valitaan uusi tunniste.

Tuplatunniste On muodostettu virittävä puu T. Se sisältää kuitenkin kaksi samaa tunnistetta X. Prosessorit välittävät vanhemmalleen alipuidensa tunnisteet. Juuri saa koko puun tunnisteiden listan. Tuplatunnisteet vaihtavat itselleen uuden tunnisteen X T X

Värjäystekniikka On muodostunut kaksi erillistä puuta T ja T. Puut erotetaan toisistaan väreillä. T X Prosessorit P i ja P j huomaavat kuuluvansa eri puihin. Tieto kulkee juurelle, joka vaihtaa tunnistettaan. P j X T P i

Algoritmin toiminta Virittävien puiden rakennus ja värjäys suoritetaan yhtä aikaa. Ensisijaisesti tutkitaan onko useampia puita. Jos näin, niin yksi juuri vaihtaa tunnisteensa ja prosessi aloitetaan alusta. Kun on jäljellä vain yksi puu, toissijaisesti tutkitaan onko puussa tuplatunnisteita.

Mitään tunnistetta ei vaihdeta kuin kerran. Jos edelleen löytyy samoja tunnisteita, prosessi aloitetaan alusta. Turvallisen tilan odotusarvo on O(d) sykliä. Näin kaikille prosessoreille on löydetty yksilöivät tunnisteet.