From 388449c2df40a38e17947aceda45a87f6f97242b Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Tue, 13 Apr 2021 14:08:30 +0100 Subject: Fix bars --- evaluation.tex | 251 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 126 insertions(+), 125 deletions(-) diff --git a/evaluation.tex b/evaluation.tex index 3f611cd..90ab4c7 100644 --- a/evaluation.tex +++ b/evaluation.tex @@ -41,7 +41,6 @@ We configured Polybench's parameters so that only integer types are used, since ybar=0pt, %ymode=log, %JW: normalised data ==> log scale %log ticks with fixed point, - %ytick = {0.25, 0.5, 1, 2}, width=1\textwidth, height=0.4\textwidth, /pgf/bar width=3pt, @@ -88,6 +87,7 @@ We configured Polybench's parameters so that only integer types are used, since }, ymode=log, ybar=0pt, + ytick={0.5,1,2,4,8}, width=1\textwidth, height=0.4\textwidth, /pgf/bar width=3pt, @@ -100,7 +100,7 @@ We configured Polybench's parameters so that only integer types are used, since xtick=data, enlarge x limits={abs=0.5}, ylabel style={font=\footnotesize}, - ymin=0.5, + ymin=0.3, ] \nextgroupplot[ylabel={\legup{} / \vericert{} execution time ratio}] @@ -120,6 +120,7 @@ We configured Polybench's parameters so that only integer types are used, since \end{tikzpicture} \caption{Polybench with division replaced by iterative division algorithm.} \end{figure} + % %\pgfplotstableread[col sep=comma]{results/exec-time.csv}{\nodivtimingtable} %\begin{figure}\centering @@ -186,76 +187,76 @@ We configured Polybench's parameters so that only integer types are used, since % \end{tikzpicture} %\end{figure} -\begin{figure}\centering -\begin{subfigure}[t]{0.48\textwidth} -\definecolor{cyclecountcol}{HTML}{1b9e77} -\begin{tikzpicture} -\begin{axis}[ - xmode=log, - ymode=log, - height=1\textwidth, - width=1\textwidth, - xlabel={\legup{} cycle count}, - ylabel={\vericert{} cycle count}, - xmin=1000, - xmax=10000000, - ymax=10000000, - ymin=1000, - %log ticks with fixed point, - ] - -\addplot[draw=none, mark=*, draw opacity=0, fill opacity=0.6,cyclecountcol] - table [x=legupcycles, y=vericertcycles, col sep=comma] - {results/poly.csv}; - -\addplot[dotted, domain=1000:10000000]{x}; -%\addplot[dashed, domain=10:10000]{9.02*x}; - -\end{axis} -\end{tikzpicture} -\caption{A comparison of the cycle count of hardware designs generated by \vericert{} and by \legup{}.} -\label{fig:comparison_cycles} -\end{subfigure}\hfill% -\begin{subfigure}[t]{0.48\textwidth} -\definecolor{polycol}{HTML}{e6ab02} -\definecolor{polywocol}{HTML}{7570b3} -\begin{tikzpicture} -\begin{axis}[ - xmode=log, - ymode=log, - height=1\textwidth, - width=1\textwidth, - xlabel={\legup{} execution time (ms)}, - ylabel={\vericert{} execution time (ms)}, - xmin=10, - xmax=1000000, - ymax=1000000, - ymin=10, - legend pos=south east, - %log ticks with fixed point, - ] - -\addplot[draw=none, mark=*, draw opacity=0, fill opacity=0.8, polycol] - table [x expr={\thisrow{legupcycles}/\thisrow{legupfreqMHz}}, y expr={\thisrow{vericertcycles}/\thisrow{vericertoldfreqMHz}}, col sep=comma] - {results/poly.csv}; - -\addlegendentry{PolyBench} - -\addplot[draw=none, mark=o, fill opacity=0, polywocol] - table [x expr={\thisrow{legupcycles}/\thisrow{legupfreqMHz}}, y expr={\thisrow{vericertcycles}/\thisrow{vericertfreqMHz}}, col sep=comma] - {results/poly.csv}; - -\addlegendentry{PolyBench w/o division} - -\addplot[dotted, domain=10:1000000]{x}; -%\addplot[dashed, domain=10:10000]{9.02*x + 442}; - -\end{axis} -\end{tikzpicture} -\caption{A comparison of the execution time of hardware designs generated by \vericert{} and by \legup{}.} -\label{fig:comparison_time} -\end{subfigure} -\end{figure} +%\begin{figure}\centering +%\begin{subfigure}[t]{0.48\textwidth} +%\definecolor{cyclecountcol}{HTML}{1b9e77} +%\begin{tikzpicture} +%\begin{axis}[ +% xmode=log, +% ymode=log, +% height=1\textwidth, +% width=1\textwidth, +% xlabel={\legup{} cycle count}, +% ylabel={\vericert{} cycle count}, +% xmin=1000, +% xmax=10000000, +% ymax=10000000, +% ymin=1000, +% %log ticks with fixed point, +% ] +% +%\addplot[draw=none, mark=*, draw opacity=0, fill opacity=0.6,cyclecountcol] +% table [x=legupcycles, y=vericertcycles, col sep=comma] +% {results/poly.csv}; +% +%\addplot[dotted, domain=1000:10000000]{x}; +%%\addplot[dashed, domain=10:10000]{9.02*x}; +% +%\end{axis} +%\end{tikzpicture} +%\caption{A comparison of the cycle count of hardware designs generated by \vericert{} and by \legup{}.} +%\label{fig:comparison_cycles} +%\end{subfigure}\hfill% +%\begin{subfigure}[t]{0.48\textwidth} +%\definecolor{polycol}{HTML}{e6ab02} +%\definecolor{polywocol}{HTML}{7570b3} +%\begin{tikzpicture} +%\begin{axis}[ +% xmode=log, +% ymode=log, +% height=1\textwidth, +% width=1\textwidth, +% xlabel={\legup{} execution time (ms)}, +% ylabel={\vericert{} execution time (ms)}, +% xmin=10, +% xmax=1000000, +% ymax=1000000, +% ymin=10, +% legend pos=south east, +% %log ticks with fixed point, +% ] +% +%\addplot[draw=none, mark=*, draw opacity=0, fill opacity=0.8, polycol] +% table [x expr={\thisrow{legupcycles}/\thisrow{legupfreqMHz}}, y expr={\thisrow{vericertcycles}/\thisrow{vericertoldfreqMHz}}, col sep=comma] +% {results/poly.csv}; +% +%\addlegendentry{PolyBench} +% +%\addplot[draw=none, mark=o, fill opacity=0, polywocol] +% table [x expr={\thisrow{legupcycles}/\thisrow{legupfreqMHz}}, y expr={\thisrow{vericertcycles}/\thisrow{vericertfreqMHz}}, col sep=comma] +% {results/poly.csv}; +% +%\addlegendentry{PolyBench w/o division} +% +%\addplot[dotted, domain=10:1000000]{x}; +%%\addplot[dashed, domain=10:10000]{9.02*x + 442}; +% +%\end{axis} +%\end{tikzpicture} +%\caption{A comparison of the execution time of hardware designs generated by \vericert{} and by \legup{}.} +%\label{fig:comparison_time} +%\end{subfigure} +%\end{figure} %Firstly, before comparing any performance metrics, it is worth highlighting that any Verilog produced by \vericert{} is guaranteed to be \emph{correct}, whilst no such guarantee can be provided by \legup{}. %This guarantee in itself provides a significant leap in terms of HLS reliability, compared to any other HLS tools available. @@ -275,59 +276,59 @@ Cycle count is one factor in calculating execution times; the other is the clock \subsection{RQ2: How area-efficient is \vericert{}-generated hardware?} -\begin{figure} -\begin{subfigure}[t]{0.48\textwidth} -\definecolor{resourceutilcol}{HTML}{e7298a} -\begin{tikzpicture} -\begin{axis}[ - height=1\textwidth, - width=1\textwidth, - xlabel={\legup{} resource utilisation (\%)}, - ylabel={\vericert{} resource utilisation (\%)}, - xmin=0, ymin=0, - xmax=1, ymax=30, - ] - -\addplot[draw=none, mark=*, draw opacity=0, fill opacity=0.6,resourceutilcol] - table [x expr=(\thisrow{legupluts}/427200*100), y expr=(\thisrow{vericertluts}/427200*100), col sep=comma] - {results/poly.csv}; - -% \addplot[dashed, domain=0:1]{x}; - -\end{axis} -\end{tikzpicture} -\caption{A comparison of the resource utilisation of designs generated by \vericert{} and by \legup{}.} -\label{fig:comparison_area} -\end{subfigure}\hfill% -\begin{subfigure}[t]{0.48\textwidth} -\definecolor{compiltimecol}{HTML}{66a61e} -\begin{tikzpicture} -\begin{axis}[ - height=1\textwidth, - width=1\textwidth, - xlabel={\legup{} compilation time (s)}, - ylabel={\vericert{} compilation time (s)}, - yticklabel style={ - /pgf/number format/fixed, - /pgf/number format/precision=2}, - xmin=4.6, - xmax=5.1, - ymin=0.06, - ymax=0.20, - ] - -\addplot[draw=none, mark=*, draw opacity=0, fill opacity=0.6,compiltimecol] - table [x=legupcomptime, y=vericertcomptime, col sep=comma] - {results/poly.csv}; - - %\addplot[dashed, domain=4.5:5.1]{0.1273*x-0.5048}; - -\end{axis} -\end{tikzpicture} -\caption{A comparison of compilation time for \vericert{} and for \legup{}} -\label{fig:comparison_comptime} -\end{subfigure} -\end{figure} +%\begin{figure} +%\begin{subfigure}[t]{0.48\textwidth} +%\definecolor{resourceutilcol}{HTML}{e7298a} +%\begin{tikzpicture} +%\begin{axis}[ +% height=1\textwidth, +% width=1\textwidth, +% xlabel={\legup{} resource utilisation (\%)}, +% ylabel={\vericert{} resource utilisation (\%)}, +% xmin=0, ymin=0, +% xmax=1, ymax=30, +% ] +% +%\addplot[draw=none, mark=*, draw opacity=0, fill opacity=0.6,resourceutilcol] +% table [x expr=(\thisrow{legupluts}/427200*100), y expr=(\thisrow{vericertluts}/427200*100), col sep=comma] +% {results/poly.csv}; +% +%% \addplot[dashed, domain=0:1]{x}; +% +%\end{axis} +%\end{tikzpicture} +%\caption{A comparison of the resource utilisation of designs generated by \vericert{} and by \legup{}.} +%\label{fig:comparison_area} +%\end{subfigure}\hfill% +%\begin{subfigure}[t]{0.48\textwidth} +%\definecolor{compiltimecol}{HTML}{66a61e} +%\begin{tikzpicture} +%\begin{axis}[ +% height=1\textwidth, +% width=1\textwidth, +% xlabel={\legup{} compilation time (s)}, +% ylabel={\vericert{} compilation time (s)}, +% yticklabel style={ +% /pgf/number format/fixed, +% /pgf/number format/precision=2}, +% xmin=4.6, +% xmax=5.1, +% ymin=0.06, +% ymax=0.20, +% ] +% +%\addplot[draw=none, mark=*, draw opacity=0, fill opacity=0.6,compiltimecol] +% table [x=legupcomptime, y=vericertcomptime, col sep=comma] +% {results/poly.csv}; +% +% %\addplot[dashed, domain=4.5:5.1]{0.1273*x-0.5048}; +% +%\end{axis} +%\end{tikzpicture} +%\caption{A comparison of compilation time for \vericert{} and for \legup{}} +%\label{fig:comparison_comptime} +%\end{subfigure} +%\end{figure} Figure~\ref{fig:comparison_area} compares the resource utilisation of the Polybench programs generated by \vericert{} and \legup{}. On average, we see that \vericert{} produces hardware that is about $21\times$ larger than \legup{}. \vericert{} designs are filling up to 30\% of a (large) FPGA chip, while \legup{} uses no more than 1\% of the chip. -- cgit