All Projects → cornell-zhang → Datuner

cornell-zhang / Datuner

Licence: bsd-3-clause
DATuner Repository

Labels

Projects that are alternatives of or similar to Datuner

Llvm
Library for interacting with LLVM IR in pure Go.
Stars: ✭ 670 (+8275%)
Mutual labels:  llvm
Grin
GRIN is a compiler back-end for lazy and strict functional languages with whole program optimization support.
Stars: ✭ 834 (+10325%)
Mutual labels:  llvm
Ldc
The LLVM-based D Compiler.
Stars: ✭ 937 (+11612.5%)
Mutual labels:  llvm
Inkwell
It's a New Kind of Wrapper for Exposing LLVM (Safely)
Stars: ✭ 732 (+9050%)
Mutual labels:  llvm
Swift Llvm
Stars: ✭ 802 (+9925%)
Mutual labels:  llvm
Jucipp
A lightweight & cross-platform IDE supporting the most recent C++ standards. This project has moved to https://gitlab.com/cppit/jucipp.
Stars: ✭ 887 (+10987.5%)
Mutual labels:  llvm
Gocaml
🐫 Practical statically typed functional programming language implementation with Go and LLVM
Stars: ✭ 653 (+8062.5%)
Mutual labels:  llvm
Cfl
a Compileable statically typed Functional programming Language
Stars: ✭ 7 (-12.5%)
Mutual labels:  llvm
Mbx
Supplementary material for my talk
Stars: ✭ 6 (-25%)
Mutual labels:  llvm
Llvm Tutor
A collection of out-of-tree LLVM passes for teaching and learning
Stars: ✭ 941 (+11662.5%)
Mutual labels:  llvm
Accelerate
Embedded language for high-performance array computations
Stars: ✭ 751 (+9287.5%)
Mutual labels:  llvm
Qbdi
A Dynamic Binary Instrumentation framework based on LLVM.
Stars: ✭ 801 (+9912.5%)
Mutual labels:  llvm
Avrd
Embedded Systems in D - Port of avr-libc headers and most avr-gcc processor defines
Stars: ✭ 17 (+112.5%)
Mutual labels:  llvm
Rust Python Example
Example of using Rust to Extend Python
Stars: ✭ 699 (+8637.5%)
Mutual labels:  llvm
Pragmascript
Stars: ✭ 7 (-12.5%)
Mutual labels:  llvm
Coriander
Build NVIDIA® CUDA™ code for OpenCL™ 1.2 devices
Stars: ✭ 665 (+8212.5%)
Mutual labels:  llvm
Swift Llbuild
A low-level build system, used by Xcode and the Swift Package Manager
Stars: ✭ 836 (+10350%)
Mutual labels:  llvm
Llhttp
Port of http_parser to llparse
Stars: ✭ 841 (+10412.5%)
Mutual labels:  llvm
Woboq codebrowser
Woboq CodeBrowser
Stars: ✭ 837 (+10362.5%)
Mutual labels:  llvm
Vivado hls tutorial
Source code of basic Xilinx Vivado HLS image processing tutorial using HLS openCV functions
Stars: ✭ 17 (+112.5%)
Mutual labels:  llvm

CircleCI

DATuner User Guide

Publication

If you use DATuner in your research, please cite our FPGA'17 paper:

@article{xu-datuner-fpga2017,
  title   = "{A Parallel Bandit-Based Approach for Autotuning FPGA Compilation}",
  author  = {Chang Xu and Gai Liu and Ritchie Zhao and Stephen Yang and Guojie Luo and Zhiru Zhang}
  journal = {Int'l Symp. on Field-Programmable Gate Arrays (FPGA)},
  month   = {Feb},
  year    = {2017},
} 

Supported Platfroms and EDA Tools

DATuner has been tested on CentOS and Ubuntu; and it supports VTR, Vivado, Quartus, and custom flows. Please make sure the tool is on your PATH.

Installation

To build DATuner (including python, dispy, and opentuner):

$ git clone [email protected]:cornell-zhang/datuner.git
$ cd datuner
$ make -j4

Environment Setup

Please add the following to your BASH. And please make sure the tool you are tuning (e.g. Quartus, Vivado) is on your PATH.

unalias python 2>/dev/null
export DATUNER_HOME=*path_to_the_directory_where_datuner_is_installed*/datuner
export PATH=$DATUNER_HOME/src:$PATH
export PATH=$DATUNER_HOME/releases/Linux_x86_64/install/bin:$PATH
export LD_LIBRARY_PATH=$DATUNER_HOME/releases/Linux_x86_64/install/lib:$LD_LIBRARY_PATH

Running DATuner

  1. Copy the corresponding Python template from $DATUNER_HOME/cfg to the directory where DATuner will be called (DATuner can be called from any directory). The template includes design and environment variables such as the parameters to be tuned (i.e. the search space), design path, list of worker machines, and the workspace path (i.e. the directory where the worker machines operate on). For Quartus and Vivado, the configuration file also includes top module and target device. The provided Quartus and Vivado flags should not be renamed. For VTR, tool path should be specified in the configuration file. Please refer to the Applications section below for more details.

  2. Run DATuner with the following command:

    $ datuner.py -f [vtr|vivado|quartus|custom] -b [budget] -t [timeout] -p [parallelization_factor]

    Here, f stands for flow, b for maximum number of executions, t for stop time, and p for the process number. Timeout should be a string with the following format: [#]d:[#]h:[#]m:[#]s. The ordering of the time units can be changed, and any time unit can be omitted if it has zero value. Example usage:

    $ datuner.py -f quartus -b 100 -t 1d:1h:20m:10s -p 2

    If the arguments b, t, or p are omitted from the command, their default values will be assumed (i.e. 1 for b, 0.0d:0.0h:0.0m:7200.0s for t, and 1 for p).

Results

The results database results.db is created under the directory where DATuner has been called. The table inside this database includes the parameters and the quality of results (QoR) obtained. The optimal parameter configurations and QoR are written to global_result.txt under the directory where DATuner has been called.

Applications

  • Tuning VTR

    The default VTR FPGA architecture is "k6_frac_N10_mem32K_40nm.xml". If users want to use another architecture, tune.py (under $DATUNER_HOME/flows/vtr) can be modified accordingly.

  • Tuning Vivado

    Inside the design folder, please provide both Verilog file (.v) and the timing constraint (.xdc).

  • Tuning Quartus

    Inside the design folder, please provide both Verilog file (.v) and the timing constraint (.sdc).

  • Tuning other programs (i.e. custom flow)

License

DATuner is offered under the terms of the Open Source Initiative BSD 3-Clause License. More information about this license can be found here:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].