Iterativ optimering är en populär kompilatoroptimeringsmetod som har studerats ingående under det senaste årtiondet. I den här artikeln dekonstruerar vi iterativ optimering genom att utvärdera om det fungerar över datauppsättningar och genom att analysera varför det fungerar. Hittills är de flesta iterativa optimeringsstudier baserade på en premiss som aldrig riktigt utvärderades: att det är möjligt att lära sig de bästa kompilatoroptimeringarna över datauppsättningar. I den här artikeln utvärderar vi den här frågan för första gången med ett mycket stort antal datauppsättningar. Vi komponerar därför KDataSets, en datasetsvit med 1000 dataset för 32 program, som vi släpper till allmänheten. Vi karakteriserar mångfalden av KDataSets och använder den därefter för att utvärdera iterativ optimering. För alla 32 program finner vi att det finns minst en kombination av kompilatoroptimeringar som uppnår minst 83 % eller mer av den bästa möjliga upphastigheten för alla datauppsättningar på två allmänt använda kompilatorer (Intels ICC och GNUs GCC). Denna optimala kombination är programspecifik och ger upphastigheter upp till 3,75× (genomsnittligt över datauppsättningar av ett program) över den högsta optimeringsnivån av kompilatorerna (-O3 för GCC och -snabb för ICC). Detta fynd tyder på att optimera program över dataset kan vara mycket enklare än tidigare förväntat. Dessutom utvärderar vi idén att införa kompilatorval som en del av iterativ optimering. Vi finner att det kan ytterligare förbättra prestandan av iterativ optimering eftersom olika program gynnar olika kompilatorer. Vi undersöker också varför iterativ optimering fungerar genom att analysera de optimala kombinationerna. Vi finner att endast en handfull optimeringar ger det mesta av upptrappningen. Slutligen visar vi att optimeringar interagerar på ett komplext och ibland kontraintuitivt sätt genom två fallstudier, vilket bekräftar att iterativ optimering är en oersättlig och viktig kompilatorstrategi.
Arbetet i REF visade experimentellt att det finns minst ett program-nivå kompilatoroptimering val som uppnår minst 83% eller mer av de mest kända speedup över 1000 olika dataset för vart och ett av de 32 program som beaktas.
Deconstructing iterative optimization
{'venue': 'TACO', 'journal': None, 'mag_field_of_study': ['Computer Science']}