of 1 st Workshop on Resource Awareness and Application Autotuning in Adaptive and Heterogeneous Computing ( RES 4 ANT ) 2016 Evaluation of Different Autotuning Methodologies on The Compiler Optimization Problem (original) (raw)

An Evaluation of Autotuning Techniques for the Compiler Optimization Problems

2016

Diversity of today’s architectures have forced programmers and compiler researchers to port their application across many different platforms. Compiler auto-tuning itself plays a major role within that process as it has certain levels of complexities that the standard optimization levels fail to bring the best results due to their average performance output. To address the problem, different optimization techniques has been used for traversing, pruning the huge space, adaptability and portability. In this paper, we evaluate our different autotuning approaches including the use of Design Space Exploration (DSE) techniques and machine learning to further tackle the both problems of selecting and the phase-ordering of the compiler optimizations. It has been experimentally demonstrated that using these techniques have positive effects on the performance metrics of the applications under analysis and can bring up to 60% performance improvement with respect to standard optimization levels...

Portable compiler optimisation across embedded programs and microarchitectures using machine learning

Building an optimising compiler is a difficult and time consuming task which must be repeated for each generation of a microprocessor. As the underlying microarchitecture changes from one generation to the next, the compiler must be retuned to optimise specifically for that new system. It may take several releases of the compiler to effectively exploit a processor's performance potential, by which time a new generation has appeared and the process starts again.

Adaptive Optimizing Compilers for the 21st Century

The Journal of Supercomputing, 2002

Historically, compilers have operated by applying a fixed set of optimizations in a predetermined order. We call such an ordered list of optimizations a compilation sequence. This paper describes a prototype system that uses biased random search to discover a program-specific compilation sequence that minimizes an explicit, external objective function. The result is a compiler framework that adapts its behavior to the application being compiled, to the pool of available transformations, to the objective function, and to the target machine. This paper describes experiments that attempt to characterize the space that the adaptive compiler must search. The preliminary results suggest that optimal solutions are rare and that local minima are frequent. If this holds true, biased random searches, such as a genetic algorithm, should find good solutions more quickly than simpler strategies, such as hill climbing.

A Survey on Compiler Autotuning using Machine Learning

ACM Computing Surveys

Since the mid-1990s, researchers have been trying to use machine-learning-based approaches to solve a number of different compiler optimization problems. These techniques primarily enhance the quality of the obtained results and, more importantly, make it feasible to tackle two main compiler optimization problems: optimization selection (choosing which optimizations to apply) and phase-ordering (choosing the order of applying optimizations). The compiler optimization space continues to grow due to the advancement of applications, increasing number of compiler optimizations, and new target architectures. Generic optimization passes in compilers cannot fully leverage newly introduced optimizations and, therefore, cannot keep up with the pace of increasing options. This survey summarizes and classifies the recent advances in using machine learning for the compiler optimization field, particularly on the two major problems of (1) selecting the best optimizations, and (2) the phase-order...

Compiler optimization-space exploration

Proceedings of the …, 2003

To meet the demands of modern architectures, optimizing compilers must incorporate an ever larger number of increasingly complex transformation algorithms. Since code transformations may often degrade performance or interfere with subsequent transformations, compilers employ predictive heuristics to guide optimizations by predicting their effects a priori. Unfortunately, the unpredictability of optimization interaction and the irregularity of today's wide-issue machines severely limit the accuracy of these heuristics. As a result, compiler writers may temper high variance optimizations with overly conservative heuristics or may exclude these optimizations entirely. While this process results in a compiler capable of generating good average code quality across the target benchmark set, it is at the cost of missed optimization opportunities in individual code segments.

A top popular approach for the automatic tuning of compiler optimizations

PROCEEDING OF THE 1ST INTERNATIONAL CONFERENCE ON ADVANCED RESEARCH IN PURE AND APPLIED SCIENCE (ICARPAS2021): Third Annual Conference of Al-Muthanna University/College of Science

Due to the large number of optimization sequences available in the modern compilers, creating large search areas, a comprehensive exploration of all possible sequences of passes is not possible practically. Therefore, to realize optimal performance, the process of selecting a sequence of passes is a very difficult problem. In addition, finding the best optimization sequence arrangement can improve performance even for a simple program is not an easy task. However, it will additional another problem called phase order issue. In this paper, the proposed approach provides the potential to use techniques inspired by the field of Recommendation System (RS) as a solution to the compiler Autotuning problem. Our method is based on generating random optimization sequences and applying them to a group of different programs, and thus, recommending the ones that give the best execution time. Then, applying the unseen programs to the obtained optimization sequence according to the order of preferences predicted by the Top Popular (TP) algorithm. The results show that this method exceeds the standard-O3 level of the LLVM compiler in improving execution time using TP algorithm. The approach suggested using the standard evaluation of the three benchmark suites PolyBench, Shootout, and Stanford, including 50 different programs and using LLVM (Low Level Virtual Machine) compiler under Linux Ubuntu. The results obtained show that this method performs better than standard optimization level-O3 of LLVM compiler in improving the execution time by an average of 8 % for TP without rate, 20% for TP with rate for senario1 and finally 35% for TP with rate for scenario2.

Meta optimization: improving compiler heuristics with machine learning

2003

Compiler writers have crafted many heuristics over the years to approximately solve NP-hard problems efficiently. Finding a heuristic that performs well on a broad range of applications is a tedious and difficult process. This paper introduces Meta Optimization, a methodology for automatically fine-tuning compiler heuristics. Meta Optimization uses machine-learning techniques to automatically search the space of compiler heuristics. Our techniques reduce compiler design complexity by relieving compiler writers of the tedium of heuristic tuning. Our machine-learning system uses an evolutionary algorithm to automatically find effective compiler heuristics. We present promising experimental results. In one mode of operation Meta Optimization creates application-specific heuristics which often result in impressive speedups. For hyperblock formation, one optimization we present in this paper, we obtain an average speedup of 23% (up to 73%) for the applications in our suite. Furthermore, by evolving a compiler's heuristic over several benchmarks, we can create effective, general-purpose heuristics. The best general-purpose heuristic our system found for hyperblock formation improved performance by an average of 25% on our training set, and 9% on a completely unrelated test set. We demonstrate the efficacy of our techniques on three different optimizations in this paper: hyperblock formation, register allocation, and data prefetching.

A Survey of General and Architecture-Specific Compiler Optimization Techniques

2007

Abstract Experience with commercial and research high-performance architectures has indicated that the compiler plays an increasingly important role in real application performance. In particular, the di culty in programming some of the so-called\ hardware rst" machines underscores the need for integrating architecture design and compilation strategy. In addition, architectures featuring novel hardware optimizations require compilers that can take advantage of them in order to be commercially viable.

Memory Utilization and Machine Learning Techniques for Compiler Optimization

ITM Web of Conferences, 2021

Compiler optimization techniques allow developers to achieve peak performance with low-cost hardware and are of prime importance in the field of efficient computing strategies. The realm of compiler suites that possess and apply efficient optimization methods provide a wide array of beneficial attributes that help programs execute efficiently with low execution time and minimal memory utilization. Different compilers provide a certain degree of optimization possibilities and applying the appropriate optimization strategies to complex programs can have a significant impact on the overall performance of the system. This paper discusses methods of compiler optimization and covers significant advances in compiler optimization techniques that have been established over the years. This article aims to provide an overall survey of the cache optimization methods, multi memory allocation features and explore the scope of machine learning in compiler optimization to attain a sustainable compu...

Machine Learning-Driven Automatic Program Transformation to Increase Performance in Heterogeneous Architectures

2017

We present a program transformation approach to convert procedural code into functionally equivalent code adapted to a given platform. Our framework is based on the application of guarded transformation rules that capture semantic conditions to ensure the soundness of their application. Our goal is to determine a sequence of rule applications which transform some initial code into final code which optimizes some non-functional properties. The code to be transformed is adorned with semantic annotations, either provided by the user or by external analysis tools. These annotations give information to decide whether applying a transformation rule is or is not sound. In general, there are several rules applicable at several program points and, besides, transformation sequences do not monotonically change the optimization function. Therefore, we face a search problem that grows exponentially with the length of the transformation sequence. In our experience with even small examples, that b...