MCompiler: A Synergistic Compilation Framework

05/29/2019
by   Aniket Shivam, et al.
0

This paper presents a meta-compilation framework, the MCompiler. The main idea is that different segments of a program can be compiled with different compilers/optimizers and combined into a single executable. The MCompiler can be used in a number of ways. It can generate an executable with higher performance than any individual compiler, because each compiler uses a specific, ordered set of optimization techniques and different profitability models and can, therefore, generate code significantly different from other compilers. Alternatively, the MCompiler can be used by researchers and compiler developers to evaluate their compiler implementation and compare it to results from other available compilers/optimizers. A code segment in this work is a loop nest, but other choices are possible. This work also investigates the use of Machine Learning to learn inherent characteristics of loop nests and then predict during compilation the most suited code optimizer for each loop nest in an application. This reduces the need for profiling applications as well as the compilation time. The results show that our framework improves the overall performance for applications over state-of-the-art compilers by a geometric mean of 1.96x for auto-vectorized code and 2.62x for auto-parallelized code. Parallel applications with OpenMP directives are also improved by the MCompiler, with a geometric mean performance improvement of 1.04x (up to 1.74x). The use of Machine Learning prediction achieves performance very close to the profiling-based search for choosing the most suited code optimizer: within 4 for auto-vectorized code and within 8 MCompiler can be expanded to collect metrics other than performance to be used in optimization process. The example presented is collecting energy data.

READ FULL TEXT

page 1

page 3

page 5

page 6

page 8

page 10

research
02/02/2019

Towards an Achievable Performance for the Loop Nests

Numerous code optimization techniques, including loop nest optimizations...
research
06/23/2021

Threaded Code Generation with a Meta-tracing JIT Compiler

Language implementation frameworks, e.g., RPython and Truffle/Graal, are...
research
08/03/2018

A Compiler-Compiler for DSL Embedding

In this paper, we present a framework to generate compilers for embedded...
research
10/04/2020

Instead of Rewriting Foreign Code for Machine Learning, Automatically Synthesize Fast Gradients

Applying differentiable programming techniques and machine learning algo...
research
04/02/2021

TreeToaster: Towards an IVM-Optimized Compiler

A compiler's optimizer operates over abstract syntax trees (ASTs), conti...
research
05/29/2019

Categorization of Program Regions for Agile Compilation using Machine Learning and Hardware Support

A compiler processes the code written in a high level language and produ...
research
11/14/2018

A Performance Vocabulary for Affine Loop Transformations

Modern polyhedral compilers excel at aggressively optimizing codes with ...

Please sign up or login with your details

Forgot password? Click here to reset