  Performance models can be very useful for understanding the behavior of
applications and hence can help guide design and optimization decisions.
Unfortunately, performance modeling of nontrivial computations typically
requires significant expertise and human effort. Moreover, even when performed
by experts, it is necessarily limited in scope, accuracy, or both. However,
since models are not typically available, programmers, compilers or autotuners
cannot use them easily to guide optimizations and are limited to
heuristic-based methods that potentially take a lot of time to perform
unnecessary transformations. We believe that streamlining model generation and
making it scalable (both in terms of human effort and code size) would enable
dramatic improvements in compilation techniques, as well as manual optimization
and autotuning. To that end, we are building the Meliora code analysis
infrastructure for machine learning-based performance model generation of
arbitrary codes based on static analysis of intermediate language
representations. We demonstrate good accuracy in matching known codes and show
how Meliora can be used to optimize new codes though reusing optimization
knowledge, either manually or in conjunction with an autotuner. When
autotuning, Meliora eliminates or dramatically reduces the empirical search
space, while generally achieving competitive performance.
