Optimizing LLVM Pass Sequences with Shackleton: A Linear Genetic Programming Framework
In this paper we introduce Shackleton as a generalized framework enabling the application of linear genetic programming -- a technique under the umbrella of evolutionary algorithms -- to a variety of use cases. We also explore here a novel application for this class of methods: optimizing sequences of LLVM optimization passes. The algorithm underpinning Shackleton is discussed, with an emphasis on the effects of different features unique to the framework when applied to LLVM pass sequences. Combined with analysis of different hyperparameter settings, we report the results on automatically optimizing pass sequences using Shackleton for two software applications at differing complexity levels. Finally, we reflect on the advantages and limitations of our current implementation and lay out a path for further improvements. These improvements aim to surpass hand-crafted solutions with an automatic discovery method for an optimal pass sequence.
Code (1)
Tasks
Evolutionary AlgorithmsSimilar Papers 제목 키워드 기반
Genetic Improvement in the Shackleton Framework for Optimizing LLVM Pass Sequences
Genetic improvement is a search technique that aims to improve a given acceptable solution to a problem. In this paper, we present the novel use of genetic improvement to find problem-specific optimized LLVM pass sequenc…
Code GenerationA Case Study of LLVM-Based Analysis for Optimizing SIMD Code Generation
This paper presents a methodology for using LLVM-based tools to tune the DCA++ (dynamical clusterapproximation) application that targets the new ARM A64FX processor. The goal is to describethe changes required for the ne…
Code GenerationACPO: AI-Enabled Compiler Framework
The key to performance optimization of a program is to decide correctly when a certain transformation should be applied by a compiler. This is an ideal opportunity to apply machine-learning models to speed up the tuning …
Learning to Combine Instructions in LLVM Compiler
Instruction combiner (IC) is a critical compiler optimization pass, which replaces a sequence of instructions with an equivalent and optimized instruction sequence at basic block level. There can be thousands of instruct…
Compiler OptimizationMachine TranslationPOSET-RL: Phase ordering for Optimizing Size and Execution Time using Reinforcement Learning
The ever increasing memory requirements of several applications has led to increased demands which might not be met by embedded devices. Constraining the usage of memory in such cases is of paramount importance. It is im…
CPUreinforcement-learningReinforcement Learning (RL)