Gansterer • Oberhuber Hochleistungsrechnen mit HPF Springer Berlin Heidelberg New York Barcelona Hongkong London Mailand Paris Tokio w. Gansterer • C. Oberhuber Hochleistungsrechnen mitHPF i Springer Dr. Wilfried Gansterer Prof Dr. Christoph Oberhuber Technische Universitat Wien Institut fUr Angewandte und Numerische Mathematik Wiedner HauptstraBe 8-10/115 A-I040 Wien, Osterreich Die DallKhe Bibliot/>ek . CIP_Einheit.saufnahme Go.Ilskr~r, Wilfried N~ HochleiSlungsre<hnen mit HPF I Wilf.ied N.Gansle• . ,.; Chri.lOph Oberhuber.· Berlin; Heidelberg; N~w York; Barcelona; Hongkong; London; Maililnd; hrio; Tokio: Sprin", •• 2001 [SBN·lJ: 971-l-H0-4H66-9 Einhandenlwu.f: Robe.t Ltt!ner "t Rober u'n""r de. U,iter d ... Abtei.!ung.G",phik-Rtprotedulik· am lrueitut fil. Design d.,. Uni"",.i· lilt fO. Angewandte Kunst in Wien. Mathematics Subject Classification (2000): 6SYOS, 6SY 10, 93840, 6SFn: ISBN·J3; 978-3-540-42366-9 c·ISBN·J3: 978-3-642-59503-5 DOl: 1O.1007f978-3-642-59503-5 Diesel W.,.k ist urheberr""htJich ",schOl1!. J)ie dadurdl begrllndl'!OTI Rechr... insbesondere die d.,. Obets<'l1ung. dn Na.chd.udu. dn Vurt"'g'. de. Entnabme von Abbildung~n und nbellen,du Funk_ ~ndung.der Mikrcwerfilmung odef def V. .. vielfihigung uf anderen We",n und Mr Speicherung in Datenw",rbeitungsanla",n. bleiben,uch bei nur luszugswciHr Verwertung. vorbrballen. Eine Ver_ vidfthigungdieses Werkef. oder von Teilen dieses W. .. ku "tauch im Einzelfall nur in doen GrenZl'n d.,. gesetzlkhen Besfirnmungcn de. Urheberr«ht.gcSd<n d.,. Bun<lesrepublik [Hutschland YOm 9. Sq> tember t 965 in der jfwrils gelr..nden Fl.$$ung zuli ..i g. Sie ift grundsiulich vergO.tungspflichtig. Zuwi_ derhandlungrn untcrliegen den St",fbestirnmungen does Urheberredll$g~. Spring. ... v. . lag Bulin Heidelberg New York ein Untnnehmen M' BntekmannSpringer Scirncc+Bwiness Medi. GmbH htIp"Jlwww.sprin ... r.de o Springer_Vo:rlag Berlin Hridelberg2001 Reprint of'he origin.t Mi'ion ZOOI Die: Woedergabe von Gebraudt.namen. Han<ielsnamen, WlltrnbeteichnungOTl USW. in diHem w. .k he· rcchtigt auch ohne hesOl'ld.,.e Kennuichnung nicbt ou doer Annabme, dall sokbe Namen im Sinne dn Wa~nuichen' und Ma.kenochutz·Gaetogebung ah frei zu belrachtm wir~n und daber von jeder· mann benulZt Wtrden dilrftcn. Einbandg",taltung: Kilnul + Lopb, Heid~lberg Satt: DoUenenleliungdorch die Aoturen onterVerwendungtine. Springer ~-Makropah-ts Gedruckt auf s.lu~fn:iem Papi... SPIN 10846SS6 46,13142ck_5 4 1 2 t 0 Vorwort Wissenschaftliches Hochleistungsrechnen (Scientific High Performance Compu ting) wird entscheidend durch drei Faktoren beeinfluBt: durch die Computer hardware, die Software (Programmiersprachen, Compiler) sowie durch die AIgo rithmen zur Losung numerisch-mathematischer Probleme. Die Ziele dieses Bu ches sind es, einerseits die wichtigsten Querverbindungen zwischen diesen drei Bereichen darzustellen, und andererseits die Moglichkeiten aufzuzeigen, die die Programmiersprache High Performance Fortran (HPF) zur effizienten Implemen tierung numerischer Algorithmen auf Parallelrechnern bietet. Kapitel 1 faBt die technischen Hardwaregrundlagen und die aktuellen Trends der fUr das numerische Hochleistungsrechnen relevant en Computersysteme zu sammen. Kapitel 2 beschiiftigt sich ausfUhrlich mit dem Leistungsbegriff sowie mit den verschiedensten Aspekten der Leistungsbewertung. In Kapitel 3 werden die mathematisch-algorithmischen Grundlagen fUr einige zentrale Rechenopera tionen der Numerischen Linearen Algebra diskutiert, deren effizienter Umsetzung in sehr vielen praktischen Anwendungen zentrale Bedeutung zukommt, da sie den groBten Teil der Rechenzeit in Anspruch nehmen. Aufbauend auf den Hardwarekonzepten und den algorithmischen Grundlagen der ersten drei Kapitel sind die drei folgenden Kapitel der Entwicklung effizi enter Parallelrechner-Software unter Verwendung der Programmiersprache HPF gewidmet. Kapitel 4 bespricht die fUr HPF relevanten Sprachelemente des ge genwartigen Fortran-Standards (Fortran 95). Kapitel 5 stellt das Konzept sowie die Elemente von HPF im Detail vor. In Kapitel 6 wird ein Ausblick auf mogliche und wiinschenswerte Erweiterungen und Weiterentwicklungen von HPF gegeben. Die Kapitel 2, 3, 4 und 5 enthalten praktische Fallbeispiele der Verwendung von HPF auf verschiedenen Arten von Parallelrechnern. Appendix A enthiilt einen Uberblick tiber die HPF-Bibliothek, eine Sammlung von vordefinierten Unterpro grammen, die vor allem im Bereich des Parallelrechnens wichtig sind. Die Detail spezifikationen dieser Unterprogramme sind aus Platzgriinden nicht vollstandig in diesem Buch abgedruckt. Sie findet man jedoch auf der Web-Site www.math.tuwien.ac.at/hpf_library. Klarerweise gibt es neben HPF einige andere Ansatze fUr die Programmierung von Parallelrechnern, deren wichtigste Beispiele tiberblicksmaBig in Kapitel 7 erwahnt sind. Bei der heutzutage in der Praxis am weitesten verbreiteten Variante, dem expliziten Nachrichtenaustausch mit Hilfe von PVM oder MPI, liegt die Btirde der Organisation der Kommunikation ganz auf der Seite des Programmierers. Der damit verbundene Programmieraufwand steht in krassem Gegensatz zum Konzept von HPF, das eine sehr einfache und benutzerfreundliche Schnittstelle fUr den Programmierer bereitstellt, dafiir aber den GroBteil der Verantwortung fUr die Umsetzung des Programmcodes in effizienten Maschinencode auf den Compiler tibertragt. VI Vorwort Das vorliegende Buch soil aufzeigen, daB sich HPF heute, nach einer relativ lan gen Phase unbefriedigender Ergebnisse, konsolidiert hat. Es solI auBerdem ver deutlichen, daB es fur viele (aber keineswegs fur alle) Anwendungen des nume rischen wissenschaitlichen Hochleistungsrechnens ein sehr sinnvolles und brauch bares Werkzeug und eine sehr attraktive Alternative zum Konzept des expliziten Nachrichtenaustausches sein kann. Dank mochten wir an dieser Stelle all jenen aussprechen, die zur Entstehung dieses Buches beigetragen haben. Insbesondere seien John Merlin, Harald Ehold, Ernst Haunschmid, Helmut Hlavacs sowie Dieter Kvasnicka namentlich erwii.hnt, deren kritische Kommentare und Diskussionsbeitrage wir sehr schatzten. AuBer dem mochten wir auch Michael Ibi fill seine Mithilfe bei den Korrekturarbeiten an alteren Versionen des Manuskripts danken. Das Entstehen dieses Buches wurde nicht zuletzt durch die Unterstiitzung des osterreichischen Fonds zur Forderung der wissenschaitlichen Forschung (FWF) ermoglicht. Wien, im Juni 2001 WILFRIED GANSTERER, CHRISTOPH UBERHUBER Inhalt sverzeichnis v Vorwort .. 1 Hardware 1 1.1 Prozessoren . 4 1.1.1 Das Pipeline-Prinzip 5 1.1.2 RISC-Prozessoren .. 11 1.1.3 Pipeline-Prinzip in RISC-Prozessoren . 13 1.1.4 Vektorprozessoren ...... . 16 1.2 Speicher .................. . 18 1.2.1 Die Parameter eines Speichersystems 19 1.2.2 Speicherhierarchien 20 1. 2.3 Adressierungsarten 23 1.2.4 Register ...... . 25 1.2.5 Der Cache-Speicher. 26 1.2.6 Cache-Koharenz .. 33 1.2.7 Der Hauptspeicher 35 1.2.8 Die Speicherung von Datenstrukturen 39 1.3 Kommunikation.. 40 1.3.1 Leistung .. 42 1.3.2 Skalierbarkeit 42 1.3.3 Technologie 43 1.3.4 Verbindungstypen 44 1.3.5 Verbindungsstrukturen 44 1.3.6 Kommunikationsstrukturen 45 1.4 Parallelrechner............ 45 1.4.1 Grobstruktur von Parallelrechnern 46 1.4.2 Klassifikation von Rechnerarchitekturen 47 1.4.3 Speichergekoppelte Systeme . . 50 1.4.4 Nachrichtengekoppelte Systeme 53 1.5 Entwicklungstrends 56 2 Leistung ........ . 58 2.1 Der Begriff "Leistung" . 59 2.1.1 Der Leistungsfaktor Arbeit 61 2.1.2 Der Leistungsfaktor Zeit .. 74 2.2 Quantifizierung der Leistung .... 82 2.2.1 Analytische Leistungsbewertung der Hardware. 83 2.2.2 Die Leistung von Vektorprozessoren . 88 2.2.3 Der LeistungseinfluB des Speichers 92 2.2.4 Empirische Leistungsbewertung ... 95 VIII Inhaltsverzeichnis 2.2.5 Bewertung von leistungssteigernden Mafinahmen 102 2.2.6 Das Gesetz von Amdahl . . 109 2.2.7 Das Modell von Gustafson. 112 2.2.8 Variable Parallelisierbarkeit 113 2.3 Benchmarks ........... . 113 2.3.1 Herkunft von Benchmarks 114 2.3.2 Ziele von Benchmarks 117 2.4 Beispiele fiir Benchmarks 119 2.4.1 EuroBen ....... . 120 2.4.2 Flops ........ . 121 2.4.3 GENESIS Distributed Benchmarks 122 2.4.4 LINPACK-Benchmark fur einen Prozessor 123 2.4.5 LINPACK-Benchmark fur Parallelrechner 125 2.4.6 Livermore Loops . . . . . . . . . 127 2.4.7 LLCbench ............ . 127 2.4.8 NAS Parallel Benchmarks (NPB) 129 2.4.9 PARKBENCH .. 130 2.4.10 Perfect-Benchmark 132 2.4.11 SLALOM ..... 132 2.4.12 SPEC-Benchmarks 133 2.4.13 Whetstone ..... 135 2.4.14 Andere Benchmarks 136 2.5 Schwachen von Benchmarks. 136 2.5.1 Kritik an Benchmarkresultaten 137 2.5.2 Das Zusammenfassen von Benchmarkresultaten 139 2.5.3 Standardisierungen .. 140 2.6 Das Preis-Leistungs-Verhaltnis ..... . 140 2.6.1 Definition des PLY ....... . 141 2.6.2 Vergleich von Computersystemen 142 2.6.3 Der Gordon-Bell-Preis 144 3 Algorithmen. . . . . . . . . . . . . 146 3.1 Grundoperationen der Linearen Algebra. 146 3.1.1 Vektor-Vektor-Operationen 147 3.1.2 Matrix-Vektor-Operationen 147 3.1.3 Matrix-Matrix-Operationen 148 3.1.4 BLAS ........... . 148 3.1.5 Geblockte Algorithmen .. . 150 3.1.6 Das Aufrollen von Schleifen 151 3.2 Die Matrizenmultiplikation . . . . . 152 3.2.1 Matrix-Vektor-Multiplikation 152 3.2.2 Matrix-Matrix-Multiplikation 156 3.2.3 Die ijk-Form ......... 156 3.2.4 Verschiedene Formen der Matrizenmultiplikation 157 3.2.5 Mafinahmen zur Leistungsverbesserung . . . . . . 160 Inhaltsverzeichnis IX 3.2.6 Matrix-Matrix-Multiplikation auf Parallelrechnern . 164 3.3 Die Lasung linearer Gleichungssysteme 168 3.3.1 LU-Zerlegung.......... 169 3.3.2 Schleifenreihenfolgen...... 170 3.3.3 Komplexitat der LU-Zerlegung 171 3.3.4 Pivotstrategien......... 172 3.3.5 Geblockte LU-Zerlegung . . . . 173 3.3.6 LU-Zerlegung auf Parallelrechnern 175 3.3.7 Cholesky-Zerlegung. 178 4 Fortran 95 . . . . . . . . . . . . . 182 4.1 Felder ............ . 182 4.1.1 Die Darstellung von Literalen 183 4.1.2 Die Vereinbarung von Feldern 184 4.2 Belegung und Verkniipfung von Feldern 186 4.2.1 Die Speicherung von Feldern . 186 4.2.2 Der Zugriff auf Felder 188 4.2.3 Die Wertzuweisung . . 190 4.2.4 Operatoren...... 191 4.3 Die Verarbeitung von Feldern . 192 4.3.1 Elementweise Operationen auf Feldern 192 4.3.2 Auswahl mit Feld-Bedingungen 194 4.3.3 Speicherverwaltung....... 196 4.3.4 Felder als Parameter . . . . . . 201 4.3.5 Funktionen mit Feldresultaten . 202 4.3.6 Vordefinierte Unterprogramme 203 4.4 Unterprogrammschnittstellen.. 205 4.4.1 Explizite Schnittstellen . 206 4.4.2 Implizite Schnittstellen . 206 4.4.3 Schnittstellenblacke... 206 4.5 FORALL ............ . 207 4.5.1 Die FORALL-Anweisung . 208 4.5.2 Der FORALL-Block .. . 213 4.6 PURE-Unterprogramme ..... . 216 4.6.1 Syntaxregeln fur das PURE-Priifix 218 4.6.2 Einschriinkungen.... 218 5 High Performance Fortran - HPF 223 5.1 Die Entwicklung von HPF 224 5.2 Die Konzeption von HPF ... . 226 5.2.1 HPF und Fortran ... . 226 5.2.2 Das Programmiermodell von HPF . 228 5.2.3 Die syntaktische Struktur von HPF . 228 5.3 Datenverteilung und Datenausrichtung . 231 5.3.1 Das Modell der Datenabbildung ... 231 x Inhaltsverzeichnis 5.3.2 Die PROCESSORS-Anweisung ....... 234 5.3.3 ,,*" in ALIGN- und DISTRIBUTE-Anweisungen 236 5.3.4 Die DISTRIBUTE-Anweisung zur Datenverteilung 237 5.3.5 Die ALIGN-Anweisung zur Datenausrichtung 244 5.3.6 Die TEMPLATE-Anweisung . 251 5.3.7 Der Kommunikationsaufwand · ....... 252 5.4 Datenabbildung in Unterprogrammen · ....... 254 5.4.1 Vorschreibendes ALIGN und DISTRIBUTE 255 5.4.2 Transkriptive Datenabbildung . . . 256 5.4.3 Die INHERIT- Anweisung . . . . . . . . . . 257 5.4.4 Anderungen im Vergleich zu HPF 1 . . . . . 259 5.4.5 Abstrakte Prozessoren in Unterprogrammen 260 5.4.6 Templates in Unterprogrammen . 261 5.5 Datenparallele Verarbeitung · ...... 262 5.5.1 PURE-Unterprogramme · .... 262 5.5.2 Die INDEPENDENT-Anweisung 263 5.6 EXTRINSIC-Unterprogramme ...... 269 5.6.1 Das EXTRINSIC-Prafix · .... 273 5.6.2 Der Aufruf von EXTRINSIC-Unterprogrammen 274 5.6.3 HPF und Numerische Software 275 5.7 Speicher- und Abfolgeassoziierung .......... 287 5.7.1 Die SEQUENCE-Anweisung ......... 289 5.7.2 Parameteriibergabe und Abfolgeassoziierung 290 6 Anerkannte Erweiterungen von HPF .. 291 6.1 Erweiterungen fur die Datenabbildung . 291 6.1.1 Dynamische Datenabbildung. . 292 6.1.2 Neue Verteilungsformate .... 295 6.1.3 Erweiterungen der DISTRIBUTE-Anweisung 297 6.1.4 Die RANGE-Anweisung · . 298 6.1.5 Die SHADOW-Anweisung . 299 6.2 Daten- und Funktionsparallelismus . 300 6.2.1 Aktive Prozessoren . . . . . 300 6.2.2 Die ON-Anweisung ..... 301 6.2.3 Die RESIDENT -Anweisung 302 6.2.4 Die TASK_REGION-Anweisung 303 6.3 Erweiterungen fur extrinsische Unterprogramme 304 6.3.1 Das LOCAL-Modell · .......... 304 6.3.2 Das SERIAL-Modell · .......... 304 6.3.3 Einbindungen verschiedener Programmiersprachen 305 6.4 Neue und erweiterte Unterprogramme · .. 305 6.4.1 Vordefinierte Un terprogramme 305 6.4.2 Erweiterungen der HPF-Bibliothek 305 6.5 Asynchrone Ein-/ Ausgabe ......... 305