Abstract High-level programoptimeringar, såsom loop transformationer, är avgörande för hög prestanda på multi-core mål. Men komplexa sekvenser av loopomvandlingar krävs ofta för att exponera parallellism (både grovkorn och finkorn) och förbättra datalokaliseringen. Den polyhedral sammanställning ram har visat sig vara mycket effektiv på att representera dessa komplexa sekvenser och omstrukturering computeintensiva applikationer, sömlöst hantera perfekt och ofullkomligt häckade slingor. Den modellerar godtyckligt komplexa sekvenser av loop transformationer i en enhetlig matematisk ram, dramatiskt öka expressivitet (och förväntad effektivitet) av loopopoptimering skede. Att identifiera de mest effektiva kretsloppsomvandlingarna är dock fortfarande en stor utmaning: dagens toppmoderna heuristik inom polyhedralramar misslyckas helt enkelt med att exponera bra prestanda inom ett brett spektrum av numeriska tillämpningar. Deras brist på effektivitet beror främst på förenklade prestandamodeller som inte återspeglar komplexiteten i dagens processorer (CPU, cache beteende, etc.). Vi tar itu med problemet med att välja de bästa polyhedral optimeringar med dedikerade maskininlärning modeller, tränas specifikt på målmaskinen. Vi visar att dessa modeller snabbt kan välja högpresterande optimeringar med mycket begränsad iterativ sökning. Vi frikopplar problemet med att välja bra komplexa sekvenser av optimeringar i två steg: (1) vi begränsar uppsättningen av kandidatoptimeringar med hjälp av statiska kostnadsmodeller för att välja de loop transformationer som genomför specifika högnivåoptimeringar (t.ex., tiling, parallellism, etc.); (2) vi förutsäga prestanda för varje hög nivå komplexa optimeringssekvens med utbildade modeller som tar som ingång en prestanda-counter karakterisering av det ursprungliga programmet. Vårt end-to-end ramverk är validerat med hjälp av många riktmärken på två moderna multi-core plattformar. Vi undersöker en mängd olika maskininlärning algoritmer och maskindiskar, och vi får prestandaförbättringar över produktioner kompilatorer sträcker sig i genomsnitt från 3,2× till 8,7×, genom att köra högst 6 programvarianter från en polyhedral optimering utrymme.
REF använde prestandaräknaren värden som samlats in från att utföra en loop som ingång till en maskininlärning modell som förutspår de bästa polyhedral transformationer för loopen.
Predictive Modeling in a Polyhedral Optimization Space
{'venue': 'International Journal of Parallel Programming', 'journal': 'International Journal of Parallel Programming', 'mag_field_of_study': ['Computer Science']}