Table Of ContentJürgen Brehm
Parallele lineare Algebra
Jürgen Brehm
Parallele lineare Algebra
Parallele Lösungen ausgewählter linear.r
Gleichungssysteme bei untenchiedlichen
Mulliprozessor-Archilekluren
r[)fl1.\f7 DeutscherUniversitätsVerlag
~ GABlER·V1EWeG·WESTDEUTSCHER VERlAG
Die Deutsche Bibliothek - ClP-Einheitsaufnahme
Brehm, Jürgen:
Parallele lineare Algebra: parallele Lösungen ausgewählter
linearer Gleichungssysteme bei unterschiedlichen
Multiprozessor-Architekturen / Jürgn Brehm. - Wiesbaden :
Dt. Univ.-Verl., 1992
(DUV : Informatik)
Zugl.: Erlangen, Nürnberg, Univ., Diss., 1991
ISBN 978-3-8244-2026-1 ISBN 978-3-322-91021-9 (eBook)
DOI 10.1007/978-3-322-91021-9
Der Deutsche Universitäts-Verlag ist ein Untemehmen der
Verlagsgruppe Bertelsmann International.
© Deutscher Universitäts-Verlag GmbH, Wiesbaden 1992
Das Werk einschließlich aller seiner Teile ist urheberrechtlich ge
schützt. Jede Verwertung außerhalb der engen Grenzen des Ur
heberrechtsgesetzes ist ohne Zustimmung des Verlags unzulässig
und strafbar. Das gilt insbesondere für Vervielfältigungen, Über
setzungen, Mikroverfilmungen und die Einspeicherung und Verar
beitung in elektronischen Systemen.
ISBN 978-3-8244-2026-1
"It appears to be easier to build parallel machines than to use them"
Papadopoulos at the Symposium on
"Very High Parallel Architectures"
in 1987
Vorwort
Dieses Buch richtet sich an Anwender und Entwickler, die Hochleistungsrechner zum Lösen
von technisch wissenschaftlichen Problemen verwenden. Am exemplarischen Beispiel der li
nearen Algebra werden die Schwierigkeiten bei der Parallelisierung von Algorithmen und Da
tenstrukturen auf der einen Seite und die Möglichkeiten der neuen Rechnerarchitekturen, ins
besondere der Multiprozessoren, auf der anderen Seite aufgezeigt. Wechselwirkungen von Al
gorithmen und Rechnerarchitektur sind der Grundtenor dieses Buches, das unter dem Titel
"Parallele Lösung von dünn besetzten linearen Gleichungssystemen auf unterschiedlichen
Multiprozessor-Architekturen" als Dissertation an der Universität Erlangen-Nürnberg einge
reicht wurde. Im ersten Teil des Buches werden die betrachteten Rechnerarchitekturen und die
darauf durchgeführten Implementierungen vorgestellt. Es handelt sich hierbei um die paralle
lisierte Lösung von dünn besetzten linearen Gleichungssystemen, einem in der Praxis überaus
wichtigem Teilgebiet der linearen Algebra. Die Vielzahl der vorhandenen Programmierspra
chen für Parallelarchitekturen und ein fehlender Standard tragen erheblich zur mangelnden Ak
zeptanz dieser Maschinen bei industriellen Nutzern bei. Deshalb wird im zweiten Teil des Bu
ches ein Konzept für eine architekturunabhängige parallele Programmierumgebung eingführt.
Durch eine intelligente, automatische Abbildung der Konfiguration des Benutzerprogramms
auf die Verbindungshardware des Multiprozessors ist, neben der Portabilität der parallelen Pro
gramme, auch ein großes Maß an Effizienz zu erwarten.
Inhalt
Einführung 1
1. Parallele Rechnerarchitekturen 3
1.1. Vektorrechner 3
1.2. Multiprozessoren 4
1.2.1. Speicherkopplung mit global gemeinsamem Speicher
(Beispiele Alliant FX/8. Encore Multimax. Sequent Balance) 5
1.2.2. Speicherkopplung mit global verteiltem Speicher (Beispiel DIRMU 25) 7
1.2.3. Nachrichtenkopplung (Beispiel SUPRENUM) 9
1.3. Kommunikationsmechanismen in Multiprozessoren 12
1.3.1. Programmiermodell bei nachrichtengekoppelten Systemen 13
1.3.2. Kommunikation in nachrichtengekoppelten Systemen 13
1.3.3. Programmiermodell bei speichergekoppelten Systemen 14
1.3.4. Kommunikation in speichergekoppelten Systemen 14
2. Sequentielle Lösung von großen, linearen Gleichungssystemen
mit dünn besetzter Koeffizientenmatrix 17
2.1. Definitionen 17
2.2. Direkte Verfahren 19
2.2.1. Datenstrukturen 19
2.2.2. Pivotisierung 21
2.3. Iterative Verfahren 22
2.3.1. Einginerverfahren 23
2.3.2. Mehrgitterverfahren 24
2.4. Semi-iterative Verfahren 26
2.4.1. Methode der konjugierten Gradienten 26
2.4.2. Vorkonditionierung 27
3. Parallelisierung der Algorithmen 31
3.1. Datenabhängigkeitsanalyse 32
3.2. Vektorisierung 34
3.2.1. Direkte Verfahren 34
3.2.2. Iterative Verfahren 35
3.2.3. Semi-iterative Verfahren 36
vüi Inhalt
3.3. Nebenläufigkeit 37
3.3.1. Aufteilung des Lösungsgebiets 38
3.3.2. Direkte Verfahren 38
3.3.3. Iterative Verfahren 40
3.3.4. Semi-iterative Verfahren 41
3.4. Kommunikationstopologien 42
3.4.1. Prozessorlconfigurationen für DIRMU 25 43
3.4.2. Kommunikationsropologien für SUPRENUM 43
4. Implementierung der Algorithmen auf unterschiedlichen Multiprozessoren 49
4.1. Geschwindigkeitsgewinn und EMzienz 49
4.2. EMzienzverluste bei parallelen Algorithmen 53
4.3. Implementierung auf Multiprozessoren mit global gemeinsamem Speicher 55
4.3.1. FORCE -eine parallele Programmiersprache 55
4.3.2. Ergebnisse für Multiprozessoren mit global gemeinsamem Speicher 58
4.3.2.1. Direkte Verfahren 58
4.3.2.2. Semi-iterative Verfahren 58
4.3.2.3. Iterative Verfahren 61
4.4. Implementierung auf Multiprozessoren mit verteiltem Speicher 62
4.4.1. Modula-2 auf DIRMU 25 63
4.4.2. Implementierungen auf DIRMU 25 63
4.4.2.1. Direkte Verfahren 64
4.4.2.2. Iterative Verfahren 65
4.5. Implementierung auf SUPRENUM 67
4.5.1. Concurrent Modula-2 für SUPRENUM 67
4.5.2. MIMD Fortran für SUPRENUM 68
4.5.3. SUPRENUM Simulationssystem 69
4.5.4. Ergebnisse für SUPRENUM 70
4.5.4.1. Direkte Verfahren 70
4.5.4.2. Semi-iterative Verfahren 73
4.5.4.3. Iterative Verfahren 77
4.6. Zusammenfassung der Ergebnisse 80
S. Bewertung der Ergebnisse 81
5.1. Algorithmische Konsequenzen 81
5.1.1. Entwicklung von neuen, parallelen und vektorisierbaren Algorithmen 81
5.1.2. Formulierung von Algorithmen für parallele Rechnerstrukturen 83
Inhalt ix
5.2. Konsequenzen für die Rechnerarchitektur 83
5.2.1. Reduktion der Kosten für lokale Kommunikation 84
5.2.2. Hardwareunterstützung bei globalen Kommunikationsvorgängen 88
5.2.3. Entwicklung eines Benchmark-Konzepts für Multiprozessoren 89
5.3. Parallele Entwicklungsumgebungen 89
5.3.1. Simulationssysteme 90
5.3.2. Parallele Debugger 90
5.3.3. Diagnoseunterstützung 91
6. Eine parallele, architekturunabhängige Programmierumgebung 93
6.1 Existierende Ansätze für parallele Programmiersprachen 93
6.1.1 VSM -Virtual Shared Memory 93
6.1.2. Virtuelle Kanäle 94
6.1.3. Hilfsminel für den INTEL Hypercube 95
6.1.4. Autoparallelisierer für Algorithmen auf SUPRENUM 96
6.2. Die parallele Programmierumgebung PPRC 97
6.3. Feldkonfiguration: PPRC Programm für ein iteratives Verfahren 103
6.4. Baumkonfiguration: PPRC Programm für das globale Skalarprodukt 107
6.5. PPRC im Unterschied zu den existierenden Ansätzen 113
6.6. Implementierung von PPRC auf Muitiprozessoren 113
6.6.1. Implementierung der Konfigurationsmanager 114
6.6.2 Implementierung der Basiskommunikationsroutinen (give_info. geUnfo) 115
6.6.3. Implementierung von komplexen Kommunikationsroutinen 116
6.7. PICL und PPRC 116
6.8. PPRC: Zusammenfassung und Ausblick 117
7. Ausblick 119
7.1. Massiv parallele Systeme 119
7.1.1. Connection Machine 119
7.1.2. MEMSY 121
7.2. The Roads to EI Dorado 123
8. Literaturverzeichnis 125
Index 135
Einführung
Die numerische Lösung vieler interessanter Aufgaben aus dem ingenieunechnischen Bereich
scheitert auch nach dem Jahrzehnt der (Vektor-) Supercomputer an den Leistungsgrenzen die
ser Architekturen. Während die Prozessortechnologie sich langsam den Grenzen des physika
lisch Machbaren nähert, offeriert Parallelismus auf Prozessorebene praktisch unbegrenzte Lei
stung. Zu lösen ist "nur" noch die Frage der optimalen Architektur eines Multiprozessorsy
stems und eng damit zusammenhängend die Frage der Programmierbarkeit solcher Systeme.
Dieses Buch entstand unter dem Aspekt der "Wechselwirkungen zwischen parallelen Algorith
men und Rechnerarchitektur" und diskutiert beide Fragen anhand der Lösung von lin<,,:rren
Gleichungssystemen mit dünn besetzter Koeffizientenmatrix. Die hierfür erforderlichen ,\lgll
rithmen stellen die Basis für sehr viele technisch wissenschaftliche Anwendungen dar.
Somit kann man das Buch in zwei Teile aufgliedern: in die Parallelisierung der betrachteten
Algorithmen und in die Diskussion der verschiedenen Multiprozessorkonzepte. Als die verbin
denden Glieder dieser Teile können die durchgeführten Implementierungen verstanden wer
den, die einerseits zeigen, welchen Einfluß die Architektur eines Multiprozessorsystems auf
die parallele Implementierung von Algorithmen hat und andererseits die Stärken und Schwä
chen der betrachteten Multiprozessorkonzepte offenlegen.
Entsprechend können auch die Ziele des Buches zweigeteilt werden. Einerseits zeigt sie die Ef
fizienz der parallelen Algorithmen zur Lösung von dünn besetzten linearen Gleichungssyste
men auf unterschiedlichen Multiprozessoren und ist somit ein Hilfsmittel bei der Auswahl von
geeigneten parallelen Verfahren bei gegebener Rechnerarchitektur, andererseits entstehen aus
den Implementierungen Forderungen an die Rechnerarchitekten, die bei künftigen neuen Ar
chitekturen berücksichtigt werden sollten. Ein großes Problem der Parallelverarbeitung ist die
Entwicklung von portablen Programmen, da es momentan weder architekturunabhängige pa
rallele Programmiersprachen noch Standards für Kommunikationskonstrukte gibt. Ausgehend
von den Erfahrungen bei der Programmierung der unterschiedlichsten Multiprozessoren wird
ein Konzept für eine portable, effiziente, parallele Programmiersprache entwickelt und vorge
stellt. Der Sprache PPRC ~arallel ~ogramming with Regular ~onfigurations) liegt ein paral
leles Programmiermodell zugrunde. Sie unterstützt durch das Programmieren auf regulären lo
gischen Strukturen (Baum, Feld, Ring usw.), die auf die physikalische Maschinenkonfigura
tion abgebildet werden, die Parallelisierung von Anwendungen auch für große
Prozessoranzahlen.
Die Erörterung von Multiprozessorkonzepten [Gon89], [Hän85], [Hwa85], [Ram77], [Reg87],
[Ung89] im ersten Kapitel führt in die Architekturdiskussion ein, die durch die Vorstellung der
für die parallelen Implementierungen verwendeten Rechner ergänzt wird. Die oft zitierten phy
sikalischen Schranken des Monoprozessors sind zwar trotz Zykluszeiten im Nanosekundenbe
reich immer noch nicht erreicht, dennoch kann man davon ausgehen, daß der Hochleistungs
rechner der Zukunft eine Multiprozessorarchitektur haben wird. Ein zentrales Thema stellen
hierbei die unterschiedlichen Kopplungsmöglichkeiten (Speicher-oder Nachrichtenkopplung)
und die Programmierrnodelle der unterschiedlichen Multiprozessorarchitekturen dar. Dement
sprechend müssen entweder bekannte Algorithmen an diese Architekturen angepaßt oder neue
Algorithmen entwickelt werden.
2 Einflihrung
Für die Lösung von dünn besetzten linearen Gleichungssystemen existieren bekannte sequen
tielle Verfahren [GoI83], [Mod88], die im zweiten Kapitel vorgestellt werden, um das ganze
Spektrum der Lösungsvarianten abzudecken. Lineare Gleichungssysteme Ax = b mit dünn be
setzten Koeffizientenmatrizen A werden in der Literatur auch als "Sparse Matrix" Probleme
bezeichnet, weshalb die beiden Begriffe im weiteren Verlauf des Buches synonym verwendet
werden. Die untersuchten Algorithmen zur Lösung von "Sparse Matrix" Problemen sind di
rekte Verfahren (basierend auf der GauS'schen Elimination), iterative Verfahren (Ein-/Mehr
gitterverfahren) und semi-iterative Verfahren (Methode der konjugienen Gradienten).
Im Kapitel "Parallelisierung der Algorithmen" wird die Implementierung der betrachteten Al
gorithmen auf verschiedene Multiprozessoren vorbereitet. Die grundSätzlichen Möglichkeiten
zur Parallelisierung (Vektorisierung und Nebenläufigkeit) werden aufgezeigt und im Kapitel
"Implementierung der Algorithmen auf unterschiedlichen Multiprozessoren" exemplarisch
implementien. Für die Implementierungen standen Multiprozessorsysteme mit Speicherkopp
lung (globaler gemeinsamer Speicher und veneilter gemeinsamer Speicher) und das nachrich
tengekoppelte SUPRENUM System zur Verfügung. Sowohl die unterschiedlichen Kommuni
kationsmechanismen als auch die dazugehörigen Programmiermodelle werden vorgestellt. Die
Hauptkriterien zur Bewenung der Leistungsfähigkeit von Multiprozessoren sind Speedup und
Effizienz. Die Effizienzverluste, die durch die Parallelisierung der behandelten Algorithmen
entstehen, werden ermittelt und analysien, um festzustellen, ob sie im wesentlichen von der Ar
chitektur bedingt oder algorithmisch bedingt sind.
Die in diesem Abschnitt gewonnenen Erfahrungen werden im Kapitel "Bewertung der Ergeb
nisse" aufgegriffen und die sich daraus ergebenden Forderungen an die Rechnerarchitektur
und an die Algorithmen formulien. Aus algorithmischer Sicht ist es unbedingt erforderlich, die
in sequentielle Bahnen gelenkte Denkweise abzulegen und nach neuen, parallelen und vekto
risierbaren Algorithmen zu suchen, anstatt nur bereits existierende sequentielle Verfahren zu
parallelisieren. Die Rechnerarchitekten müssen den Mehraufwand für die Kommunikation
weiter reduzieren und zur besseren Bewenung bzw. zum besseren Vergleich der Leistungsfä
higkeit ihrer Verbindungsstrukturen ein Kommunikationsrnaß entwickeln.
Eine Synthese von parallelen Anwendungen und Rechnerarchitektur stellt der Vorschlag zur
parallelen Programmiersprache PPRC im nächsten Kapitel dar, der auch als Antwon auf einige
offene Fragen (wie kann die Parallelität eines zu lösenden Problems möglichst gut auf den
Rechner übertragen werden ?) gedacht ist. Der PPRC Ansatz enthält Vorschläge, die vorher
formulienen Forderungen (ponierbarkeit von parallelen Programmen, parallele Entwicklungs
umgebungen, effiziente Kommunikation usw.) zu erfüllen.
Abschließend werden im Ausblick die Themen "Fehlertoleranz in Multiprozessorsystemen"
und "Massiv parallele Systeme" angeschnitten und versucht, eine Standonbestimmung durch
zuführen, bzw. einen Blick in die nahe Zukunft der Multiprozessorarchitektur zu werfen.
An dieser Stelle darf ich mich bei allen (Kollegen, Gutachtern und meiner Freundin Katharina)
bedanken, ohne deren Diskussionsbereitschaft und Verständnis dieses Buch nicht möglich ge
wesen wäre.
Erlangen, im Oktober 1991
1. Parallele Rechnerarchitekturen
Der Begriff Parallelität hat in der Rechnerarchitektur zwei Bedeutungen: er steht für Lei
stungssteigerung oder Fehlertoleranz oder beides. In diesem Buch wird schwerpunktmäßig ge
zeigt, inwieweit Parallelismus die Ausführung von Algorithmen beschleunigen kann. Grund
sätzlich gibt es Parallelität auf allen Ebenen der Rechnerarchitektur, beginnend mit der gleich
zeitigen Verarbeitung von Bits auf Maschinenwortebene und endend mit der gleichzeitigen
Lösung eines Problems durch mehrere Prozessoren auf der Ebene der Nebenläufigkeit
[Bod80,83]. Entscheidenden Einfluß auf die Entwicklung von parallelen Algorithmen haben
sowohl die Vektorverarbeitung als auch die Parallelverarbeitung auf der Ebene der Nebenläu
figkeit ausgeübt. In diesem Kapitel werden deshalb Vektorrechner und Multiprozessoren
vorgestellt und skizziert. Insbesondere wird auf die Architektur der für die späteren Implemen
tierungen verwendeten Rechner etwas näher eingegangen.
1.1. Vektorrechner
Eine allgemein gehaltene Definition für Vektorverarbeitung (engl.: Pipelining) befindet sich in
[Ram77]: ''Tbe technique of decomposing a repeated sequential process into subprocesses,
each of which can be executed efficiently on a special dedicated autonomous modul that ope
rates concurrently with the others". Eine ausführliche Beschreibung des Pipeline Mechanismus
und der damit verbundenen Probleme befindet sich in [Hen90]. Den Charakter der Fließband
verarbeitung, der den Vektorrechnern eigen ist, zeigt Abbildung 1.1 am Beispiel des Phasen
pipelining:
r--.
-1 H H H
Instruktioo holen InSbUktiOll dekodieren Operanden holen Instruktion ausführen
Abbildung 1.I.a) Phasenpipelining
Phase
Instruktion ausführen 1 2 3141
Operanden holen 1 2 3 41
InsbUktioo dekodi.ren 11 2 3 4
Instruktion holen 112 3 4
Zeit
Abbildung 1.1.b) Phasen / Zeit Diagramm
Ein Maschinenbefehlszyklus besteht aus dem Holen des Befehls, der Dekodierung, dem Holen
der Operanden und dem Ausführen des Befehls. Diese vier Phasen des Maschinenbefehls kön
nen für aufeinanderfolgende Befehle überlappt ausgeführt werden (Abb. 1.1. b), wenn keine
Datenabhängigkeiten (vgl. Kapitel 2.1.) vorliegen. In der Literatur wird diese Form des Pipe
lining als Phasenpipelining [Bod83],[Ram77] bezeichnet. Neben der Erhöhung des Instruk-