diff --git a/manuscrit/60_staticdeps/99_conclusion.tex b/manuscrit/60_staticdeps/99_conclusion.tex new file mode 100644 index 0000000..e16c381 --- /dev/null +++ b/manuscrit/60_staticdeps/99_conclusion.tex @@ -0,0 +1,29 @@ +\section*{Conclusion} + +In this chapter, we studied data dependencies within assembly kernels; and more +specifically, data dependencies occurring through memory accesses, which we +call \emph{memory-carried dependencies}. \cesasme{}'s analysis showed in +\autoref{chap:CesASMe} that this kind of dependency was responsible for a +significant portion of state-of-the-art analyzers' prediction errors. + +We introduce \staticdeps{}, a heuristic approach based on random values as +representatives of abstract values. This approach is able to find data +dependencies, including memory-carried ones, loop-carried or not, leveraging +semantics of the assembly code provided by \valgrind{}'s \vex. It is, however, +still unable to find aliasing addresses whose source of aliasing is outside of +the studied block's scope ---~and, as such, suffers from the \emph{lack of +context} pointed out in the previous chapter. + +\medskip{} + +Our evaluation of \staticdeps{} against a dynamic analysis baseline, +\depsim{}, shows that it only finds about 60\,\% of the existing dependencies. +We however enrich \uica{} with \staticdeps{}, and find that it performs on the +full \cesasme{}'s dataset as well as \uica{} alone on the pruned dataset of +\cesasme{}, removing memory-carried bottlenecks. From this, we conclude that +\staticdeps{} is very successful at finding the data dependencies through +memory that actually matter from a performance analysis perspective. We also +find that, despite being written in pure Python, \staticdeps{} is at least +30$\times$ faster than its C dynamic counterpart, \depsim; as such, we expect +a compiled and optimized implementation of \staticdeps{} to be two to three +orders of magnitude faster than \depsim{}. diff --git a/manuscrit/60_staticdeps/main.tex b/manuscrit/60_staticdeps/main.tex index 85b371f..482bb33 100644 --- a/manuscrit/60_staticdeps/main.tex +++ b/manuscrit/60_staticdeps/main.tex @@ -7,3 +7,4 @@ dependencies}\label{chap:staticdeps} \input{30_static_principle.tex} \input{40_staticdeps.tex} \input{50_eval.tex} +\input{99_conclusion.tex}