Optimering av program för att utnyttja den underliggande maskinvaruarkitekturen är en viktig uppgift. Mycket forskning har gjorts om att göra det möjligt för kompilatorer att hitta den bästa uppsättningen kodoptimeringar som kan bygga den snabbaste och mindre resurshungriga körbara för ett givet program. En vanlig metod är iterativ sammanställning, ibland berikad med maskininlärning tekniker. Detta ger bra resultat, men kräver extremt långa sammanställningstider och en inledande träningsfas som varar även i dagar eller veckor. Vi presenterar långsiktigt lärande, en ny algoritm som gör det möjligt för kompilatorn att förbättra prestandan för kompilerade program med förkortade sammanställningstider med avseende på iterativ sammanställning, och utan en inledande utbildningsfas. Vår algoritm bygger inte bara bra program: den förvärvar kunskap varje gång ett program sammanställs och den använder sådan kunskap för att lära sig kompilatorheuristik, utan behov av en expert att manuellt definiera dem. Heuristikerna utvecklas under varje sammanställning, genom att utvärdera deras effekt på de genererade programmen. Vi presenterar implementeringar av långsiktigt lärande på toppen av två olika kompilatorer, och experimentella data som samlats in på flera hårdvarukonfigurationer som visar dess effektivitet.
I REF presenteras en långsiktig inlärningsalgoritm som bestämmer den bästa uppsättningen heuristik.
Continuous learning of compiler heuristics
{'venue': 'TACO', 'journal': None, 'mag_field_of_study': ['Computer Science']}