Current architecture complexity requires fine tuning of compiler and runtime parameters to achieve full potential performance. Autotuning substantially improves default parameters in many scenarios but it is a costly process requiring a long iterative evaluation.#R##N##R##N#We propose an automatic piecewise autotuner based on CERE Codelet Extractor and REplayer. CERE decomposes applications into small pieces called codelets: each codelet maps to a loop or to an OpenMP parallel region and can be replayed as a standalone program.#R##N##R##N#Codelet autotuning achieves better speedups at a lower tuning cost. By grouping codelet invocations with the same performance behavior, CERE reduces the number of loops or OpenMP regions to be evaluated. Moreover unlike whole-program tuning, CERE customizes the set of best parameters for each specific OpenMP region or loop.#R##N##R##N#We demonstrate CERE tuning of compiler optimizations, number of threads and thread affinity on a NUMA architecture. On average over the NAS 3.0 benchmarks, we achieve a speedup of 1.08$$\times $$ after tuning. Tuning a single codelet is 13$$\times $$ cheaper than whole-program evaluation and estimates the tuning impact on the original region with a 94.7i¾ź% accuracy. On a Reverse Time Migration RTM proto-application we achieve a 1.11$$\times $$ speedup with a 200$$\times $$ cheaper exploration.
['Mihail Popov', 'Chadi Akel', 'William Jalby', 'Pablo de Oliveira Castro']
Piecewise Holistic Autotuning of Compiler and Runtime Parameters