phd-defense/slides/85_supplementary/misc.tex

73 lines
1.8 KiB
TeX

\section{Misc supplementary material}
\begin{frame}[fragile]{\cesasme{} and control flow}
\begin{center}
\textbf{Straight-line code:} hypothesis of code analysers, but
also\ldots{}
\end{center}
\begin{minipage}[c]{0.35\textwidth}
\begin{lstlisting}[language=C]
for(i) {
if(A[i] % 2 == 0)
A[i] *= 2;
A[i] += B[i];
}
\end{lstlisting}
\end{minipage}
\hfill
\begin{minipage}[c]{0.60\textwidth}
\begin{itemize}
\item If not taken: map
\item If taken: \alert{dependency} in \lstc{A[i]}!
\item Performance varies depending on branch
\item Performance \alert{strongly depends} on \alert{input data}
\end{itemize}
\end{minipage}
\end{frame}
\begin{frame}[fragile]{\staticdeps: lack of context}
\begin{minipage}[t]{0.48\textwidth}
\begin{block}{\alert{Context-dependent stride}}
\begin{lstlisting}[language=C]
for(int i=0; i < n-k; ++i)
A[i] += A[i+k];
\end{lstlisting}
\begin{center}
$\downarrow$
\end{center}
\begin{lstlisting}[language={[x86masm]Assembler}]
loop:
mov (%rax,%rdx,4),%ecx
add %ecx,(%rax)
add $0x4,%rax
cmp %rsi,%rax
jne loop
\end{lstlisting}
\begin{center}
\textbf{No dep found!}
\end{center}
\end{block}
\end{minipage}
\hfill\vrule\hfill
\begin{minipage}[t]{0.48\textwidth}
\begin{block}{\alert{Graphs algorithms}}
\vspace{0.7em}
\begin{itemize}
\item{} Graphs: commonly represented as \eg
\begin{lstlisting}[language=C]
struct Node {
// ...
vector<Node*> siblings;
};
\end{lstlisting}
\item{} Values of \lstc{siblings} will alias \alert{on
purpose}!
\item{} \ldots{}thus breaking \staticdeps{}.
\end{itemize}
\end{block}
\end{minipage}
\end{frame}