defense/src/defense/3_pfor/0_ctanalysis.tex

99 lines
2.7 KiB
TeX

\subsection{Analyse durant la compilation}
\tikzset{local/rhl/.style={common/rhl=#1,minimum height=2.3ex,rounded corners=.5mm}}
%{{{
\begin{frame}{Besoin}
%{{{ frame "
Temps d'exécution concentré dans les boucles
$\implies$ parallélisation des boucles
\bigskip
\begin{columns}
\begin{column}{.5\paperwidth}
\lstvisible<2->{intro/loop_par}
\lstvisible<3->{intro/loop_seq}
\lstvisible<4->{intro/loop_par_hard}
\end{column}
\end{columns}
\bigskip
\visible<5>{
Objectif de la bibliothèque :
\begin{itemize}
\item analyse automatique durant la compilation
\item génération automatique
\end{itemize}
}
%}}}
\end{frame}
%}}}
%{{{
\begin{frame}{Analyse}
%{{{ frame "
\framesubtitle<-5>{Conditions de Bernstein}
\framesubtitle<6-7>{Identification des boucles parallélisables}
\framesubtitle<8>{Résultat}
\begin{columns}
\begin{column}{.5\paperwidth}
\begin{overprint}
\onslide+<1-5>
\lst{pfor/loop}
\def\x{x}\def\y{y}
\only<4>{\def\x{2}\def\y{4}}
\only<5>{\def\x{3}\def\y{5}}
\begin{exampleblock}<2-4>{Indépendance de deux instructions x et y selon Bernstein}
\vspace{-3ex}
\begin{align*}
\only<3-4>{\color{red!80!black}}W_\y \cap R_\x &\only<3-4>{\color{red!80!black}}= \alt<3-4>{\{\alt<3>{b}{d}\}}{\emptyset}\\
\only<4>{\color{red!80!black}}R_\y \cap W_\x &\only<4>{\color{red!80!black}}= \alt<4>{\{c\}}{\emptyset}\\
W_\x \cap W_\y &= \emptyset
\end{align*}
\end{exampleblock}
\foreach \l/\os/\col in {b/3/red,c/4/green!60!red,d/4/green!60!blue} {
\visible<\os>{
\tikz[remember picture,overlay,every node/.append style={local/rhl=\col}]{
\node[fit=(pic cs:pforloop\l rb)(pic cs:pforloop\l re)]{};
\node[fit=(pic cs:pforloop\l wb)(pic cs:pforloop\l we)]{};
}
}
}
\visible<5>{
\tikz[remember picture,overlay]{
\foreach \l/\col in {2/red,3/green,4/red,5/green,6/blue} {
\node[fit=(pic cs:pforloopl\l b)(pic cs:pforloopl\l e),local/rhl=\col]{};
\node[fit=(pic cs:pforloopl\l b)(pic cs:pforloopl\l e),local/rhl=\col]{};
}
}
\vspace{-39pt}
\begin{itemize}
\item[$\to$] analyse des variables
\end{itemize}
}
\onslide+<6-7>
\lst{pfor/loop_split}
\visible<7>{
\tikz[remember picture,overlay,every node/.append style={local/rhl=red}]{
\node[fit=(pic cs:pforloopsplitcrb)(pic cs:pforloopsplitcre)]{};
\node[fit=(pic cs:pforloopsplitcwb)(pic cs:pforloopsplitcwe)]{};
}
\begin{itemize}
\item[$\to$] analyse des fonctions d'indice
\end{itemize}
}
\onslide+<8>
\lst{pfor/loop_par}
\end{overprint}
\end{column}
\end{columns}
%}}}
\end{frame}
%}}}