Fixes
This commit is contained in:
parent
94ef4dd194
commit
09ecc56528
BIN
verfahren.pdf
BIN
verfahren.pdf
Binary file not shown.
@ -665,7 +665,8 @@
|
||||
\subsection{Indexanalyse}
|
||||
\begin{itemize}
|
||||
\item Bestimmung, ob 2 Array-Zugriffe selbe bzw. unterschiedliche Elemente ansprechen: Grundannahme pessimistisch (gleiches Element)
|
||||
\item Für 2 Array-Zugriffe $S1: A[f_1(i_1, \textellipsis, i_d), \textellipsis, f_m(i_1, \textellipsis, i_d)]$ und $S2: A[f_1(i_1, \textellipsis, i_d), \textellipsis, f_m(i_1, \textellipsis, i_d)]$ gilt $S1 \delta S2$ $\Leftrightarrow$:\begin{itemize}
|
||||
\item Für 2 Array-Zugriffe $S1$ $A[f_1(i_1, \textellipsis, i_d), \textellipsis, f_m(i_1, \textellipsis, i_d)]$ und\\
|
||||
$S2$ $A[g_1(i_1, \textellipsis, i_d), \textellipsis, g_m(i_1, \textellipsis, i_d)]$ gilt $S1 \delta S2$ $\Leftrightarrow$:\begin{itemize}
|
||||
\item mindestens ein Schreibzugriff
|
||||
\item $\exists I, J: I=(i_1, \textellipsis, i_d) \angle J =(j_1, \textellipsis, j_d)$ mit $I, J$ innerhalb der Schleifengrenzen (Ungleichunssystem mit Nebenbedingungen)
|
||||
\item $\forall p: f_p(I) = g_p(J)$ (Gleichungssystem mit Schleifenlaufvariablen als Variablen und Konstanten aus linearem Index-Ausdruck als Koeffizienten)
|
||||
@ -678,13 +679,16 @@
|
||||
\item Für verschiedene Arten der Abhängigkeit in obige Kriterien einsetzen
|
||||
\end{enumerate}
|
||||
\item Ungleichungstest:\begin{enumerate}
|
||||
\item Ungleichungen für verwendete Variablen aufstellen
|
||||
\item Ungleichungen für im Code verwendete Variablen $i$ mit $i_\mathrm{w}$, $i_\mathrm{r}$ für Schreib- und Lesezugriff aufstellen:\begin{enumerate}
|
||||
\item Ungleichungen für Schleifengrenzen
|
||||
\item Ungleichungen für relative Beziehung von $i_\mathrm{w}$ und $i_\mathrm{r}$
|
||||
\end{enumerate}
|
||||
\item Gleichung für Zugriff aufstellen und so umstellen, dass 0 auf einer Seite steht
|
||||
\item In Gleichung jeweils untere und obere Grenzwerte einsetzen und damit ein Intervall bestimmen
|
||||
\item Sofern Intervall nicht 0 enthält, keine Abhängigkeit
|
||||
\end{enumerate}
|
||||
\item Fourier-Motzkin-Test: \begin{itemize}
|
||||
\item Ungleichungssystem in kanonische Form überführen: \begin{itemize}
|
||||
\item Ungleichungssystem in kanonische Form ($\le c$, $c$ Konstante) überführen \begin{itemize}
|
||||
\item $\beta < b \cdot z$ untere Schranke für $z$ mit $\beta > 0$
|
||||
\item $a \cdot z < \alpha$ obere Schranke für $z$ mit $\alpha > 0$
|
||||
\end{itemize}
|
||||
@ -692,6 +696,22 @@
|
||||
\begin{equation*}
|
||||
a\cdot \beta \leq a \cdot z \cdot b \leq b\cdot \alpha \rightarrow a\cdot \beta \leq b\cdot \alpha
|
||||
\end{equation*}
|
||||
\item Algorithmus aus Übung: \begin{algorithmic}
|
||||
\Repeat
|
||||
\State Unbekannte $x_j$ auswählen
|
||||
\State $L \gets \lbrace i \mid a_{ij} < 0 \rbrace$
|
||||
\State $U \gets \lbrace i \mid a_{ij} > 0 \rbrace$
|
||||
\ForAll{$i \in L \cup U$}
|
||||
\State Reihe $i$ mit $\vert a_{ij}\vert$ normalisieren
|
||||
\EndFor
|
||||
\ForAll{$i \in L$}
|
||||
\ForAll{$k \in U$}
|
||||
\State Füge Ungleichung $A_{[i]} + A {[k]} \leq b_i + b_k$ hinzu
|
||||
\EndFor
|
||||
\EndFor
|
||||
\State Ignoriere/Lösche alle Reihen aus $L \cup U$
|
||||
\Until{System aus trivialen Ungleichungen}
|
||||
\end{algorithmic}
|
||||
\item Kleineres Problem $a\cdot \beta \leq b\cdot \alpha$ rekursiv lösen:\begin{itemize}
|
||||
\item keine Lösung $\rightarrow$ unabhängig
|
||||
\item Lösung existiert $\rightarrow$ Prüfung, ob auch ganzzahlige Lösung für $a\cdot z\cdot b$ existiert
|
||||
@ -703,7 +723,7 @@
|
||||
|
||||
\subsection{Entfernung von schleifengetragenen Datenabhängigkeiten}
|
||||
\begin{itemize}
|
||||
\item Legalität: Für jede Datenabhängigkeit muss die relative Reihenfolge auch nach Anwendung der Transformation bzw. Restrukturierung erhalten bleiben, die entstehenden Abhängigkeitsdistanzvektoren nicht lexikographisch sein
|
||||
\item Legalität: Für jede Datenabhängigkeit muss die relative Reihenfolge auch nach Anwendung der Transformation bzw. Restrukturierung erhalten bleiben, die entstehenden Abhängigkeits\-distanz\-vektoren nicht lexikographisch sein
|
||||
\end{itemize}
|
||||
|
||||
\subsubsection{Schleifentransformationen}
|
||||
@ -794,11 +814,9 @@
|
||||
\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}
|
||||
\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}
|
||||
\item Allgemeiner Fall:\begin{itemize}
|
||||
\item Transformation der Indexvektoren mit Matrix $U$ mit Eigenschaften (unimodular):\begin{itemize}
|
||||
|
Loading…
Reference in New Issue
Block a user