Rozdělení těla smyčky

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 20. května 2013; kontroly vyžadují 13 úprav .

Štěpení smyček je optimalizace kompilátoru , která rozděluje smyčku v programu na několik smyček, z nichž každá má stejné hranice indexu, ale obsahuje pouze část těla původní smyčky . 

Například následující kód :

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

v důsledku použití optimalizace se převede na:

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

Hlavním cílem takových optimalizací je snížit počet operací smyček. Zde je hlavní optimalizační metodou rozdělení smyčky do několika smyček, z nichž pro každou je počet instrukcí potřebných k zabalení těla smyčky přísně menší než počet instrukcí pro původní smyčku.

Distribuce je užitečná pro izolování závislostí datové smyčky při přípravě na vektorizaci smyčky , na permutace smyčky nebo pro zlepšení lokality snížením celkového množství dat odkazovaných v každé smyčce.

Poznámky

Viz také

Literatura

  • Alfred Aho, Monica Lam, Ravi Seti, Jeffrey Ullman. Kompilátory : Principy, techniky a nástroje = Kompilátory: Principy, techniky a nástroje. — 2. vydání. - M .: "Williams", 2008. - 1184 s. - 1500 výtisků.  - ISBN 978-5-8459-1349-4 .
  • Steven S. Muchnick. Pokročilý návrh a implementace kompilátoru. — 5. vydání. - San Francisco: Morgan Kaufmann Publishers , 1997. - 856 s. - ISBN 1-55860-320-4 .
  • Kennedy, Ken; & Allen, Randy. Optimalizace kompilátorů pro moderní architektury: Přístup založený na závislosti  . - Morgan Kaufmann , 2001. - ISBN 1-55860-286-0 .