Rinnakkaistietokoneet luento S

Samankaltaiset tiedostot
Rinnakkaistietokoneet luento S

Rinnakkaistietokoneet luento S

Rinnakkaistietokoneet luento S

Rinnakkaistietokoneet luento S

BM20A0700, Matematiikka KoTiB2

Matriisit. Määritelmä 1 Reaaliluvuista a ij, missä i = 1,..., k ja j = 1,..., n, muodostettua kaaviota a 11 a 12 a 1n a 21 a 22 a 2n A =

Matriisit, L20. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi

Käänteismatriisin ominaisuuksia

Matriisipotenssi. Koska matriisikertolasku on liitännäinen (sulkuja ei tarvita; ks. lause 2), voidaan asettaa seuraava määritelmä: ja A 0 = I n.

Johdatus tekoälyn taustalla olevaan matematiikkaan

Matikkapaja keskiviikkoisin klo Lineaarialgebra (muut ko) p. 1/210

Matikkapaja keskiviikkoisin klo Lineaarialgebra (muut ko) p. 1/81

1.1. Määritelmiä ja nimityksiä

Matriisien tulo. Matriisit ja lineaarinen yhtälöryhmä

Matriisit, L20. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi

3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset

Numeeriset menetelmät

Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi

Ortogonaalinen ja ortonormaali kanta

3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset. Olkoot A 2 := AA =

Matriisit, kertausta. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Käänteismatriisi 1 / 14

Yhtälöryhmä matriisimuodossa. MS-A0007 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 1. Luento 2 Ke Timo Männikkö

Yhteenlaskun ja skalaarilla kertomisen ominaisuuksia

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Insinöörimatematiikka D

Matriisilaskenta Luento 12: Vektoriavaruuden kannan olemassaolo

Talousmatematiikan perusteet

Lineaarialgebra (muut ko)

3. Muuttujat ja operaatiot 3.1

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

Johdatus tekoälyn taustalla olevaan matematiikkaan

Ennakkotehtävän ratkaisu

Lineaarialgebra ja matriisilaskenta I

Johdatus verkkoteoriaan 4. luento

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Numeeriset menetelmät

(0 desimaalia, 2 merkitsevää numeroa).

1 + b t (i, j). Olkoon b t (i, j) todennäköisyys, että B t (i, j) = 1. Siis operaation access(j) odotusarvoinen kustannus ajanhetkellä t olisi.

Kurssin loppuosassa tutustutaan matriiseihin ja niiden käyttöön yhtälöryhmien ratkaisemisessa.

Luku 8. Aluekyselyt. 8.1 Summataulukko

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 1. Luento 9 Ti Timo Männikkö

1 Kertaus. Lineaarinen optimointitehtävä on muotoa:

Kokonaislukuoptiomointi Leikkaustasomenetelmät

Käänteismatriisin. Aiheet. Käänteismatriisin ominaisuuksia. Rivioperaatiot matriisitulona. Matriisin kääntäminen rivioperaatioiden avulla

Talousmatematiikan perusteet: Luento 9. Matriisien peruskäsitteet Yksinkertaiset laskutoimitukset Transponointi Matriisitulo

5 Ominaisarvot ja ominaisvektorit

Numeeriset menetelmät

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Seuraava luento ti on salissa XXII. Lineaarialgebra (muut ko) p. 1/117

Java-kielen perusteet

(1.1) Ae j = a k,j e k.

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006

Luentorunko keskiviikolle Hierarkkinen ryvästäminen

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))

Kombinatorisen logiikan laitteet

Insinöörimatematiikka D

Johdatus f90/95 ohjelmointiin. H, R & R luvut 1-3

2.8. Kannanvaihto R n :ssä

Algoritmit 2. Demot Timo Männikkö

3 Skalaari ja vektori

Lineaariset Lien ryhmät / Ratkaisut 6 D 381 klo

2. Eukleideen algoritmi

Täydentäviä muistiinpanoja kontekstittomien kielioppien jäsentämisestä

Harjoitus 5 (viikko 41)

RATKAISUT a + b 2c = a + b 2 ab = ( a ) 2 2 ab + ( b ) 2 = ( a b ) 2 > 0, koska a b oletuksen perusteella. Väite on todistettu.

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

Java-kielen perusteet

Algoritmi on periaatteellisella tasolla seuraava:

3.1 Lineaarikuvaukset. MS-A0004/A0006 Matriisilaskenta. 3.1 Lineaarikuvaukset. 3.1 Lineaarikuvaukset

Insinöörimatematiikka D

16. Ohjelmoinnin tekniikkaa 16.1

Luento 5: Suurten lineaaristen yhtälöryhmien ratkaiseminen iteratiivisilla menetelmillä

Lineaarialgebra II, MATH.1240 Matti laaksonen, Lassi Lilleberg

Algoritmit 2. Luento 6 Ke Timo Männikkö

Kurssikoe on maanantaina Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla.

Numeeriset menetelmät TIEA381. Luento 3. Kirsi Valjus. Jyväskylän yliopisto. Luento 3 () Numeeriset menetelmät / 45

Matriisilaskenta. Harjoitusten 3 ratkaisut (Kevät 2019) 1. Olkoot AB = ja 2. Osoitetaan, että matriisi B on matriisin A käänteismatriisi.

Matematiikka B2 - Avoin yliopisto

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

Lineaarinen yhtälöryhmä

9 Matriisit. 9.1 Matriisien laskutoimituksia

Talousmatematiikan perusteet: Luento 11. Lineaarikuvaus Matriisin aste Käänteismatriisi

Inversio-ongelmien laskennallinen peruskurssi Luento 4

16. Ohjelmoinnin tekniikkaa 16.1

Hierarkkinen ryvästäminen

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

MS-A0003/A0005 Matriisilaskenta Malliratkaisut 4 / vko 47

Algoritmit 2. Luento 8 To Timo Männikkö

11. Javan toistorakenteet 11.1

Lineaarialgebra ja matriisilaskenta I

802118P Lineaarialgebra I (4 op)

Algoritmit 2. Luento 13 Ti Timo Männikkö

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

Algoritmit 1. Demot Timo Männikkö

Transkriptio:

Rinnakkaistietokoneet luento 3 521475S

Rinnakkaiset Numeeriset Algoritmit Silmukattomat algoritmit Eivät sisällä silmukka lauseita kuten DO,FOR tai WHILE Nopea suorittaa Yleisimmässä muodossa koostuu peräkkäisistä sijoituslauseista, esim. a = b + c; b = d + a Silmukoiden puuttuminen poistaa indeksit ja riippuvuusvektorit

Rinnakkaisuus lauseen sisällä Rinnakkaisuus lauseen sisällä saadaa hyödynnettyä käyttämällä hyväksi aritmeettisten lausekkeiden ominaisuuksia: kommutatiivisuus: esim. ab = ba distributiivisuus: esim. a(b + c) = ab + ac assosiatiivisuus: esim. a + (b + c) = (a + b) + c Lausekkeet kooostuvat atomeista (operandit) ja aritmeettisista operaatiosta (+, *, -) tai loogisista operaatioista (OR,AND) Yhdellä prosessorilla lausekkeen, jossa on n operandia, kestää n 1 aikayksikköä (n-1 operaatioiden lkm., kun yksi operaatio suoritetaan aina kahden operandin välillä)

Käytettäessä haluttua määrää prosessoreita. lauseke voidaan evaluoida log(n) aikayksiköässä (kahden logaritmi), eli jokaisella aikayksiköllä operandien määrä puoliintuu log(n) on lausekkeen evaluointiin käytettävien aikayksiköiden määrän teoreettinen alaraja (lower bound): ei sisällä laskennan vaatiman kommunikoinnin viemää aikaa, joka on selviö, kun evaluointi tehdään fyysisellä koneella Esimerkki: kahdeksan (8) luvun yhteen lasku:

Puun korkeuden pienentäminen (treeheight reduction) Puun korkeus rinnakkaislaskennassa tarkoittaa laskennan vaatimien askelten (aikayksiköiden) lukumäärää Tavoite on pienentää puun korkeutta ja kasvattaa rinnakkaisuutta Katsotaan lauseketta (((a+b) * c) * d) käyttämällä hyväksi assosiatiivisuus ominaisuutta lauseke saadaan muotoon (a+b) * (c*d):

Puun korkeutta voidaan pienentää myös hyödyntämällä kommutatiivisuutta:

Puun korkeuden pienentäminen hyödyntämällä distributiivisuutta:

Lauseiden välinen rinnakkaisuus Lauseiden välistä rinnakkaisuutta voidaan analysoida muodostamalla riippuvuusgraafeja Vaikka lauseiden välillä on riippuvuuksia, rinnakkaisuutta voidaan joskus kasvattaa uudelleen kirjoittamalla lauseet: lauseen sijoitus (statement substitution) on yksi tapa Katsotaan esimerkkiä: S1: x = a + bcd S2: y = ex + f S3: z = my + x datavuograafi on esitetty kuvassa 2.8a Lausekkeiden riippuvuuksista johtuen ei hyödynnettävää rinnakkaisuutta laskennassa

Kuva 2.8a

Rinnakkaisuutta voidaan kuitenkin hyödyntää muuttujatasolla: sijoittamalla S1 ja S2 lauseeseen S3 saadaan uusi lause S: S: a + mf + bcd + mea + bcdem jossa on hyödynnettävää rinnakkaisuutta: datavuograafi kuvassa 2.8b

Kuva 2.8b

Matriisin kertolasku A ja B kaksi n x n matriisia Tulo C = AB, missä jokainen C:n elementti on muotoa: ij Kertolasku voidaan esittää sisäkkäisiä silmukoita käyttäen ohjelmana: for i = 1 to n for j = 1 to n for k = 1 to n c k ij = ck-1 ij + a ik b kj end k end j end i n c = a k = 1 ik b kj

Kirjoitetaan ohjelma muodossa: D = for i = 1 to n for j = 1 to nfor k = 1 to n a(i,j,k) = a(i,j-1,k) b(i,j,k) = b(i-1,j,k) c(i,j,k) = c(i,j,k-1) + a(i,j,k)b(i,j,k) end k end j end i [ d d ] 1 2 d3 = 1 0 0 0 1 0 0 0 1 b a c i j k Lause a(i,j,k) = a(i,j-1,k) ilmaisee, että muuttujan a arvo on iteraatioavaruuden pisteessä (i,j,k) riippumaton indeksistä j: ts. muuttujan a:n arvo määräytyy (i,k)-tason pisteen mukaan (kts. kuva 2.9) Vastaavasti lause b(i,j,k) = b(i-1,j,k) ilmaisee, että muuttujan b arvo on iteraatioavaruuden pisteessä (i,j,k) riippumaton indeksistä i: ts. muuttujan b:n arvo määräytyy (j,k)-tason pisteen mukaan (kts. kuva 2.9) i määrää matriisi A:n rivin ja k elementin rivin sisällä (i ja k määrittävät yksiselitteisesti matriisin elementin) j määrää matriisi B:n sarakkeen ja k elementin sarakkeen sisällä (j ja k määrittävät yksiselitteisesti matriisin elementin)

Muuttujat a, b ja c määritellään seuraavasti: a(i,j,k) = a j ik b(i,j,k) = b i kj c(i,j,k) = c k ij missä alaindeksit identifioivat fyysisen muuttujan (muistipaikan) ja yläindeksi antaa muuttujalle ajallisen ulottuvuuden: esim. c(i,j,k) ja c(i,j,k-1) viittaavat samaan muistipaikaan eri ajan hetkinä (= eri k:n iteraatioilla)

Kuva 2.9: Datavuo ja riippuvuudet C:n sarake (j = C:n sarake) ( i = C:n rivi) sisätulo: muodostaa yhden C:n elementin riville i ja sarakkeelle j

Sekventiaalisessa tapauksessa (eli 1 prosessori käytössä) matriisin kertolaskun ajallinen kompleksisuus on O(n 3 ) (määriteltynä tarvittavien kertolaskujen mukaan) jokainen sisätulon tekijä a ik b kj lasketaan peräkkäin (ei rinnakkain) ja jokaiselle C:n elementille (joita on yhteensä n x n kpl) lasketaan n tekijää (kertolaskua) O(n 3 ) vastaan kuvan 2.9 kuution solmujen lukumäärää

Jos käytössä on n prosessoria voidaan laskea C:n rivejä (tai sarakeita) rinnakkain: eli yksi prosessori laskee aina yhden C:n rivin (tai sarakkeen) n riviä valmistuu yht aikaa eli kompleksisuus putoaa O(n 2 ) Jos käytetään n 2 prosessoria, jokainen prosessori voi laskea yhden C:n elementin rinnakkain muiden kanssa yksi C:n rivi valmistuu yhden askeleen aikana kompleksisuus on O(n) Jos käytetään n 3 prosessoria voidaan jokainen kertolasku laskea yhden askeleen aikana kompleksisuus on O(log(n)), eli saman kuin laskettaessa yhteen n lukua (jokaisen sisätulon vaatimia yhteenlaskuja voidaan suorittaa rinnakkain. Yhteenlaskuja on n-1 kappaletta / C:n elementti, joista voidaan laskea aina puolet saman aikaisesti jokaiselle C:n elementille O(log(n)) O(log(n)) on rinnakkaislaskennan kompleksisuuden teoreettinen alaraja matriisin kertolaskun tapauksessa

Relaksaatio (relaxation) Menetelmä jota käytetään mm.: Osittaisdifferentiaaliyhtälöiden numeerisessa ratkaisussa Kuvankäsittelyssä Relaksaatio voidaan kuvata seuraavalla silmukalla: for i = 1 to l for j = 1 to m for k = 1 to n u(i,j,k) = ¼[u(i-1,j+1,k)+u(i-1,j,k+1)+u(i,j-1,k)+u(i,j,k-1)] end k end j end i Menetelmä päivittää muuttujan u:n arvon pisteessä (i,j,k) valittujen ympäristön muuttujien keskiarvolla

Em. Relaksaatio-ohjelma on ensimmäisiä algoritmeja, joita analysoitiin rinnakkaislaskennan näkökulmasta [Lambort 1974] on tutkinut relaksaatio-menetelmän rinnakkaistamista ja esitteli ajatuksen hypertasosta: tasossa oleva joukko iteraatioavaruuden pisteitä joissa laskenta voidaan tehdä rinnakkaisena Hypertaso on hyödyllinen käsite johon mm. algoritmien muunnokset perustuvat Silmukka suoritetaan lmn kertaa: kerran jokaisessa indeksijoukon pisteessä (i,j,k) Tutkitaan millaista rinnakkaisuutta algoritmissa esiintyy ja mikä on laskentaan käytettävä aika

Katsotaan u(8,2,4) laskemista. u(8,2,4) on keskiarvo arvoista u(7,3,4),u(7,2,5) (laskettu iteraatiolla i=7),u(8,1,4) ja u(8,2,3) (laskettu iteraatiolla i=8) for i = 1 to l for j = 1 to m for k = 1 to n u(i,j,k) = ¼[u(i-1,j+1,k)+u(i-1,j,k+1)+u(i,j-1,k)+u(i,j,k-1)] end k end j end i

Kuva 2.10: (k,j)-indeksitaso ja riippuvuudet L7 L8 (8,2,4) riippuvainen arvoista, pisteissä: (7,2,5),(7,3,4),(8,1,4) ja (8,2,3), joka riippumattomia toisistaan ja voidaan laskea rinnakkain laskennan eteneminen iteraatiolla i

Pisteet (8,2,4),(8,3,3) ja (8,4,2) voidaan laskea samanaikaisesti: sijaitsevat suoralla j + k = 6, kun i = 8 (eli, k = -j + 6, kun i = 8) Kaikki pisteet tällä suoralla voidaan laskea samanaikaisesti Vastaavasti pisteet (7,2,5),(7,3,4),(7,4,3) ja (7,5,2) suoralla j + k = 7, kun i = 7, voidaan laskea samanaikaisesti keskenään Pisteet suorilla L8 ja L7 voidaan laskea samanaikaisesti, koska laskenta suorien pisteissä riippuu aikaisemmin lasketuista arvoista Suorien L8 ja L7 pisteet kuuluvat tasolle 2i + j + k = 21

Kuva 2.11: hypertaso 2i+j+k +c = 0 indeksiavaruudessa tällä tasolla oleville pisteille (i,j,k) laskenta voidaan tehdä rinnakkain silmukkaa suoritettaessa

Tapa 2: analysoidaan käyttäen riippuvuusvektoreita: D = [ d d d ] 1 2 3 d4 1 = 1 0 Riippuvuusmatriisista nähdään, että esim. piste (8,2,4) on riippuvainen pisteistä (7,3,4),(7,2,5),(8,2,3) ja (8,1,4) (ts. piste (8,2,4) on käyttäjä, joka käyttää aiemmin tuotettuja arvoja ja riippuvuusvektorit kertovat siirtymän tuottajasta käyttäjään, eli pisteeseen (8,2,4)) Tason 2i+j+k + c = 0 tulkinta on, että kaikki riippuvuusvektorit tämän tason pisteille kulkevat samaan suuntaan, eli riippuvuudet (4kpl) tulevat edelliseltä rinnakkain lasketulta tasolta tämän hetkiselle tasolle: eli ei riippuvuuksia saman tason pisteiden välillä, mikä luonnollisesti tuhoaisi rinnakkaisuuden 1 0 1 0 0 1 0 1 0

Rinnakkaislaskennan vaatima aika riippuu kriittisestäpolusta, jolla tarkoitetaan polkua indeksiavaruudessa, jonka kahta pistettä ei voida suorittaa samanaikaisesti: polku ei ole välttämättä uniikki Esim. edellisessä esimerkissä, kriittinen polku muodostuu pisteistä, joista jokainen on eri rinnakkain laskettavalla tasolla (jokaiselta tasolta voidaan valita mielivaltainen piste, eli kriittinen polku ei ole uniikki) Kriittisen polun pituus antaa teoreettisen minimin rinnakkaislaskenta-askelten lukumäärälle (se, että kriittinen polku ei ole uniikki, ei muuta polun pituutta, eli siinä olevien pisteiden lukumäärää) Em. esimerkissä laskennallinen kompleksisuus on O(l+m+n), mikä viittaa rinnakkain laskettavien tasojen lukumäärään (karkeasti indeksiavaruuden diagonaalin pituuteen): tämä on huomattava parannus sekventiaaliseen aikaan O(lmn)