Help | Advanced Search

Computer Science > Programming Languages

Title: compilergym: robust, performant compiler optimization environments for ai research.

Abstract: Interest in applying Artificial Intelligence (AI) techniques to compiler optimizations is increasing rapidly, but compiler research has a high entry barrier. Unlike in other domains, compiler and AI researchers do not have access to the datasets and frameworks that enable fast iteration and development of ideas, and getting started requires a significant engineering investment. What is needed is an easy, reusable experimental infrastructure for real world compiler optimization tasks that can serve as a common benchmark for comparing techniques, and as a platform to accelerate progress in the field. We introduce CompilerGym, a set of environments for real world compiler optimization tasks, and a toolkit for exposing new optimization tasks to compiler researchers. CompilerGym enables anyone to experiment on production compiler optimization problems through an easy-to-use package, regardless of their experience with compilers. We build upon the popular OpenAI Gym interface enabling researchers to interact with compilers using Python and a familiar API. We describe the CompilerGym architecture and implementation, characterize the optimization spaces and computational efficiencies of three included compiler environments, and provide extensive empirical evaluations. Compared to prior works, CompilerGym offers larger datasets and optimization spaces, is 27x more computationally efficient, is fault-tolerant, and capable of detecting reproducibility bugs in the underlying compilers. In making it easy for anyone to experiment with compilers - irrespective of their background - we aim to accelerate progress in the AI and compiler research domains.

Submission history

Access paper:.

  • Other Formats

license icon

References & Citations

  • Google Scholar
  • Semantic Scholar

DBLP - CS Bibliography

Bibtex formatted citation.

BibSonomy logo

Bibliographic and Citation Tools

Code, data and media associated with this article, recommenders and search tools.

  • Institution

arXivLabs: experimental projects with community collaborators

arXivLabs is a framework that allows collaborators to develop and share new arXiv features directly on our website.

Both individuals and organizations that work with arXivLabs have embraced and accepted our values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners that adhere to them.

Have an idea for a project that will add value for arXiv's community? Learn more about arXivLabs .

compiler optimization Recently Published Documents

Total documents.

  • Latest Documents
  • Most Cited Documents
  • Contributed Authors
  • Related Sources
  • Related Keywords

Toward a novel engine for compiler optimization space exploration of big data workloads

Evaluation of compilers’ capability of automatic vectorization based on source code analysis.

Automatic vectorization is an important technique for compilers to improve the parallelism of programs. With the widespread usage of SIMD (Single Instruction Multiple Data) extensions in modern processors, automatic vectorization has become a hot topic in the research of compiler techniques. Accurately evaluating the effectiveness of automatic vectorization in typical compilers is quite valuable for compiler optimization and design. This paper evaluates the effectiveness of automatic vectorization, analyzes the limitation of automatic vectorization and the main causes, and improves the automatic vectorization technology. This paper firstly classifies the programs by two main factors: program characteristics and transformation methods. Then, it evaluates the effectiveness of automatic vectorization in three well-known compilers (GCC, LLVM, and ICC, including their multiple versions in recent 5 years) through TSVC (Test Suite for Vectorizing Compilers) benchmark. Furthermore, this paper analyzes the limitation of automatic vectorization based on source code analysis, and introduces the differences between academic research and engineering practice in automatic vectorization and the main causes, Finally, it gives some suggestions as to how to improve automatic vectorization capability.

Not so fast: understanding and mitigating negative impacts of compiler optimizations on code reuse gadget sets

Despite extensive testing and correctness certification of their functional semantics, a number of compiler optimizations have been shown to violate security guarantees implemented in source code. While prior work has shed light on how such optimizations may introduce semantic security weaknesses into programs, there remains a significant knowledge gap concerning the impacts of compiler optimizations on non-semantic properties with security implications. In particular, little is currently known about how code generation and optimization decisions made by the compiler affect the availability and utility of reusable code segments called gadgets required for implementing code reuse attack methods such as return-oriented programming. In this paper, we bridge this gap through a study of the impacts of compiler optimization on code reuse gadget sets. We analyze and compare 1,187 variants of 20 different benchmark programs built with two production compilers (GCC and Clang) to determine how their optimization behaviors affect the code reuse gadget sets present in program variants with respect to both quantitative and qualitative metrics. Our study exposes an important and unexpected problem; compiler optimizations introduce new gadgets at a high rate and produce code containing gadget sets that are generally more useful to an attacker than those in unoptimized code. Using differential binary analysis, we identify several undesirable behaviors at the root of this phenomenon. In turn, we propose and evaluate several strategies to mitigate these behaviors. In particular, we show that post-production binary recompilation can effectively mitigate these behaviors with negligible performance impacts, resulting in optimized code with significantly smaller and less useful gadget sets.

Towards Compile-Time-Reducing Compiler Optimization Selection via Machine Learning

Leveraging compiler optimization for code clone detection, encouraging compiler optimization practice for undergraduate students through competition, unleashing the hidden power of compiler optimization on binary code difference: an empirical study, developer and user-transparent compiler optimization for interactive applications, designing a distributed multi-agent system for compiler optimization, when function signature recovery meets compiler optimization, export citation format, share document.

Academia.edu no longer supports Internet Explorer.

To browse Academia.edu and the wider internet faster and more securely, please take a few seconds to  upgrade your browser .

Enter the email address you signed up with and we'll email you a reset link.

  • We're Hiring!
  • Help Center

paper cover thumbnail

Research paper on Compiler Design

Profile image of Sufyan Anwar

A compiler translates and/or compiles a program written in a suitable source language into an equivalent target language through a number of stages. Starting with recognition of token through target code generation provide a basis for communication interface between a user and a processor in significant amount of time. A new approach GLAP model for design and time complexity analysis of lexical analyzer is proposed in this paper. In the model different steps of tokenizer (generation of tokens) through lexemes, and better input system implementation have been introduced. Disk access and state machine driven Lex are also reflected in the model towards its complete utility. The model also introduces generation of parser. Implementation of symbol table and its interface using stack is another innovation of the model in acceptance with both theoretically and in implementation widely. The course is suitable for advanced undergraduate and beginning graduate students. Auxiliary tools, such as generators and interpreters, often hinder the learning: students have to fight tool idiosyncrasies, mysterious errors, and other poorly educative issues. We introduce a set of tools especially designed or improved for compiler construction educative projects in C.We also provide suggestions about new approaches to compiler Construction. We draw guidelines from our experience to make tools suitable for education purposes. The final result of this paper is to provide a general knowledge about compiler design and implementation and to serve as a springboard to more advanced courses.

Related Papers

Computer Languages

Panagiotis Georgiadis

compiler design research paper

prabhakar mishra

vrsiddhartha.ac.in

Yashwant Sooda

Technical CS

Lawrence Paulson

For the past three years, John Hennessy has assisted my study of programming languages. He suggested that I investigate semantics, and later noted that the compiler generator might be feasible. As the research progressed, John helped me to focus on the most important problems. He made extensive comments on numerous drafts of this thesis and other papers.

Jonathan Rodriguez

Nassima Noufail

Preface Vision Compiler construction brings together techniques from disparate parts of Computer Science. The compiler deals with many big-picture issues. At its simplest, a compiler is just a computer program that takes as input one potentially exe-cutable program and produces as output another, related, potentially executable program. As part of this translation, the compiler must perform syntax analysis to determine if the input program is valid. To map that input program onto the finite resources of a target computer, the compiler must manipulate several distinct name spaces, allocate several different kinds of resources, and synchronize the behavior of different run-time components. For the output program to have reasonable performance, it must manage hardware latencies in functional units, predict the flow of execution and the demand for memory, and reason about the independence and dependence of different machine-level operations in the program. Open up a compiler and you are likely to find greedy heuristic searches that explore large solution spaces, finite automata that recognize words in the input, fixed-point algorithms that help reason about program behavior, simple theorem provers and algebraic simplifiers that try to predict the values of expressions, pattern-matchers for both strings and trees that match abstract computations to machine-level operations, solvers for diophantine equations and Pressburger arithmetic used to analyze array subscripts, and techniques such as hash tables, graph algorithms, and sparse set implementations used in myriad applications, The lore of compiler construction includes both amazing success stories about the application of theory to practice and humbling stories about the limits of what we can do. On the success side, modern scanners are built by applying the theory of regular languages to automatic construction of recognizers. Lr parsers use the same techniques to perform the handle-recognition that drives a shift-reduce parser. Data-flow analysis (and its cousins) apply lattice theory to the analysis of programs in ways that are both useful and clever. Some of the problems that a compiler faces are truly hard; many clever approximations and heuristics have been developed to attack these problems. On the other side, we have discovered that some of the problems that compilers must solve are quite hard. For example, the back end of a compiler for a modern superscalar machine must approximate the solution to two or more iii

Kanchan Kamila

Provides Burdwan University Master of Science Computer Technology Syllabus

pradeep kumar

RELATED PAPERS

Ayush Agrawal

Jatinbra Pattanaik

Sagnik Kundu

International Journal of Scientific Research in Science, Engineering and Technology IJSRSET

nεamεl sayεd

Vikram Singh

SPACEMAN SAM

Microprocessors and Microsystems

Piyush Mehrotra

Sahil Hussain

Chetan Bohra

AMAN NARWAL

Larry Masinter

Hrituraj Chakraborty

SANJIB NAYAK on do

Rahul Pramod

Higher-order and Symbolic Computation / Lisp and Symbolic Computation

Craig Chambers

Vitor Santos

P Haneesha Reddy

Xavier Leroy

Abhi Bhardwaj

Ravi Jaiswal

Proceedings of the third ACM SIGPLAN conference on History of programming languages - HOPL III

Nikhil Singh

Patrick Lam

Rocky Bernstein

Gagan Agrawal

aravind kumar

Srikanth Durgam

IEEE Transactions on Software Engineering

Richard J LeBlanc

  •   We're Hiring!
  •   Help Center
  • Find new research papers in:
  • Health Sciences
  • Earth Sciences
  • Cognitive Science
  • Mathematics
  • Computer Science
  • Academia ©2024

COMMENTS

  1. 10332 PDFs

    Explore the latest full-text research PDFs, articles, conference papers, preprints and more on COMPILER DESIGN. Find methods information, sources, references or conduct a literature review on ...

  2. PDF Lexical and Syntax Analysis in Compiler Design

    Abstract — This Research paper gives brief information on how the source program gets evaluated in Lexical analysis phase of compiler and Syntax analysis phase of compiler. ... ―Life Cycle of Source Program - Compiler Design‖ - International Journal of Creative Research and Thoughts - Volume 5 - Issue 4 November 2017 - Paper ID ...

  3. PDF RISE Shine: Language-Oriented Compiler Design

    In this paper, we discuss the design of the Shine ... We demonstrate that our language-oriented compiler design results in a more robust and predictable compiler that is extensible at various abstraction levels. Our ... SSA [23] — developed in the late 1980s at IBM research [2, 27] — has by now been established as the standard form for IRs.

  4. Compiler Technologies in Deep Learning Co-Design: A Survey

    Author contributions: H.Z. contributed to the compiler ecosystem design and paper writing. M.X. conducted co-design research of deep learning compilers. Y.W. composed the thematic structure and outline of this paper. C.Z. conducted background research on compiler technologies. All authors critically reviewed and approved the final version of ...

  5. PDF MLGO: a Machine Learning Guided Compiler Optimizations Framework

    Leveraging machine-learning (ML) techniques for compiler optimizations has been widely studied and explored in academia. However, the adoption of ML in general-purpose, industry strength compilers has yet to happen. We propose MLGO1, a framework for integrating ML tech-niques systematically in an industrial compiler — LLVM.

  6. [2109.08267] CompilerGym: Robust, Performant Compiler Optimization

    Download a PDF of the paper titled CompilerGym: Robust, Performant Compiler Optimization Environments for AI Research, by Chris Cummins and 11 other authors. Download PDF Abstract: Interest in applying Artificial Intelligence (AI) techniques to compiler optimizations is increasing rapidly, but compiler research has a high entry barrier. Unlike ...

  7. A case study of a new code generation technique for compilers

    A CaseStudy ofa New Code. Figure 1 sketches a new design for compilers. Standard parsing techniques aresed to translate source code into anintermediate language (IL). Each IL statement consists of an operation name followed by a list ofoperands. The meaning ofthe IL statements produced by the parser isintended to be exactly that of the ...

  8. [PDF] Review on relationship between compiler design and computer

    Computer Science. 2015. TLDR. This paper focuses on listing the structure of a compiler and the underlying architecture, the mutual dependency between them and how the efficiency can be increased by several factors that are modified in the compiler level and also in the architectural level. Expand.

  9. compiler design Latest Research Papers

    Learning Compiler Design: From the Implementation to Theory. Proceedings of the 26th ACM Conference on Innovation and Technology in Computer Science Education V. 2 . 10.1145/3456565.3460041 . 2021 . Author (s): Rafael del Vado Vírseda. Keyword (s): Compiler Design.

  10. PDF Research paper on Compiler Design

    Research paper on Compiler Design Jatin Chhabra, Hiteshi Chopra, Abhimanyu Vats Student (B.Tech 7th sem), Department of Computer Science and Enginering Dronacharya Colege of Enginering, Gurgaon, India Abstract-equivalent algorithm expressed in a hardwareA compiler translates and/or compiles a program written in a suitable source language into ...

  11. Compiler Design: Theory, Tools, and Examples

    Compiler design is a subject which many believe to be fundamental and vital to computer science. It is a subject which has been studied intensively since the early 1950's and continues to be an important research field today. Compiler design is an important part of the undergraduate curriculum for many reasons:

  12. PDF Compiler Construction Detail Design

    This paper analyzes the detail design of the various phases of compiler. Keywords - Compiler, machine language, language translator 1.0 INTRODUCTION The concept of compliers was introduced by American Computer Scientist, Grace Brewster Murray Hopper in 1952, for A-0 programming language [1]. A compiler is a language translator that

  13. [PDF] Research paper on Compiler Design

    A new approach GLAP model for design and time complexity analysis of lexical analyzer is proposed and a set of tools especially designed or improved for compiler construction educative projects in C are introduced. A compiler translates and/or compiles a program written in a suitable source language into an equivalent target language through a number of stages.

  14. Compiler Design

    2023. TLDR. The data via various language-based papers are compared to identify the vulnerabilities and challenges one faces and a design approach for a non-English compiler that addresses these challenges and supports the efficient translation of source code into machine code is proposed. Expand.

  15. compiler optimization Latest Research Papers

    This paper firstly classifies the programs by two main factors: program characteristics and transformation methods. Then, it evaluates the effectiveness of automatic vectorization in three well-known compilers (GCC, LLVM, and ICC, including their multiple versions in recent 5 years) through TSVC (Test Suite for Vectorizing Compilers) benchmark.

  16. Compiler Design Research Papers

    Compiler construction is a widely used software engineering exercise, and hence this paper presents a compiler system for adaptive computing. The final result of this paper is to provide a general knowledge about compiler design and its implementation. In order to develop effective compi-lation

  17. (PDF) Research paper on Compiler Design

    Research paper on Compiler Design. Sufyan Anwar. A compiler translates and/or compiles a program written in a suitable source language into an equivalent target language through a number of stages. Starting with recognition of token through target code generation provide a basis for communication interface between a user and a processor in ...

  18. Learning Compiler Design as a Research Activity

    The new model, rooted in the now commonly accepted constructivist postulates, strives for meaningful acquisition of fundamental concepts through problem solving‐‐which closely parallels the construction of scientific knowledge throughout history. This article describes the application of a pedagogical model called "learning as a research activity" (D. Gil‐Perez and J. Carrascosa ...