Start slides on CesASMe

This commit is contained in:
Théophile Bastian 2024-11-25 12:23:18 +01:00
parent 835867c970
commit 551a09731f
4 changed files with 179 additions and 1 deletions

View file

@ -1 +1,94 @@
\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}

View file

@ -0,0 +1,79 @@
\definecolor{col_bench_gen}{HTML}{5a7eff}
\definecolor{col_bench_gen_bg}{HTML}{dbeeff}
\definecolor{col_bench_harness}{HTML}{ffa673}
\definecolor{col_results}{HTML}{000000}
\centering
\begin{tikzpicture}[
hiddennode/.style={rectangle,draw=normal text.bg, very thick, minimum size=5mm, align=center, font=\footnotesize},
normnode/.style={rectangle,draw=black, very thick, minimum size=5mm, align=center, font=\footnotesize},
resultnode/.style={rectangle,draw=col_results, fill=black!2, very thick, minimum size=5mm, align=center, font=\footnotesize},
bluenode/.style={rectangle, draw=col_bench_gen, fill=col_bench_gen_bg, very thick, minimum height=5mm, minimum width=4cm, align=center, font=\footnotesize},
rednode/.style={rectangle, draw=col_bench_harness, fill=orange!5, very thick, minimum size=5mm, align=center, font=\footnotesize},
bencher/.style={rednode, minimum width=2.5cm, minimum height=5mm},
genarrow/.style={draw=col_bench_gen},
harnarrow/.style={draw=col_bench_harness},
]
\centering
%Nodes
\node[bluenode] (bench) {Benchmark suite \figref{ssec:bench_suite}};
\node[bluenode] (pocc) [below=of bench] {Loop nest optimizers \figref{ssec:loop_nest_optimizer}};
\node[bluenode] (kernel) [below=of pocc] {Constraining utility \figref{ssec:kernelify}};
\node[bluenode] (gcc) [below=of kernel] {Compilations \figref{ssec:compile}};
\node[rednode] (gdb) [right=0.1\textwidth of gcc] {Basic block \\extraction \figref{ssec:bb_extr}};
\node[bencher] (ithemal) [right=4cm of gdb] {Ithemal};
\node[bencher] (iaca) [above=0.5em of ithemal] {IACA};
\node[bencher] (uica) [above=0.5em of iaca] {uiCA};
\node[bencher] (llvm) [above=0.5em of uica] {llvm-mca};
\node[bencher] (bhive) [above=0.5em of llvm] {BHive (measure)};
\node[rednode] (ppapi) [left=1cm of bhive] {perf (measure)};
\node[rednode] (gus) [below=0.5em of ppapi] {Gus};
%% \node[rednode] (uica) [below=of gdb] {uiCA};
\node[rednode] (lifting) [below right=1em and 0.2cm of gdb] {
Prediction lifting};
\node[
draw=black,
very thick,
dotted,
fit=(ppapi) (gus) (bhive) (llvm) (uica) (iaca) (ithemal)
] (comps) {};
\node (throughput_label) [above=0.2em of comps,align=center] {
\footnotesize Throughput predictions \\\footnotesize \& measures
\figref{ssec:throughput_pred_meas}};
\node[draw=black,
very thick,
dotted,
%% label={below:\footnotesize Variations},
label={[above,xshift=1cm]\footnotesize Variations},
fit=(pocc) (kernel) (gcc)
] (vars) {};
\node[resultnode] (bench2) [right=of lifting] {Evaluation metrics \\ for
code analyzers};
% Key
\node[] (keyblue1) [below left=0.7cm and 0cm of vars] {};
\node[hiddennode] (keyblue2) [right=0.5cm of keyblue1] {Generating microbenchmarks};
\node[] (keyred1) [below=.5em of keyblue1] {};
\node[hiddennode] (keyred2) [right=0.5cm of keyred1] {Benchmarking harness};
\node[] (keyresult1) [below=.5em of keyred1] {};
\node[hiddennode] (keyresult2) [right=0.5cm of keyresult1]
{Results analysis};
%Lines
\draw[-, very thick, harnarrow] (keyred1.east) -- (keyred2.west);
\draw[-, very thick, genarrow] (keyblue1.east) -- (keyblue2.west);
\draw[-, very thick] (keyresult1.east) -- (keyresult2.west);
\draw[->, very thick, genarrow] (bench.south) -- (pocc.north);
\draw[->, very thick, genarrow] (pocc.south) -- (kernel.north);
\draw[->, very thick, genarrow] (kernel.south) -- (gcc.north);
\draw[->, very thick, genarrow] (gcc.east) -- (gdb.west);
\draw[->, very thick, genarrow] (gcc.east) -- (ppapi.west);
\draw[->, very thick, genarrow] (gcc.east) -- (gus.west);
\draw[->, very thick, harnarrow] (gdb.east) -- (uica.west);
\draw[->, very thick, harnarrow] (gdb.east) -- (iaca.west);
\draw[->, very thick, harnarrow] (gdb.east) -- (ithemal.west);
\draw[->, very thick, harnarrow] (gdb.east) -- (bhive.west);
\draw[->, very thick, harnarrow] (gdb.east) -- (llvm.west);
\draw[->, very thick, harnarrow] (comps.south-|lifting) -- (lifting.north);
\draw[->, very thick] (lifting.east) -- (bench2.west);
\end{tikzpicture}

View file

@ -69,7 +69,7 @@
\newcommand{\coeq}{CO$_{2}$eq}
\newcommand{\figref}[1]{\ref{#1}]}
\newcommand{\figref}[1]{}
\newcommand{\reg}[1]{\texttt{\%#1}}

View file

@ -3,6 +3,7 @@
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{stmaryrd}
\usepackage{amsthm}
\usepackage{xfrac}
\usepackage{csquotes}
@ -17,6 +18,7 @@
\usepackage{appendixnumberbeamer}
\usepackage[bottom]{footmisc} % footnotes are below floats
\usepackage[final]{microtype}
\usepackage{tikz} % Alas.
% Local sty files
\usepackage{include/my_listings}
@ -25,6 +27,10 @@
\emergencystretch=1em
% Tikz
\usetikzlibrary{positioning}
\usetikzlibrary{fit}
% Graphics location
\def\basegraphicspath{assets/imgs/}
\newcommand{\resetgraphicspath}