PACL-Zusammenfassung/2-6-array-verteilung.tex

19 lines
1.4 KiB
TeX

% !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}