Štěpení a fúze smyčky - Loop fission and fusion - Wikipedia
v počítačová věda, štěpení smyčky (nebo distribuce smyčky) je optimalizace kompilátoru ve kterém a smyčka je rozdělen na několik smyček ve stejném rozsahu indexu, přičemž každá bere pouze část těla původní smyčky.[1][2] Cílem je rozložit velké tělo smyčky na menší, aby se dosáhlo lepšího využití referenční lokalita. Tato optimalizace je nejúčinnější v vícejádrové procesory který může rozdělit úkol na více úkolů pro každého procesor.
Naopak, smyčková fúze (nebo zaseknutí smyčky) je optimalizace kompilátoru a transformace smyčky který nahrazuje více smyčky s jedním.[3][2] Je možné, když dvě smyčky iterují ve stejném rozsahu a navzájem neodkazují na data. Sloučená smyčka ne vždy zvyšuje rychlost běhu. Na některých architektury, dvě smyčky mohou ve skutečnosti fungovat lépe než jedna smyčka, protože je například zvýšena datová lokalita v každé smyčce.
Fúze
Příklad v C
int i, A[100], b[100];pro (i = 0; i < 100; i++) A[i] = 1; pro (i = 0; i < 100; i++) b[i] = 2;
odpovídá:
int i, A[100], b[100];pro (i = 0; i < 100; i++){ A[i] = 1; b[i] = 2;}
Viz také
Reference
- ^ Y.N. Srikant; Priti Shankar (3. října 2018). Příručka kompilátoru: Optimalizace a generování strojového kódu, druhé vydání. CRC Press. ISBN 978-1-4200-4383-9.
- ^ A b Kennedy, Ken & Allen, Randy. (2001). Optimalizace překladačů pro moderní architektury: přístup založený na závislostech. Morgan Kaufmann. ISBN 1-55860-286-0.
- ^ Steven Muchnick; Muchnick and Associates (15. srpna 1997). Pokročilá implementace návrhu kompilátoru. Morgan Kaufmann. ISBN 978-1-55860-320-2.
smyčková fúze.