Silmukkaoptimoinnista

Samankaltaiset tiedostot
TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 7. joulukuuta 2009

Eloisuusanalyysi. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2009 TIETOTEKNIIKAN LAITOS. Eloisuusanalyysi.

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 9. marraskuuta 2009

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 17. marraskuuta 2009

Muita rekisteriallokaatiomenetelmiä

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

Alityypitys. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos

Johdatus graafiteoriaan

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 1. Luento 9 Ti Timo Männikkö

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

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

T Syksy 2005 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (opetusmoniste, kappaleet )

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 26. tammikuuta 2012

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

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

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

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

Tietojenkäsittelyteorian alkeet, osa 2

Algoritmi on periaatteellisella tasolla seuraava:

6.4. Järjestyssuhteet

Algoritmit 2. Luento 2 To Timo Männikkö

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

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

10. Painotetut graafit

Algoritmit 1. Luento 13 Ti Timo Männikkö

T Kevät 2009 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (Predikaattilogiikka )

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. joulukuuta 2015

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

MS-A0402 Diskreetin matematiikan perusteet

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 6. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

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

Diskreetit rakenteet

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko,

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

T Syksy 2003 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (opetusmoniste, kappaleet )

Markov-ketjut pitkällä aikavälillä

Pinoautomaatit. Pois kontekstittomuudesta

j(j 1) = n(n2 1) 3 + (k + 1)k = (k + 1)(k2 k + 3k) 3 = (k + 1)(k2 + 2k + 1 1)

Johdatus graafiteoriaan

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 6. maaliskuuta 2012 TIETOTEKNIIKAN LAITOS.

Datatähti 2019 loppu

Ellipsoidimenetelmä. Samuli Leppänen Kokonaislukuoptimointi. S ysteemianalyysin Laboratorio

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 20. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS.

58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen)

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 2. helmikuuta 2012

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

T Kevät 2006 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (opetusmoniste, kappaleet )

Relaation ominaisuuksia. Ominaisuuksia koskevia lauseita Sulkeumat. Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

Matematiikan tukikurssi, kurssikerta 2

MS-A0402 Diskreetin matematiikan perusteet Yhteenveto, osa I

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Lisää pysähtymisaiheisia ongelmia

Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,

T Kevät 2003 Logiikka tietotekniikassa: erityiskysymyksiä I Laskuharjoitus 11 Ratkaisut

Tenttiin valmentavia harjoituksia

Algoritmit 2. Luento 2 Ke Timo Männikkö

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

14. Luennon sisältö. Kuljetustehtävä. Verkkoteoria ja optimointi. esimerkki. verkkoteorian optimointitehtäviä verkon virittävä puu lyhimmät polut

v 8 v 9 v 5 C v 3 v 4

Diofantoksen yhtälön ratkaisut

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012

jäsentämisestä TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 27. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

Polkuintegraali yleistyy helposti paloitain C 1 -poluille. Määritelmä Olkoot γ : [a, b] R m paloittain C 1 -polku välin [a, b] jaon

Algoritmit 1. Luento 5 Ti Timo Männikkö

Kokonaislukuoptiomointi Leikkaustasomenetelmät

Ratkaisu. Tulkitaan de Bruijnin jonon etsimiseksi aakkostossa S := {0, 1} sanapituudelle n = 4. Neljän pituisia sanoja on N = 2 n = 16 kpl.

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

Algoritmit 1. Luento 13 Ma Timo Männikkö

Eräs keskeinen algoritmien suunnittelutekniikka on. Palauta ongelma johonkin tunnettuun verkko-ongelmaan.

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. marraskuuta 2015

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

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

10. Painotetut graafit

Algoritmit 2. Luento 11 Ti Timo Männikkö

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

Pienin virittävä puu (minimum spanning tree)

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

Luku 8. Aluekyselyt. 8.1 Summataulukko

Logiikan kertausta. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

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

Muistinsiivous. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2009 TIETOTEKNIIKAN LAITOS. Muistinsiivous.

isomeerejä yhteensä yhdeksän kappaletta.

Taulun avoimista haaroista saadaan kelvolliset lausejoukot

Rekursiiviset tyypit

11. Javan toistorakenteet 11.1

1 Lukujen jaollisuudesta

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

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

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

Transkriptio:

sta TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 8. joulukuuta 2009

Sisällys

Sisällys

Seuraava deadline Vaihe F maanantai 14.12. klo 12 rekisteriallokaatio Arvostelukappale torstai 14.1. klo 16 valmis kääntäjä arviointiaikataulu: palautus 31.12. mennessä, arviointi 14.1. mennessä palautus 14.1. mennessä, arviointi 28.1. mennessä

Sisällys

lähdekielessä erilaisia silmukkarakenteita myös mahdollista tehdä gotoilla, jos kieli sallii optimoinnin kannalta ei ole olennaista, miten silmukka on tehty tunnistetaan silmukat kontrollivuograafista

Hallitsijat 1 Määritelmä Kontrollivuograafin solmu d hallitsee toista solmua n (merk. d dom n) jos jokainen (suunnattu) polku graafin alkusolmusta n:ään kulkee d:n kautta. Huomioita Hallintarelaatio on refleksiivinen, transitiivinen ja antisymmetrinen; se on siis osittaisjärjestys. Jokaisella solmulla (paitsi alkusolmulla) on yksikäsitteinen välitön hallitsija: hallitsija, jolle pätee, että solmun ja sen välittömän hallitsijan välissä ei ole muita hallitsijoita. Hallintarelaatio on siten puu! Tätä puuta kutsutaan hallitsijapuuksi. Kaari solmusta sen hallitsijaan (joka ei ole kyseinen solmu itse) on paluukaari (engl. back edge). 1 engl. dominators

Algoritmi hallitsijoiden löytämiseksi Syöte Kontrollivuograafi. Tulos out(n): kullekin solmulle n sen hallitsijat. Algoritmi Kiintopisteiteraatio seuraavien yhtälöiden kautta: in(n) = out(n) p pred(n) out(n) = in(n) {n}

Syvyyden ensin virittävä puu 2 Virittävä puu on mikä tahansa graafin kaikista solmuista kaareja poistamalla muodostettu puu. Syvyyden ensin virittävä puu on virittävä puu, jossa puun kaaret ovat ne kaaret, jota pitkin syvyyshaku etenee. Graafin muut kaaret voidaan luokitella seuraavasti: kaari solmusta n solmuun m on etenevä (engl. advancing), jos n:stä m:ään on puun kaaria käyttävä suunnattu polku ja n = m; takautuva (engl. retreating), jos m:stä n:ään on puun kaaria käyttävä suunnattu polku; tai vastakkainen (engl. cross), jos se ei ole etenevä eikä takautuva. 2 engl. depth-first spanning tree

Sievenevät kontrollivuograafit Kontrollivuograafi on sievenevä (engl. reducible), jos sen kaikki takautuvat kaaret jokaisessa syvyyden ensin virittävässä puussa ovat paluukaaria. Sievenevässä graafissa riittää muodostaa yksi syvyyden ensin virittävä puu; sen takautuvien kaarien joukko on myös paluukaarien joukko. Tietovuoanalyysit ovat primitiivirekursiivisia, jos rajoitutaan tarkastelemaan vain sieveneviä kontrollivuograafeja. Rakenteiset silmukkarakenteet (myös break ja continue sekä niiden monitasoiset variantit) tuottavat vain sieveneviä kontrollivuograafeja.

Luonnolliset silmukat Luonnollinen silmukka (engl. natural loop) koostuu solmusta h (silmukan aloittaja, engl. header), paluukaaresta h:hon, sekä jokaisesta sellaisesta solmusta m, jonka jokainen polku h:hon sisältää kyseisen paluukaaren. Jokaiseen paluukaareen liittyy yksikäsitteinen luonnollinen silmukka. Silmukkan aloittajasolmusta usein pilkotaan esialoittaja (preheader) silmukkaoptimointeja varten. Kahdelle luonnolliselle silmukalle pätee: Jos niillä on yhteisiä solmuja, mutta niillä ei ole yhteistä aloittajasolmua, niin toinen niistä sisältyy kokonaan toiseen; se on sisäsilmukka (engl. inner loop)

Sisällys

lausekkeet Jos silmukan sisällä lasketaan määritelmä L : t := a b siten, että a:n ja b:n arvo ei muutu, L on silmukkainvariantti. Täsmällinen määritelmä: käsky L : t := a 1 a 2 on silmukkainvariantti, jos kullekin a i pätee: a i on vakio, tai mikään a i :n saavuttavista määritelmistä ei sisälly silmukkaan, tai vain yksi a i :n määritelmistä saavuttaa L:n ja se on silmukkainvariantti.

Silmukkainvariantin nosto Silmukkainvariantin L : t := a b saa siirtää silmukan ulkopuolelle (tavallisesti esialoittajan ja aloittajan väliin), jos: L hallitsee kaikkia silmukan päättäviä solmuja, joissa t on live-out, ja silmukassa on vain yksi t:n määritelmä, ja t ei ole live-in aloittajassa.

Sisällys

Muuttuja i on silmukan perusinduktiomuuttuja, jos i:n ainoat silmukan sisällä olevat määritelmät ovat muotoa i := i + c tai i := i c, missä c on silmukkainvariantti. Muuttuja k on silmukan johdannaisinduktiomuuttuja i:n perheessä (missä i on perusinduktiomuuttuja), jos silmukassa on vain yksi k:n määritlmä, ja se on muotoa k := i c tai k := i + c, missä c on silmukkainvariantti; tai silmukassa on vain yksi k:n määritlmä, ja se on muotoa k := j c tai k := j + c, missä c on silmukkainvariantti ja j on johdannaisinduktiomuuttuja i:n perheessä, ainoa k:n määritelmän saavuttava j:n määritelmä on silmukassa ja j:n ja k:n määritelmien välissä ei ole i:n määritelmää.

Induktiomuuttujan karakterisointi Induktiomuuttujan arvo voidaan karakterisoida kolmikkona seuraavasti. Olkoot j ja k induktiomuuttujia, olkoon j:n kolmikko (i, a, b), ja olkoon c silmukkainvariantti: Jos k on perusinduktiomuuttuja, sen kolmikko on (k, 0, 1). Jos k:n määritelmä on muotoa k := j + c, sen kolmikko on (i, a + c, b). Jos k:n määritelmä on muotoa k := j c, sen kolmikko on (i, a c, b c).

Voiman vähentäminen 3 Tarkastellaan johdannaisinduktiomuuttujia j 1,..., j n, joilla on sama kolmikko (i, a, b). Luodaan uusi muuttuja j. Alustetaan esialoittajan ja aloittajan välissä j := a + i b. Lisätään silmukan sisällä jokaisen käskyn i := i + c jälkeen käsky j := j + c b. Huomaa, että c b on silmukkainvariantti ja voidaan nostaa silmukasta pois! Jos b ja c ovat vakioita, c b voidaan laskea käännösaikana. Korvtan kunkin j k silmukan sisällä oleva määrittely lauseella j k := j. 3 engl. strength reduction

(Melkein) hyödyttömät muuttujat Muuttuja on hyödytön silmukassa, jos se ei ole live-out missään silmukan poistumissolmussa, ja sitä käytetään ainoastaan omassa määritelmässään. Hyödyttömän muuttujan määritelmät saadaan aina poistaa silmukasta. Muuttuja on melkein hyödytön, jos sitä käytetään vain omassa määritelmässään sekä vertailuissa silmukkainvarianttia vastaan, ja jos ainakin yksi muu induktiomuuttuja samassa perheessä ei ole hyödytön.

Melkein hyödyttömien muuttujien poisto Tarkastellaan saman perheen induktiomuuttujia j ja k, joiden kolmikot ovat (i, a j, b j ) ja (i, a k, b k ) ja joille pätee j a j b j = k a k b k kaikkialla paitsi k:n ja j:n päivityskäskyjen välissä 4. Tällöin vertailu k < n, missä n on silmukkainvariantti, voidaan korvata vertailulla j b j b k (n a k ) + a j, mikäli oikea puoli on kokonaisluku ja b j /b k :n etumerkki on käännösaikana tiedossa. Oikea puoli on silmukkainvariantti. Vertailun suunta riippuu b j /b k :n etumerkistä. 4 Tämä pätee voimanvähennyksen lisäämille muuttujille toistensa ja perheen perusinduktiomuuttujan suhteen.

Sisällys

Seuraava deadline Vaihe F maanantai 14.12. klo 12 rekisteriallokaatio Arvostelukappale torstai 14.1. klo 16 valmis kääntäjä arviointiaikataulu: palautus 31.12. mennessä, arviointi 14.1. mennessä palautus 14.1. mennessä, arviointi 28.1. mennessä