Lattice-Traversing Design Space Exploration Framework
A High Level Synthesis (HLS) Design Space Exploration (DSE) framework, developed by me under the supervision of Prof. Laura Pozzi and Dr. Giovanni Ansaloni form Università della Svizzera italiana (USI). The framework implements a local search exploration strategy able to smartly navigate the design space by reshaping it into a unitary lattice rapresentation.
The lattice-traversing exploration, starting from an initial set of Pareto-solutions, obtained after an initial sampling phase, navigates the n-dimensional lattice and is able to effectively visit the design space by favouring changes among directives with a lower variance with respect to directives with a higher one. By locally exploring only Pareto-neighbours the algorithm is able to rapidly approximate the real Pareto-frontier minimising the number of synthesis.
The proposed framework is independent both from the HLS tools and to the directives chosen for the exploration.
For more details about the Lattice-Traversing Design Space Exploration methodology you can refer to:
2018 | Lattice-Traversing Design Space Exploration for High Level Synthesis |
L. Ferretti, G. Ansaloni, and L. Pozzi. Lattice-Traversing Design Space Exploration for High Level Synthesis. IEEE International Conference on Computer Design, 2018. |
How to run the framework
To run the framework you have to download the functions implementing the Lattice-Traversing DSE methodology included in the LatticeTravesingDSE_Python.zip file, and a dataset like the ones in the LatticeTraversingDSE_Datasets.zip file.
In order to test the Lattice-Traversing DSE methodology, we have used 5 different benchmarks.
We have selected 5 different functions from the CHStone benchmark suite. For each of these functions we have chosen a subset of directives to explore with an HLS tool and we have performed an exhaustive exploration over the defined design space.
The datasets have been generated synthesizing the functions with Vivado HLS.
Then, we have used the results of the exhaustive exploration and the configurations used to generate the different hardware implementations to test our framework.
The functions selected are:
The results of the exhaustive explorations are stored in files named The framework has been entirely developed in Python 2.7 and, in order to use it, run the code in lattice_exploration_offline.py requires the following modules: Lorenzo Ferretti, Ph.D., currently PostDoc at Università della Svizzera italiana (USI). Datasets
<benchmark_name>.db
.
Python code
Author
You can find more information about my work here and for any question you can contact me at [email protected].