Slučování cyklů

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é 10. ledna 2017; ověření vyžaduje 1 úpravu .

Slučování cyklů (slučování smyček, eng.  loop fusion , eng.  loop jamming ) je optimalizace kompilátoru , která sloučí několik cyklů sousedících ve stromu cyklů do jednoho. Transformace je možná, pokud mají smyčky stejný počet iterací a nezávisí na sobě podle . Slučování cyklů může zlepšit datovou lokalitu [1] [2] , což zlepšuje efektivitu mezipaměti .

Sloučení smyček ne vždy zkrátí dobu provádění programu. Na některých architekturách může být výhodnější provést dvě smyčky místo jedné kombinované smyčky, protože například datová lokalita může být v tomto případě vyšší. V takových případech lze použít zpětnou optimalizaci, rozklad smyčky , který rozdělí jednu smyčku na několik.

Příklady

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

ekvivalentní:

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

Poznámky

  1. Manjikian, N., Abdelrahman, T.S. Fúze smyček pro paralelismus a lokalitu
  2. Steinberg B.Ya., Steinberg O.B., Vasilenko A.A. Slučovací cykly pro lokalizaci dat

Odkazy