Lastausgleich: erster Entwurf
This commit is contained in:
parent
07e599f40b
commit
2ba3634082
@ -1 +1,50 @@
|
||||
\subsection{Lastausgleich}
|
||||
% !TeX spellcheck = de_DE
|
||||
\subsection{Lastausgleich}
|
||||
\begin{itemize}
|
||||
\item meist durch Verteilung der Datenstrukturen einer Anwendung anhand von Heuristiken
|
||||
\item \begriff{statisch}, falls Ausführungszeiten vorher bekannt:\begin{itemize}
|
||||
\item \begriff{Koordinaten-Bisektion}:\begin{itemize}
|
||||
\item jedem Punkt Koordinaten zuordnen
|
||||
\item entlang längster Achse sortieren und in gleich große Gruppen partitionieren
|
||||
\item jetzt längste Achse wählen und rekursiv in Teilgruppen fortsetzen
|
||||
\item einfach implementierbar und parallel berechenbar
|
||||
\item keine Berücksichtigung von Kommunikationsbeziehungen (Kommunikation insbesondere oft über Gruppen hinweg)
|
||||
\end{itemize}
|
||||
\item \begriff{Graph-Koordinate}:\begin{itemize}
|
||||
\item zwei Knoten mit größter Distanz im Graphen wählen
|
||||
\item pro Extremknoten möglichst gleich große Gruppe an nahegelegenen Punkten wählen
|
||||
\item rekursiv in Teilgruppen fortsetzen
|
||||
\item Berücksichtigung der Kommunikationsbeziehungen
|
||||
\item kompliziertere Distanzberechnung und potentiell ungleiche Lastverteilung
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
\item \begriff{dynamisch}, falls Ausführungszeiten erst zur Laufzeit bestimmt:\begin{itemize}
|
||||
\item diffusionsbasierte (synchron und asynchron) Algorithmen: \begin{itemize}
|
||||
\item lokal, basiert auf Nachbarschaftsinformationen
|
||||
\item sukzessive Migration
|
||||
\item für Gitterprobleme besonders geeignet
|
||||
\end{itemize}
|
||||
\item synchron-parallele Algorithmen (\enquote{scratch and map}): \begin{itemize}
|
||||
\item global, Neuverteilung der Rechenlast
|
||||
\item für switch-basierte Netzwerke wie Cluster besonders geeignet
|
||||
\item \begriff{Tree-Walking}-Algorithmus:\begin{itemize}
|
||||
\item synchron
|
||||
\item Anstoß, wenn Warteschlange an Threads für Knoten unter Schwelle fällt, durch Nachricht an Nachbarn (und Weiterverbreitung)
|
||||
\item jeder Knoten sammelt Last-Informationen seiner Kindknoten bis zur Wurzel hoch
|
||||
\item Durchschnittslast $l_\text{avg} = \lfloor \frac{W}{N}\rfloor$ und Rest $l_\text{rem} = W \mod N$ an alle Kinder rekursiv verteilen
|
||||
\item Ausgleichsanteil $Q = l_\text{avg} \cdot \#\text{PEs in Unterbaum}$ pro Knoten bestimmen
|
||||
\item falls $Q - W > 0$, Empfang von $Q - W$ Tasks von Eltern-Knoten
|
||||
\item sonst Senden von $W - Q$ Tasks an Eltern-Knoten
|
||||
\item hoher Kommunikationsaufwand
|
||||
\end{itemize}
|
||||
\item \begriff{Switch-Walking}-Algorithmus:\begin{itemize}
|
||||
\item verteilte Berechnung der Lastinformationen
|
||||
\item Start-Nachricht durch \begriff{In-Fat}-Algorithmus verteilen (rekursives Senden an den an der Grenze liegenden Prozessor der andern Hälfte)
|
||||
\item Last-Informationen durch \begriff{All-Gather}-Algorithmus einsammeln (Umkehrung von In-Fat-Verfahren)
|
||||
\item Last-Informationen global durch In-Fat-Algorithmus wieder verteilen
|
||||
\item in jedem Knoten $l_\text{avg}$ und $l_\text{rem}$ bestimmen und für jeden Knoten Über- bzw. Unterschuss berechnen
|
||||
\item überschüssige Tasks versenden, fehlende Empfangen
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
\end{itemize}
|
Loading…
Reference in New Issue
Block a user