The execution order of a block of computer instructions on a pipelined machine can make a difference in its running time by a factor of two or more. In order to achieve the best possible speed, compilers use heuristic schedulers appropriate to each specific architecture implementation. However, these heuristic schedulers are time-consuming and expensive to build. We present empirical results using both rollouts and reinforcement learning to construct heuristics for scheduling basic blocks. In simulation, the rollout scheduler outperformed a commercial scheduler, and the reinforcement learning scheduler performed almost as well as the commercial scheduler.
Cited By
- Ashouri A, Killian W, Cavazos J, Palermo G and Silvano C (2018). A Survey on Compiler Autotuning using Machine Learning, ACM Computing Surveys, 51:5, (1-42), Online publication date: 30-Sep-2019.
- Yuki T, Renganarayanan L, Rajopadhye S, Anderson C, Eichenberger A and O'Brien K Automatic creation of tile size selection models Proceedings of the 8th annual IEEE/ACM international symposium on Code generation and optimization, (190-199)
Recommendations
Scheduling straight-line code using reinforcement learning and rollouts
NIPS'98: Proceedings of the 11th International Conference on Neural Information Processing SystemsThe execution order of a block of computer instructions can make a difference in its running time by a factor of two or more. In order to achieve the best possible speed, compilers use heuristic schedulers appropriate to each specific architecture ...
Building a Basic Block Instruction Scheduler with Reinforcement Learning and Rollouts
The execution order of a block of computer instructions on a pipelined machine can make a difference in running time by a factor of two or more. Compilers use heuristic schedulers appropriate to each specific architecture implementation to achieve the ...
Learning to schedule straight-line code
NIPS'97: Proceedings of the 10th International Conference on Neural Information Processing SystemsProgram execution speed on modern computers is sensitive, by a factor of two or more, to the order in which instructions are presented to the processor. To realize potential execution efficiency, an optimizing compiler must employ a heuristic algorithm ...