Loop fusion är en omordning omvandling som sammanfogar flera slingor till en enda slinga. Det kan öka datalokaliteten och granulariteten av parallella slingor, vilket förbättrar programmets prestanda. Tidigare synsätt på detta problem har tittat på dessa två fördelar isolerat. I detta arbete föreslår vi en ny modell som tar hänsyn till datalokalisering, parallellism och registertryck tillsammans. Vi bygger en viktad riktad acyklisk graf där noderna representerar programloopar tillsammans med deras registertryck, och kanterna representerar mängden lokalitet och parallellism närvarande. Riktningen på en kant representerar en order om verkställighet. Vi partitionerar sedan grafen i komponenter så att summan av vikterna på kanterna skär minimeras, med förbehåll för begränsningen att noderna i samma partition kan säkert sammanfogas tillsammans, och registertrycket i den kombinerade loopen inte överstiger antalet tillgängliga register. Tidigare arbete visar att det allmänna problemet med "nding optimal partitioner är NP-hård. I begränsade fall visar vi att det är möjligt att komma fram till den optimala lösningen. Vi ger en algoritm för det begränsade fallet och en heuristisk för det allmänna fallet. Vi demonstrerar fusionens effektivitet och vårt tillvägagångssätt med experimentella resultat.
Singhai och McKinley REF undersökte effekterna av slingfusion på datalokalisering och parallellism tillsammans.
A Parametrized Loop Fusion Algorithm for Improving Parallelism and Cache Locality
{'venue': 'Computer Journal', 'journal': None, 'mag_field_of_study': ['Computer Science']}