PTUNE: A Tool for Online Autotuning with Optimizing Compilers
MetadataShow full metadata
Harnessing the full potential of complex architectures has been a perennial challenge for the high- performance computing community. Each new architecture has brought with it new features that have added to the complexity and has required significant time and effort in re-targeting and retuning of scientific and engineering applications. The recent industry-wide shift towards multicore processors has greatly magnified this problem. With increasing number of cores per socket, deep hierarchies of shared and distributed caches and peta-scale parallelism on the horizon, multicore platforms pose unprecedented challenges for software development and application tuning. Compiler and library developers have responded to this daunting challenge by developing techniques for automatic performance tuning. In an autotuning framework, a code is analyzed, alternate code variants are generated with tuning parameters and then a heuristic search is performed based on execution time feedback to obtain an implementation that yields optimal or near-optimal performance for the target platform. The success of automatically tuned libraries such as ATLAS and FFTW, show great promise for autotuning. In spite of this success, however, automatic tuning is yet to emerge as a viable alternative to traditional compilation and manual tuning. The principal bottleneck in this regard has been the enormous time spent exploring the large and complex multi-dimensional search space of alternate program variants. Algorithmic choice, complex interaction of compiler transformations and program sensitivity to input data sets makes the search space problem a matter of concern.