\section{\cesasme: evaluate and compare state-of-the-art code analyzers} \begin{frame}[fragile] \begin{minipage}{0.6\textwidth} \begin{center} Matrix multiplication: \end{center} \begin{lstlisting}[language={[x86masm]Assembler}] loop: movsd (%rcx, %rax), %xmm0 mulsd %xmm1, %xmm0 addsd (%rdx, %rax), %xmm0 movsd %xmm0, (%rdx, %rax) addq $8, %rax cmpq $0x2260, %rax jne loop\end{lstlisting} \end{minipage}\hfill\vrule\hfill \begin{minipage}{0.38\textwidth} \begin{tabular}{l r} \llvmmca{}: & 1.5 cycles \\ \iaca{}: & 2.0 cycles \\ \ithemal{}: & 2.0 cycles \\ \uica{}: & 3.0 cycles \\ \end{tabular} \end{minipage} \vfill{} \begin{center} \textbf{Which prediction is correct?} \quad \alert{\textbf{We lack a sound baseline!}} \end{center} \end{frame} \begin{frame}{Lifting predictions} \begin{itemize} \item Instrument full kernel $\kerK$: for each basic block, $\operatorname{occur}(\text{bb})$ \item For each tool \begin{itemize} \item for each bb, $\operatorname{prediction}(\text{bb})$ \item \emph{lift} predictions: \[ \operatorname{prediction}(\kerK) = \sum_{\text{bb} \in \kerK} \operatorname{occur}(\text{bb}) \times \operatorname{prediction}(\text{bb}) \] \end{itemize} \item Measure total kernel time \end{itemize} \pause \begin{center} \textbf{Now we have a baseline.}\\ \textit{\color[HTML]{6e7581}(And \llvmmca{} was correct.)} \end{center} \end{frame} \begin{frame}{Generating benchmarks} We need benchmarks\ldots \\ \vspace{1em} {\def\arraystretch{1.2} \newcommand{\litem}{\usebeamertemplate*{itemize item}\hspace{-0.5em}} \begin{tabular}{rl l} \litem{} & representative of scientific computation & \visible<2->{\alert{Polybench}}\\ \litem{} & infinite, L1-resident loops & \visible<3->{\alert{``microkernelification''} + verify} \\ \litem{} & stressing diverse resources & \visible<4->{\alert{Polyhedral transformations}} \\ & & \visible<4->{+ \alert{unrolling} + \alert{compiler options}} \\ \litem{} & plenty of them & \visible<5->{\alert{Even more} of all those $\nnearrow$} \\ \end{tabular} \let\litem\undefined } \begin{center} \visible<6->{\textbf{\leadsto{} yields \alert{~3500} benchmarks}} \end{center} \end{frame} \begin{frame} \vspace{0.5cm} \begin{columns} \column{\dimexpr\paperwidth-8pt} \centering \input{overview.tex} \end{columns} \end{frame}