Towards an Exploration Tool for Program Optimization Using Heuristic Search Algorithms
Optimizing programs to run efficiently on modern parallel hardware is hard but crucial for many applications. Computations are commonly expressed too low level and optimizations are baked into the same program hindering portability.
Our approach uses two novel languages: RISE a high-level language for expressing computations using well known data-parallel patterns and ELEVATE a language for describing optimization strategies as compositions of rewrites. A high-level RISE program is optimized and transformed to a low-level program via rewriting described as ELEVATE strategies. Then, high-performance parallel code is generated. The crucial challenge now becomes to pick the right optimizations strategies for a given high-level RISE program.
We work on the application of traditional heuristic search algorithms to optimize the search space defined by a set of ELEVATE strategies. The set algorithms include Iterative Improvement, Simulated Annealing, Tabu Search, and Ant System. As some optimization strategies include numerical parameters to be chosen, we harness traditional parameter auto tuning.