Folien VL-12 zusammengefasst

This commit is contained in:
Marco Ammon 2020-08-12 13:37:00 +02:00
parent 0bc34fb409
commit f3016b18fb
2 changed files with 77 additions and 4 deletions

Binary file not shown.

View File

@ -724,12 +724,85 @@
\item kleinere Rümpfe passen besser in den Instruktionscache \item kleinere Rümpfe passen besser in den Instruktionscache
\item ggf. kann eine der Schleifen parallelisiert/vektorisiert werden \item ggf. kann eine der Schleifen parallelisiert/vektorisiert werden
\end{itemize} \end{itemize}
\item Kachelschneiden \item Kachelschneiden: \begin{itemize}
\item Aufteilen mehrerer geschachtelter Schleifen in Kacheln bestimmter Größe
\item Legalität: Wenn Schleifenvertauschungen legal sind
\item Verbesserung der Lokalität
\item Erlaubt Registerverwendung
\item Höherer Schleifenoverhead
\end{itemize}
\end{itemize} \end{itemize}
\paragraph{Lineare Schleifenrestrukturierungen} \paragraph{Lineare Schleifenrestrukturierungen}
\begin{itemize} \begin{itemize}
\item Schleifenvertauschung \item Schleifenvertauschung:\begin{itemize}
\item Richtungsumkehr \item Innere Schleife wird zur äußeren
\item Schleifenneigen \item Erhalt der schleifenunabhängigen Datenabhängigkeiten
\item Tausch der Einträge der entsprechenden Dimensionen in Richtungsvektoren und Abhängigkeitsdistanzen der schleifengetragenen Datenabhängigkeiten
\item Legalität: Alle Abhängigkeitsdistanzen (vorher per Definition lexikographisch positiv) müssen auch danach positiv sein
\item Nach außen Ziehen der abhängigkeitstragenden Schleifen ermöglicht ggf. im Inneren parallelisierbare Schleife mit großer Breite
\item ggf. Verbesserung der räumlichen oder zeitlichen Lokalität
\item Korrektur der Indexbereiche bei nicht-rechteckigen Iterationsräumen (ggf. durch Fourier-Motzkin-Elimination)
\end{itemize}
\item Richtungsumkehr:\begin{itemize}
\item Inkrement- in Dekrementschleife umwandeln (oder vice versa)
\item Voraussetzung: alle Abhängigkeiten müssen von umgebender Schleife getragen werden
\item ggf. Ermöglichung weiterer Optimierungen wie Verschmelzung
\end{itemize}
\item Neigen:\begin{itemize}
\item Schleifenneigen:\begin{itemize}
\item Verschiebung des Array-Indexbereichs der inneren Schleife um $f \cdot i$ mit $f$ Neigungsfaktor und $i$ Iterationsvariable der äußeren Schleife
\item Abzug von $f \cdot i$ bei Verwendungen der inneren Iterationsvariable
\item Abhängigkeit $(d_1, d_2)$ wird zu $(d_1, d_2 + f \cdot d_1)$ $\rightarrow$ Ermöglichung weiterer Restrukturierungen
\end{itemize}
\end{itemize}
\item Allgemeiner Fall:\begin{itemize}
\item Transformation der Indexvektoren mit Matrix $U$ mit Eigenschaften (unimodular):\begin{itemize}
\item $U \in \mathbb{Z}^{n\times n}$
\item $\exists\, U^{-1} \in \mathbb{Z}^{n\times n}:\, U U^{-1} = I$
\item Hinreichende Bedingung: $\vert\mathrm{det}(U)\vert = 1$
\end{itemize}
\item Legalität: Für alle Abhängigkeitsdistanzen $d$ muss gelten $0 \angle d U$
\item Vertauschungsmatrix für Dimensionen 2 und 3: \begin{equation*}
U = \begin{psmallmatrix}
1 & & & \\
& 0 & 1 & \\
& 1 & 0 & \\
& & & 1
\end{psmallmatrix}
\end{equation*}
\item Richtungsumkehrungsmatrix für Dimension 2: \begin{equation*}
U = \begin{psmallmatrix}
1 & 0\\
0 & -1
\end{psmallmatrix}
\end{equation*}
\item Neigungsmatrix für Faktor $f$ in Dimension 2:\begin{equation*}
U = \begin{psmallmatrix}
1 & f\\
0 & 1
\end{psmallmatrix}
\end{equation*}
\end{itemize}
\item Gezielte Konstruktion von Transformationsmatrix $U$ zur Ermöglichung bestimmter Optimierungen:\begin{itemize}
\item Matrix $D$ aus Abhängigkeitsdistanzvektoren
\item Gesucht: $U^{\mathrm{T}}$ mit $U^{\mathrm{T}} D^{\mathrm{T}} = D^{\mathrm{T}\prime}$, sodass $D^{\mathrm{T}\prime}$ Optimierungsanforderungen erfüllt
\end{itemize}\begin{enumerate}
\item Lineares Gleichungssystem $\left( I^{\mathrm{T}} \mid D^{\mathrm{T}} \right)$ zu $\left( U^{\mathrm{T}} \mid D^{\mathrm{T}\prime} \right)$ mit gewünschtem $D^{\mathrm{T}\prime}$ umformen
\item $U^{-1}$ aus $U$ bestimmen
\item Transformation der Verwendung der Iterationsvariablen $i, j, \textellipsis$ im Schleifenrumpf wie folgt:
\begin{equation*}
\begin{psmallmatrix}
i\\
j\\
\vdots
\end{psmallmatrix} = U^{-1} \begin{psmallmatrix}
i'\\
j'\\
\vdots
\end{psmallmatrix}
\end{equation*}
\item Anpassung der Schleifengrenzen für $i', j', \textellipsis$ mit Fourier-Motzkin, bei innerster Schleife beginnend
\end{enumerate}
\end{itemize} \end{itemize}
\end{document} \end{document}