A huroktest felosztása

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2013. május 20-án áttekintett verziótól ; az ellenőrzések 13 szerkesztést igényelnek .

A loop fission egy olyan fordítóoptimalizálás , amely egy programban lévő ciklust több ciklusra oszt fel, amelyek mindegyikének ugyanaz az indexhatára, de az eredeti ciklus törzsének csak egy részét tartalmazza . 

Például a következő kód :

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

az optimalizálás eredményeként a következőre konvertálódik:

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

Az ilyen optimalizálás fő célja a hurokműveletek számának csökkentése. Itt a fő optimalizálási módszer a hurok felosztása több ciklusra, amelyek mindegyikénél a ciklustörzs becsomagolásához szükséges utasítások száma szigorúan kevesebb, mint az eredeti ciklus utasításainak száma.

Az elosztás hasznos az adathurok-függőségek elkülönítésére a hurokvektorizálásra , a hurokpermutációkra, vagy a lokalitás javítására az egyes hurokban hivatkozott adatok teljes mennyiségének csökkentésével .

Jegyzetek

Lásd még

Irodalom

  • Alfred Aho, Monica Lam, Ravi Seti, Jeffrey Ullman. Fordítók: alapelvek, technikák és eszközök = Compilers : Principles, Techniques, and Tools. — 2. kiadás. - M . : "Williams", 2008. - 1184 p. - 1500 példány.  - ISBN 978-5-8459-1349-4 .
  • Steven S. Muchnick. Fejlett fordítói tervezés és megvalósítás. — 5. kiadás. - San Francisco: Morgan Kaufmann Publishers , 1997. - 856 p. - ISBN 1-55860-320-4 .
  • Kennedy, Ken; & Allen, Randy. Fordítóprogramok optimalizálása modern építészetekhez : Függőség-alapú megközelítés  . - Morgan Kaufmann , 2001. - ISBN 1-55860-286-0 .