73 lines
1.8 KiB
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}
|