PolyOpt/HLS

Polyhedral-Based Data Reuse Optimization for FPGA




[<< home] [news] [description] [documentation] [download] [installation] [user guide] On development, version 0.1.0-pre available

News

Copyright notice This work is supported by the National Science Foundation Expeditions in Computing Award CCF-0926127. Nothing in this work should be construed as reflecting the official policy or position of the Defense Department, the United States government, the University of California Los Angeles, Rice University or the Ohio State University. This software is based on another software, PolyOpt/C, produced with support from the Defense Advanced Research Projects Agency (DARPA) through AFRL Contract FA8650-09-C-1915. Nothing in this work should be construed as reflecting the official policy or position of the Defense Department, the United States government, Rice University or Ohio State University.
THIS SOFTWARE HAS BEEN APPROVED FOR PUBLIC RELEASE, UNLIMITED DISTRIBUTION.

Description

PolyOpt/HLS is a polyhedral loop optimization framework dedicated to data reuse optimization for High-Level Synthesis, integrated in the ROSE compiler. The main features are:

Note, only a subset of C/C++ is currently supported by PolyOpt/HLS.

Documentation


Download

PolyOpt/HLS is currently under active testing before its public release. In the meantime, we warmly welcome any request to obtain the source code. Please email Louis-Noel Pouchet


Installation

The installation of PolyOpt/HLS is packaged in an installer script install.sh. It assumes ROSE is built, and will download and install a local copy of PoCC.

$> tar xzf polyopt-hls-0.1.0-pre.tar.gz
$> cd polyopt-hls-0.1.0-pre
$> export ROSE_ROOT=/path/to/rose/install
$> export BOOST_ROOT=/path/to/boost/install
$> ./install.sh
$> export PATH=$PATH:`pwd`/src

For a test run of the compiler:

$> PolyOpt dgemm.c

For a full run of the compiler in HLS mode:

$> PolyRose --polyopt-HLS-enable --polyopt-HLS-lmp --polyopt-HLS-autopilot --polyopt-HLS-autopilot-fifo --polyopt-safe-math-func --polyopt-pluto-tile --polyopt-HLS-max-buff-size-per-array=50000 --polyopt-pluto-prevector --polyopt-pluto-fuse-maxfuse dgemm_ap.c

To inspect the available options:

$> PolyOpt --polyopt-help


Manual