Automatisk vektorisering är avgörande för att förbättra prestandan hos datorintensiva program på moderna processorer. Emellertid finns det mycket utrymme för förbättring över automatisk-vektorisering kapacitet av nuvarande produktionskompilatorer genom noggrann vektor-kod syntes som använder en mängd olika loop transformationer (t.ex., unroll-and-jam, utbyte, etc.). Eftersom den uppsättning omvandlingar som beaktas ökar blir valet av den mest effektiva kombinationen av transformationer en betydande utmaning: För närvarande används kostnadsmodeller i vektoriserande kompilatorer ofta inte kan identifiera de bästa valen. I det här dokumentet tar vi itu med detta problem med hjälp av maskininlärningsmodeller för att förutsäga prestandan för SIMD-koder. I motsats till befintliga metoder som har använt hög nivå funktioner i programmet, utvecklar vi maskininlärning modeller baserade på funktioner som extraheras från den genererade monteringskoden. Modellerna tränas offline på ett antal riktmärken och används vid kompilering-tid för att diskriminera mellan många möjliga vektoriserade varianter som genereras från indatakoden. Vi visar effektiviteten av maskinen lärande modell genom att använda den för att styra automatisk vektorisering på en mängd olika tensor kontraktion kärnor, med förbättringar från 2× till 8× över Intel ICC auto-vektorized kod. Vi utvärderar också effektiviteten av modellen på ett antal schablonberäkningar och visar god förbättring över auto-vektoriserad kod.
Exempelvis i REF är prestandan för SIMD-koder ungefärlig med en linjär regressionsmodell.
Using machine learning to improve automatic vectorization
{'venue': 'TACO', 'journal': None, 'mag_field_of_study': ['Computer Science']}