HalideTuner : generating and tuning halide schedules with Opentuner
暂无分享,去创建一个
Halide is a programming language designed to make it easier to write high-performance image processing code. Halide separates the scientific problem of how to write the image processing algorithm to get the required result from the engineering problem of how to schedule the different parts of this algorithm to get a fast solution. This allows Halide's users to test out different schedules for a single image processing algorithm to get the fastest program. Unfortunately, the amount of possible schedules is staggeringly large, and there is no deterministic way to find the fastest schedules. This leads to a lot of man-hours spent trying to find good Halide schedules. As Halide grows in popularity and the platforms on which it runs diversify, the need for Halide schedules will increase. As the need for good Halide schedules increases, so will the need for good schedule designers. However, given the elusiveness of highly performant schedules, machine generated schedules will become highly preferred to human trial and error. HalideTuner solves this problem by automating the entire process. The automation of the the schedule generation and tuning is done by a machine learning framework called Opentuner. Before Opentuner can operate, defining how to iterate through the search space needs to be codified. In this paper we present HalideTuner a codification of how Opentuner can manipulate Halide schedules to improve them in the process of clever trial and error. HalideTuner serves as the foundation for generating and tuning Halide schedules. Thesis Supervisor: Saman Amarasinghe Title: Professor