Array-Verteilung: erster Entwurf

This commit is contained in:
Marco Ammon 2019-09-14 21:38:36 +02:00
parent 3cb9ccf6cb
commit 2f6b62b09f
2 changed files with 20 additions and 0 deletions

19
2-6-array-verteilung.tex Normal file
View File

@ -0,0 +1,19 @@
% !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}

View File

@ -57,6 +57,7 @@
\input{2-1-einfuehrung}
\input{2-2-msg}
\input{2-3-mpi}
\input{2-6-array-verteilung}
\input{2-6-pgas}
\input{2-7-dsm}
\section{Architektur (Lehrstuhl i3)}