Giter Club home page Giter Club logo

yatuner's Introduction

English | 简体中文 | 🗃️项目开发报告

yaTuner

yaTuner: yet another auto tuner for compilers.

Getting Started

A virtual environment can be created using make init and examples are placed at directory examples.

To tune a program, use yatuner -g <filename> to generate a basic template for the program. Then modify the the script for further use. More information about the tuning script is contained in the template.

Also, yatuner.utils includes tools that might be necessary for use, here is a brief summary:

Tool Functionality
yatuner.utils.execute Execute command
yatuner.utils.fetch_perf_stat Get the result of perf stat of certain command
yatuner.utils.fetch_arch fetch the architecture of the machine
yatuner.utils.fetch_gcc_version fetch the gcc version
yatuner.utils.fetch_gcc_optimizers fetch the gcc optimizers
yatuner.utils.fetch_gcc_parameters fetch the gcc parameters
yatuner.utils.fetch_gcc_enabled_optimizers fetch the gcc enabled optimizers of given options
yatuner.utils.fetch_size fetch a file size

These tools can be used in the tuning script, see examples for details.

The tuning process and relative methods and their functionalities are listed as below.

Method Functionality
yatuner.Tuner.initialize Initialize workspace
yatuner.Tuner.test_run Doing an initial test run
yatuner.Tuner.hypotest_optimizers Hypothesis test for optimizers
yatuner.Tuner.hypotest_parameters Hypothesis test for parameters
yatuner.Tuner.optimize Tune parameters with Bayesian Optimization
yatuner.Tuner.optimize_linUCB Tune parameters with LinUCB
yatuner.Tuner.run Run final test and generate result
yatuner.Tuner.plot_data Plot result in violin graph

Detailed documentation of yatuner.Tuner and yatuner.utils can be found in docs.

Module Documentation
yatuner.Tuner docs/yatuner.tuner.md
yatuner.utils docs/yatuner.utils.md

Usage

  1. Install yaTuner.
  2. Auto-generate tuning script with yatuner -g <filename>.
  3. Manually modify tuning script and add details.
  4. Run tuning script with python <filename>.

Architecture

graph TB
subgraph User Interface
    O([yaTuner]) --> A
    A[(Auto-generated Tuning Script)] -- manually add details --> B[(Final Tuning Script)]
end
B == run ==> C
subgraph Tuning Process
    C(Auto-fetching compiler options) --> D(Hypothesis Test for Optimizers) 
    D --> E(Tuning Optimizers)
    E --> F(Hypothesis Test for Parameters)
    F --> G(Tuning Parameters)
    G -- run test and compare --> I[(Tuning Report)]
end
G -- store --> H[(Tuned Options)]
E -- store --> H
subgraph Tuner
    J([LinUCB Optimizer]) -.-> G
    K([Bayesian Optimizer]) -.-> G
    K -.-> E
end
subgraph Pre-defined Functions
    B == defines ==> L([comp])
    B == defines ==> M([run])
    B == defines ==> N([perf])
end
N -.-> J
L & M -.-> J & K

License

yaTuner is licensed under Mulan PSL v2. See LICENSE for more details.

About

This is a project for the OS competition 2022, proj105 problem, see this for further information.

yatuner's People

Contributors

junimay avatar synodicmonth avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.