  In this paper, we develop a ytopt autotuning framework that leverages
Bayesian optimization to explore the parameter space search and compare four
different supervised learning methods within Bayesian optimization and evaluate
their effectiveness. We select six of the most complex PolyBench benchmarks and
apply the newly developed LLVM Clang/Polly loop optimization pragmas to the
benchmarks to optimize them. We then use the autotuning framework to optimize
the pragma parameters to improve their performance. The experimental results
show that our autotuning approach outperforms the other compiling methods to
provide the smallest execution time for the benchmarks syr2k, 3mm, heat-3d, lu,
and covariance with two large datasets in 200 code evaluations for effectively
searching the parameter spaces with up to 170,368 different configurations. We
find that the Floyd-Warshall benchmark did not benefit from autotuning because
Polly uses heuristics to optimize the benchmark to make it run much slower. To
cope with this issue, we provide some compiler option solutions to improve the
performance. Then we present loop autotuning without a user's knowledge using a
simple mctree autotuning framework to further improve the performance of the
Floyd-Warshall benchmark. We also extend the ytopt autotuning framework to tune
a deep learning application.
