% !TeX spellcheck = de_DE
\subsection{Array-Verteilung in High-Performance Fortran}
\begin{itemize}
	\item manuelles Platzieren (\enquote{Mapping}) gemeinsam benutzter Datenstrukturen auf verschiedenen Knoten
	\item 1. Phase: \begriff{Array-Ausrichtung} (\enquote{Alignment}): \begin{itemize}
		\item Elemente von $X$ mit $Y$ in Relation setzen: \texttt{!HPF\$ ALIGN X(I) WITH Y(I+1)}
		\item abstrakte \begriff{Templates} für Verteilung von Arrays: \texttt{!HPF\$ template T[:,:]} (2-dimensional)
		\item auch Replikation: \texttt{!HPF\$ ALIGN X[i] WITH T[i, *]}
		\item kompliziertere Verteilungen: \texttt{!HPF\$ ALIGN A[i,j] WITH T[x*i+a, y*j+b]}
	\end{itemize}
	\item 2. Phase: \begriff{Array-Verteilung} (\enquote{Distribution}) der Indexmenge auf \begriff{abstrakte Prozessoren}: \begin{itemize}
		\item zyklisch (\texttt{!HPF\$ DISTRIBUTE A(CYCLIC)}): Prozessor $j$ von $P$ bekommt Elemente $i$, für die\\
		${(i \mod P) = j}$ gilt
		\item blockweise (\texttt{!HPF\$ DISTRIBUTE A(BLOCK)}): jeder Prozessor bekommt zusammenhängenden Block von $\lceil\frac{N}{P}\rceil$ Elementen
		\item zufällig
		\item block-zyklisch (\texttt{!HPF\$ DISTRIBUTE A(CYCLIC(k))}): zusammenhängende Blöcke der Größe $k$ werden über Prozessoren zyklisch verteilt
		\item Gitter $a\times b$ an Prozessoren anlegen (\texttt{!HPF\$ PROCESSORS gitter(a,b)}), Array darauf verteilen (\texttt{!HPF\$ DISTRIBUTE A(BLOCK,BLOCK) ONTO gitter})
	\end{itemize}
\end{itemize}