Silmukan rungon halkaisu

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 20. toukokuuta 2013 tarkistetusta versiosta . tarkastukset vaativat 13 muokkausta .

Silmukan fissio on kääntäjän optimointi , joka jakaa ohjelman silmukan useisiin silmukoihin, joilla jokaisella on samat indeksirajat, mutta jotka sisältävät vain osan alkuperäisen silmukan rungosta . 

Esimerkiksi seuraava koodi :

int i , a [ 100 ], b [ 100 ]; for ( i = 0 ; i < 100 ; i ++ ) { a [ i ] = 1 ; b [ i ] = 2 ; }

optimoinnin soveltamisen seurauksena muunnetaan muotoon:

int i , a [ 100 ], b [ 100 ]; for ( i = 0 ; i < 100 ; i ++ ) { a [ i ] = 1 ; } for ( i = 0 ; i < 100 ; i ++ ) { b [ i ] = 2 ; }

Tällaisten optimointien päätavoite on vähentää silmukkaoperaatioiden määrää. Tässä pääasiallinen optimointimenetelmä on silmukan jakaminen useisiin silmukoihin, joista jokaisessa silmukan rungon pakkaamiseen tarvittavien käskyjen määrä on tiukasti pienempi kuin alkuperäisen silmukan käskyjen määrä.

Jakelu on hyödyllinen datasilmukkariippuvuuksien eristämiseen valmisteltaessa silmukkavektorisointia , silmukkapermutaatioita tai parantaa paikallisuutta vähentämällä kussakin silmukassa viitatun datan kokonaismäärää.

Muistiinpanot

Katso myös

Kirjallisuus

  • Alfred Aho, Monica Lam, Ravi Seti, Jeffrey Ullman. Kääntäjät : periaatteet, tekniikat ja työkalut = kääntäjät: periaatteet, tekniikat ja työkalut. – 2. painos. - M . : "Williams", 2008. - 1184 s. - 1500 kappaletta.  - ISBN 978-5-8459-1349-4 .
  • Steven S. Muchnick. Kehittynyt kääntäjän suunnittelu ja toteutus. – 5. painos. - San Francisco: Morgan Kaufmann Publishers , 1997. - 856 s. - ISBN 1-55860-320-4 .
  • Kennedy, Ken; & Allen, Randy. Kääntäjien optimointi nykyaikaisille arkkitehtuureille : riippuvuuteen perustuva lähestymistapa  . - Morgan Kaufmann , 2001. - ISBN 1-55860-286-0 .