1 Einleitungbehandelten <strong>Loadbalancing</strong>-Verfahren. Im Gegensatz dazu hat bei Rechnern <strong>mit</strong> verteiltemSpeicher (distributed memory) jeder Rechner seinen eigenen, von den anderenProzessoren unabhängigen Speicher. Der Datenaustausch erfolgt durch das Versendenvon Nachrichten (message passing) über ein Netzwerk.Bei den verwendeten Netzwerken sind viele verschiedene Topologien anzutreffen. Besonders<strong>auf</strong> etwas älteren Rechnern sind die Prozessoren oftmals in Form eines Gitters,Torus oder Hypercubes angeordnet, manchmal auch als Zyklus oder als Baum. Währendder Datenaustausch zwischen zwei Prozessoren, die in dieser Struktur benachbartsind, in der Regel sehr schnell ist, kann die Kommunikation zwischen zwei beliebigenKnoten um ein Vielfaches länger dauern. In solchen Fällen ist der für das <strong>Loadbalancing</strong>verwendete Graph dieser Topologie anzupassen. Beispiele für Rechner <strong>mit</strong> solch festerTopologie sind die Cray T3E (3-D Torus), Fujitsu AP3000 (2D-Torus), SGI Origin 2000(Hypercube <strong>mit</strong> 4 Prozessoren pro Knoten) oder der schon etwas ältere (1993) nCUBE2S (Hypercube der maximalen <strong>Dimension</strong> 12).Vielfach werden in neueren <strong>Parallelrechnern</strong> aber Switches bzw. Crossbars eingesetzt,so dass jeder Prozessor <strong>mit</strong> jedem beliebigen anderen Prozessor in etwa gleich schnellkommunizieren kann. Bei mehr als etwa 64 Prozessen werden in der Regel mehrstufigeCrossbars verwendet. Beispiele hierfür sind Fujitsu VPP5000 (einstufiger Crossbar),Hitachi SR8000 (bis zu dreistufiger Crossbar) und NEC SX-6 (mehrstufiger Crossbar).Diese Architektur lässt sich zwar am ehesten durch einen vollständigen Graphen beschreiben;allerdings ist es nicht möglich, dass jeder Prozessor <strong>mit</strong> allen anderen Prozessorengleichzeitig kommuniziert. Der Vorteil ist vielmehr, dass durch Auswahl einzelnerVerbindungen beliebige Teilgraphen verwendet werden können. In diesem Fall kann manentweder einen für die Anwendung passenden Graphen wählen (z. B. bei Finite-Elemente-Anwendungen) oder einen an die zur Verfügung stehende Anzahl an Prozessoren angepasstenGraphen, also beispielsweise bei einer Zweierpotenz einen Hypercube, oder sonsteinen mehrdimensionalen Torus.In diese zweite Kategorie von Rechnern ohne bestimmte Topologie fallen auch dieimmer häufiger anzutreffenden Cluster. Hierbei werden aus Standardkomponenten bestehendeRechner (z. B. normale PCs) <strong>mit</strong>einander vernetzt, im einfachsten Fall <strong>mit</strong> normalenEthernet-Karten, falls bessere Datentransferraten erzielt werden sollen <strong>mit</strong> spezialisierterHardware wie zum Beispiel einem Myrinet-Netzwerk. Mit dem Linux NetworX(2304 Intel-Xeon-Prozessoren, 11 TFlop/s Peak-Performance) und dem HPTi (1536 Prozessoren)befinden sich sogar zwei Cluster unter den ersten zehn Plätzen der TOP500-Liste vom November 2002.Eine ganz andere Art von ”Cluster“ stellen lose vernetzte Rechner dar, die nur gelegentlichgemeinsam für große Rechen<strong>auf</strong>gaben benutzt werden und daher keine besondersschnelle Netzwerkanbindung besitzen. Ein weiteres mögliches Anwendungsgebiet für<strong>Loadbalancing</strong> in der Zukunft stellt das Grid-Computing dar, bei dem mehrere, räumlichunter Umständen weit entfernte, Rechner gemeinsam benutzt werden. Bei diesen letztenbeiden Fällen ist ein schnelles <strong>Loadbalancing</strong>-Verfahren noch wichtiger als bei echten<strong>Parallelrechnern</strong> <strong>mit</strong> schneller spezialisierter Kommunikationshardware.Einen guten Überblick über Parallelrechner-Topologien liefert das Einführungskapitelin [ALO02], ausführlichere Informationen zur Hardware finden sich in [vdSD02]. Dieser20
1.5 Kommunikationsmodelle und VerfahrensklassenBericht wird jährlich aktualisiert.1.5 Kommunikationsmodelle und VerfahrensklassenNeben der im letzten Abschnitt erläuterten Kategorisierung von <strong>Parallelrechnern</strong> gibtes noch ein weiteres Unterscheidungsmerkmal, das für <strong>Loadbalancing</strong>-Algorithmen vongroßer Wichtigkeit ist, nämlich ob der Nachrichtenaustausch immer <strong>auf</strong> zwei Prozessorenbeschränkt ist oder nicht. Beim so genannten All-Port-Modell wird davon ausgegangen,dass ein Prozessor <strong>mit</strong> all seinen Nachbarn gleichzeitig kommunizieren kann. Hier<strong>auf</strong>basieren die in dieser Arbeit zuerst vorgestellten Diffusionsverfahren. Die meisten tatsächlichenParallelrechner entsprechen dagegen eher dem One-Port-Modell, bei dem derDatenaustausch immer paarweise zwischen zwei Prozessoren erfolgt. Die <strong>Dimension</strong>-Exchange-Verfahren, denen der wesentliche Teil dieser Arbeit gewidmet ist, sind speziellfür dieses Modell konstruiert.1.6 Anforderungen an <strong>Loadbalancing</strong>-VerfahrenEine erste Anforderung ergibt sich dadurch, dass die übergeordnete Rechnung für dieDauer des <strong>Loadbalancing</strong>s unterbrochen werden muss, die Bestimmung des ausgleichendenFlusses (erste Phase) sollte also möglichst schnell sein. Bei der Geschwindigkeitheutiger Rechner und Netzwerkhardware wird die Schnelligkeit des Verfahrens allerdingserst bei sehr vielen Prozessoren zu einem wichtigen Kriterium. Zum zweiten sollteein möglichst kleiner ausgleichender Fluss berechnet werden. Sind die Flüsse unnötiggroß, bedeutet dies, dass Lasten <strong>auf</strong> Umwegen oder gar im Kreis verschoben werdenund dann die zweite Phase (das Scheduling) zu lang dauert. Des weiteren sollte der<strong>Loadbalancing</strong>-Algorithmus numerisch stabil arbeiten, was bei unüberlegter Anwendungeiniger Verfahren nicht garantiert ist.Eine gleichzeitige Minimierung der L<strong>auf</strong>zeit und des Flusses hat sich bisher als unmöglichherausgestellt. Das Ziel in den nachfolgenden Kapiteln ist es daher, diesen Anforderungenmöglichst nahe zu kommen.1.7 Häufig verwendete StandardgraphenEs gibt eine Reihe von Standardgraphen, die im L<strong>auf</strong>e der Arbeit immer wieder verwendetwerden. Dies sind: der Pfad der Länge n (P n ), der Zyklus der Länge n (C n ),k × l-Gitter (G k,l ), k × l-Torus (T k,l ), Hypercube der <strong>Dimension</strong> d (H d ), Stern aus nKnoten (S n ), kompletter Graph aus n Knoten (K n ) und zufälliger Graph <strong>mit</strong> n Knotenund N Kanten (R n,N ). Siehe hierzu auch Tabelle 1.1. Quadratische Gitter G k,k und ToriT k,k werden im Folgenden <strong>mit</strong> G k bzw. T k bezeichnet.21