GithubHelp home page GithubHelp logo

axbench's Introduction

AxBench

AxBench is a benchmark suite combined with the necessary annotations and compilation workflow for approximate computing. We develop AxBench in C++, aiming to provide a set of representative applications from various domains to explore different aspect of the approximate computing. AxBench is developed in Alternative Computing Technologies (ACT) Laboratory, Georgia Institute of Technology.

This is an updated version to the original on Bitbucket that adds support for Python 3.6+ alongside other UI/UX and general code improvements.

Papers

We actively work on AxBench to add more applications from different domains (e.g. Computer Vision, Data Analytics, Multimedia, Web Search, Finance, etc.). We will also be working on adding different features to this benchmark suite in order to enable researchers to study different aspects of approximate computing. As a courtesy to the developers, we ask that you please cite our papers from MICRO'12 describing the suite:

  1. H. Esmaeilzadeh, A. Sampson, L. Ceze, D. Burger, "Neural acceleration for general-purpose approximate programs", MICRO 2012.

Dependencies

AxBench was developed on Ubuntu Linux (this release was tested with Ubuntu version 12.04). In principal, AxBench should work with any Linux distribution as long as the following software dependencies are satisfied.

  1. Boost Libraries [version 1.49 or higher]
  2. Python [version 3.6 or higher] and dependencies listed in requirements.txt
  3. G++ [4.6 or higher]
  4. Fast Artificial Neural Network Library (FANN) [version 2.2.0 or higher]

Applications

  1. Black-Scholes [Financial Analysis]: This application calculates the price of European options. We adapted this benchmark from Parsec benchmark suite to use for approximate computing purpose.

  2. FFT [Signal Processing]: This application calculates the radix-2 Cooley-Turkey Fast Fourier for a set of random floating point numbers.

  3. Inversek2j [Robotics]: This applications find the coordinate of a 2-joint arm given their angle.

  4. Jmeint [3D Gaming]: This application detects the intersection of two 3D triangles.

  5. JPEG encoder [Compression]: This application compress an image.

  6. K-means [Machine Learning]: This application performs K-means clustering on a set of random (r, g, b) values.

  7. Sobel [Image Processing]: Sobel filter detects the edges of a color image.

Build and Run AxBench

  1. After downloading AxBench, please go to the parrot.c/src directory and run (1) ./cleanlib.sh, and (2) ./buildlib.sh. It will create a static library which will be later used to execute the Parrot transformation on the applications.

  2. Run ./make_all.sh inside the fann.template directory.

  3. Install the required Python dependencies using pip install -r requirements.txt

Compilation Parameters

There are some parameters that need to be specified by the user during the compilation. Here you can see a brief explanation about each of these parameters.

  1. Learning rate: Rate of learning for RPROP algorithm.

  2. Epoch number: Number of epochs for training.

  3. Sampling Rate: The percentage of data which is used for training and testing.

  4. Test data fraction: The percentage of sampled data which is used for testing the obtained neural network.

  5. Maximum number of layers: The maximum number of layers in the neural network.

  6. Maximum number of neurons per layer: The maximum number of neurons per each hidden layer.

Parrot Annotations

All the applications come with the necessary annotations for neural network transformation. We use pragma keyword to mark the region of the code which needs to be transformed to neural network representation.

Adding new benchmarks

You can easily add new benchmarks to AxBench. These are the necessary steps that need to be followed.

  1. Run ./run.py setup <application name>.

  2. Put the source files into the src directory and annotate the region of interest with the Parrot semantics.

  3. Put the train and test datasets into their corresponding folders (train.data and test.data).

  4. Create Makefile, Makefile_nn, run_observation.sh, and run_NN.sh. You may get help on how to create these files from other application directories.

  5. Run ./run.py make <application name> to build the application.

  6. Run ./run.py run <application name> to apply Parrot transformation and replace the region of interest with a neural network.

Software License

The license is a free non-exclusive, non-transferable license to reproduce, use, modify and display the source code version of the Software, with or without modifications solely for non-commercial research, educational or evaluation purposes. The license does not entitle Licensee to technical support, telephone assistance, enhancements or updates to the Software. All rights, title to and ownership interest in Software, including all intellectual property rights therein shall remain in Georgia Institute of Technology.

Questions

Please forward your questions to: [email protected]

Maintained by

Margret Riegert (https://github.com/nobodywasishere)
Amir Yazdanbakhsh (http://www.cc.gatech.edu/~ayazdanb/)
Bradley Thwaites (http://users.ece.gatech.edu/~bthwaites3/)

axbench's People

Contributors

bthwaites3 avatar nobodywasishere avatar

Stargazers

 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.