Effiziente Nutzung von Hochleistungsrechnern in der numerischen Strömungsmechanik



Ähnliche Dokumente
Effiziente Nutzung von Hochleistungsrechnern in der numerischen Strömungsmechanik

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Centre of Excellence for High Performance Computing Erlangen Kompetenzgruppe für Supercomputer und Technisch-Wissenschaftliche Simulation

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Einführung in die Systemprogrammierung

Die Marvel, ein gedrosselter Supercomputer

Proseminar Rechnerarchitekturen. Parallelcomputer: Multiprozessorsysteme

Professionelle Seminare im Bereich MS-Office

OpenMP am Beispiel der Matrizenmultiplikation

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Lineare Gleichungssysteme

Konfiguration des ewon GSM Modems Kurzbeschreibung zum Aufbau einer GSM Verbindung

Programmiertechnik II

20. Algorithmus der Woche Online-Algorithmen: Was ist es wert, die Zukunft zu kennen? Das Ski-Problem

Updatehinweise für die Version forma 5.5.5

Die Mikroprogrammebene eines Rechners

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Mikrocontroller Grundlagen. Markus Koch April 2011

Kapitel 6 Anfragebearbeitung

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

WINDOWS 10 Upgrade. Beispiel: Desktop-Ausschnitt von vorhandenem WIN 8.1 (rechte Ecke der Taskleiste)

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Lineare Gleichungssysteme

Computerarithmetik ( )

Anleitung zur Nutzung des SharePort Utility

Zeichen bei Zahlen entschlüsseln

Georg Hager Regionales Rechenzentrum Erlangen (RRZE)

Lizenzen auschecken. Was ist zu tun?

Anleitung über den Umgang mit Schildern

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Leitfaden zur Nutzung von binder CryptShare

Wir unterscheiden folgende drei Schritte im Design paralleler Algorithmen:

2.5. VERBINDUNGSNETZWERKE GESTALTUNGSKRITERIEN DER NETZWERKE TOPOLOGIE ALS GRAPH. Vorlesung 5 TOPOLOGIE: DEFINITIONEN : Sei G = (V, E) ein Graph mit:

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Das Persönliche Budget in verständlicher Sprache

Lösungsvorschlag zur 4. Übung

pro4controlling - Whitepaper [DEU] Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

Die Online-Meetings bei den Anonymen Alkoholikern. zum Thema. Online - Meetings. Eine neue Form der Selbsthilfe?

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

1. Einführung. 2. Archivierung alter Datensätze

V 2 B, C, D Drinks. Möglicher Lösungsweg a) Gleichungssystem: 300x y = x + 500y = 597,5 2x3 Matrix: Energydrink 0,7 Mineralwasser 0,775,

Quick XMP Ü bertaktungseinstellungen

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

SJ OFFICE - Update 3.0

Grundlagen der Parallelisierung

MAP CellSs Mapprakt3

SAP Memory Tuning. Erfahrungsbericht Fritz Egger GmbH & Co OG. Datenbanken sind unsere Welt

Sowohl die Malstreifen als auch die Neperschen Streifen können auch in anderen Stellenwertsystemen verwendet werden.

Lehrer: Einschreibemethoden

DSO. Abtastrate und Speichertiefe

2. Negative Dualzahlen darstellen

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Agile Software Development

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

TECHNISCHE INFORMATION LESSOR LOHN/GEHALT BEITRAGSNACHWEIS-AUSGLEICH BUCH.-BLATT MICROSOFT DYNAMICS NAV

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Inhalt. 1 Übersicht. 2 Anwendungsbeispiele. 3 Einsatzgebiete. 4 Systemanforderungen. 5 Lizenzierung. 6 Installation. 7 Key Features.

Systemanforderungen ab Version 5.31

7 Rechnen mit Polynomen

Leichte-Sprache-Bilder

Preisvergleich ProfitBricks - Amazon Web Services M3 Instanz

1 Voraussetzungen für Einsatz des FRITZ! LAN Assistenten

OLXTeamOutlook 1.5 für Outlook 2003, 2002/XP, 2000 und 97/98

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Paul Petzold Firmengründer, Verwaltungsratspräsident und Delegierter der Mirus Software AG

Hochleistungsrechnen für Wissenschaft und Wirtschaft im internationalen Verbund

Institut für Computational Engineering ICE. N ä h e r d ra n a m S ys t e m d e r Te c h n i k d e r Z u ku n f t. w w w. n t b.

Software zur Anbindung Ihrer Maschinen über Wireless- (GPRS/EDGE) und Breitbandanbindungen (DSL, LAN)

VDP-Start die Hilfe für Anfänger

How-To-Do. Fernwartung einer VIPA Steuerung via Ethernet

Schrittweise Anleitung zur Installation von Zertifikaten der Bayerischen Versorgungskammer im Mozilla Firefox ab Version 2.0

RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen

Marketing-Leitfaden zum. Evoko Room Manager. Touch. Schedule. Meet.

PView7 & Citrix XenApp

Binärdarstellung von Fliesskommazahlen

DOKUMENTATION VOGELZUCHT 2015 PLUS

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Präsentation: Google-Kalender. Walli Ruedi Knupp Urdorf

Datensicherung. Beschreibung der Datensicherung

Wie optimiert man die Werbungserkennung von Ad- Detective?

ECO-Manager - Funktionsbeschreibung

Proxy. Krishna Tateneni Übersetzer: Stefan Winter

Scheper Ziekenhuis Emmen. Tel.: + 31 (0) Fax: + 31 (0) Web:

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".

Was ist Sozial-Raum-Orientierung?

A1.7: Entropie natürlicher Texte

Excel Fortgeschrittene Techniken. Peter Wies. 1. Ausgabe, März 2013 EX2013F

Ausgewählte Kapitel eingebetteter Systeme

Orderarten im Wertpapierhandel

Programm 4: Arbeiten mit thematischen Karten

AutoCAD Dienstprogramm zur Lizenzübertragung

Second Steps in eport 2.0 So ordern Sie Credits und Berichte

Welche Bereiche gibt es auf der Internetseite vom Bundes-Aufsichtsamt für Flugsicherung?

EasyWk DAS Schwimmwettkampfprogramm

Transkript:

1/ 11 Effiziente Nutzung von Hochleistungsrechnern in der numerischen Strömungsmechanik Dr. Georg Hager georg.hager@rrze.uni-erlangen.de HPC Services Regionales RechenZentrum Erlangen Überblick 2/ 11 Moderne Prozessoren für numerische Anwendungen Allgemeine Optimierungsrichtlinien für CFD Parallelrechner Möglichkeiten und Grenzen der Parallelität Designprinzipien effiziente Programmierung für CFD-Probleme Beispiel: SIPSolver nach Stone (Finite-Volumen) Zusammenfassung

3/ 11 Moderne Prozessoren für numerische Anwendungen Speicherhierarchien moderner Prozessoren Schematischer Aufbau 4/ 11 Rechenwerke Vektorprozessor Hauptspeicher Klass. RISC Prozessor Hauptspeicher MS CFD-Programm Daten L3 Cache L2 Cache L1 Cache Vektorregister Floating Point Register Rechenwerke Programm

Kennzahlen von Prozessoren 5/ 11 Rechenleistung in Fließkommaoperationen pro Sekunde: Flop/s i.a. Multiplikationen und Additionen mit doppelter Genauigkeit Divisionen, SQRT etc. sind sehr langsam max. FLOP/s-Zahl ist üblicherweise das Doppelte oder Vierfache der Prozessor-Taktfrequenz Bandbreite (BW), d.h. Geschwindigkeit des Datentransfers: GB/s in CFD-Anwendungen meist der limitierende Faktor: Bandbreite zwischen CPU und Hauptspeicher Latenz: Zeitdauer vom Anstoßen eines Datentransfers bis zum Eintreffen des ersten Bytes CPU CPU, CPU Speicher, Rechenwerke Cache dominant, wenn pro Transfer nur wenig Daten übertragen werden Leistungszahlen moderner Prozessoren 6/ 11 Intel Xeon AMD Opteron Intel Itanium2 NEC SX8 Spitzenleistung Taktfreq. 6.4 GFlop/s 3.2 GHz 4.8 GFlop/s 2.4 GHz 4.0 GFlop/s 1.0 GHz 16 GFlop/s 2.0 GHz # FP Registers 16/32 16/32 128 8 x 256 (Vector) Size 16 kb 64 KB 16 KB (kein FP) L1 BW 102 GB/s 51.2 GB/s 32 GB/s Latenz 12 Takte 3 Takte 1 Takt Size 1.0 MB 1.0 MB 256 KB L2 BW 102 GB/s 51.2 GB/s 32 GB/s Latenz 18 Takte 13 Takte 5-6 Takte L3 Size BW 3 MB 32 GB/s Latenz 12-13 Takte Mem. BW Latenz 6.4 GB/s r/w ~150 ns 6.4 GB/s r/w ~80 ns 6.4 GB/s r/w ~200 ns 64 GB/s r/w Vektorisierung

Organisation von Caches 7/ 11 Caches bestehen aus Cachelines, die nur als Ganzes gelesen/geschrieben werden typische Längen: 8/16/32 Worte (je 8 Byte) Cache Miss: Verwenden eines Datums, das noch nicht im Cache liegt Folge: Cacheline wird aus Memory geladen (kostet Latenz + Zeit für Datentransfer) alle weiteren Zugriffe auf Cacheline sind schnell Cachelines werden nach einem bestimmten Algorithmus wieder aus dem Cache entfernt (zurückgeschrieben und/oder invalidiert) Worst Case: Laden einer Cacheline, von der nur ein einziges Element benutzt wird tritt auf bei irregulärem Speicherzugriff (z.b. indirekt) Optimierung für Cache (1) 8/ 11 Caches sind schnell und klein, Speicher ist groß und langsam! Folge: Langsame Datenpfade sind zu vermeiden! DO I=1,N A(I)=B(I)+C(I) ENDDO DO I=1,N A(I)=A(I)*D(I) ENDDO Optimierung DO I=1,N A(I)=(B(I)+C(I))*D(I) ENDDO Hauptspeicher Cache Effiziente Nutzung schneller Datenpfade ist absolut vorrangig! $

Optimierung für Cache (2) 9/ 11 Wenn sich "Streaming" nicht vermeiden lässt (üblich in CFD), muss es wenigstens effizient geschehen: Prefetching! Prefetch = Überdecken der Speicherlatenz durch rechtzeitiges Absetzen von Anfragen für Cachelines Iteration 1 2 3 4 5 6 7 8 LD Cache miss : Latenz LD LD Ohne Prefetch: Latenz wird bei jeder Cacheline fällig! LD LD Cache miss : Latenz LD t LD Optimierung für Cache (3) 10 / 11 Iteration 1 2 3 4 5 6 7 8 9 PFT Cache miss : Latenz PFT Mit Prefetch: Latenz wird überdeckt! LD LD LD Cache miss : Latenz LD LD LD LD LD PFT Cache miss : Latenz LD Prefetching wird i.a. vom Compiler generiert (überprüfen!) eingreifen u.u. im Quellcode möglich durch Compilerdirektiven Xeon, Opteron, Power4/5: zusätzlich hardwarebasierter Prefetch t

Prinzipien der Vektorarchitektur (1) 11 / 11 Analog RISC: Pipelining ist das A und O Aufteilung einer komplexen Operation (hier Subtraktion) in: compare exponent shift mantissa add mantissa normalize exponent 1.77e4-9.3e3 1.77e4-0.93e4 0.84e4 8.40e3 Ablaufschema für Array-Operation (C = A + B) hier: ohne Pipelining c 1 c 2 c 3 compare exponent shift Mantissa add mantissa normalize exponent Prinzipien der Vektorarchitektur (2): Fließbandarbeit 12 / 11 Wie kann man das verbessern? Pipelining: von 1 Ergebnis / 5 Takte zu einem Ergebnis / 1 Takt wird i.w. von der Hardware erledigt! 1 Instruktion Pipeline startup Latenz c 1 c 2 c 3 c 4... Vektor-CPUs haben die notwendige Speicherbandbreite, um Pipelines ohne Verzögerung zu "füttern" Prefetch erfolgt automatisch compare exponent shift Mantissa add mantissa normalize exponent gleichzeitige Arbeit an Elementen 14, 13, 12, 11, 10

Prinzipien der Vektorarchitektur (3): Multi-Track Pipelines 13 / 11 Noch besser: mehrere parallele Pipelines N p "Tracks" N p Ergebnisse pro Takt Voraussetzungen für gute Performance: Pipes beschäftigt halten! Compiler muss Vektorstrukturen im Code erkennen können Unabhängigkeit aufeinander folgender Operationen Abschätzung von Performancezahlen 14 / 11 Woher weiß man, ob ein Code die Ressourcen des Systems effizient nutzt? In vielen Fällen ist eine Abschätzung der zu erwartenden Performance aus den Eckdaten der Architektur und der Codestruktur möglich Randbedingungen der Architektur (maschinenabhängig): Speicherbandbreite GWorte/s Fließkommaleistung GFlop/s daraus abgeleitet: Speicherbandbreite[ Worte / s] Maschinenbalance B m = Fließkommaleistung [ Flop / s] Typ. Werte (Hauptspeicher): 0.2 W/Flop (Itanium2 1.0 GHz) 0.125 W/Flop (Xeon 3.2 GHz), 0.5 W/Flop (NEC SX8)

Abschätzung von Performancezahlen 15 / 11 Zu erwartende Performance auf Schleifenebene? Codebalance: B c = Datentransfer (LD/ST)[ Worte] arithmetische Operationen [ Flops] erwarteter Bruchteil der Peak Performance ("Lightspeed"): Beispiel? B l = B m c Beispiel für Lightspeed-Berechnung: Vektortriade 16 / 11 Kernel benchmarks: Charakterisierung des Prozessors Resultate können i.a. leicht verstanden und verglichen werden Erlauben oft eine obere Schranke für die Leistungsfähigkeit eines Systems für eine spezifische Anwendergruppe abzuschätzen Beispiele: streams, cachebench, Vektortriade: Charakterisierung der erzielbaren Speicherbandbreiten REAL*8 (SIZE): A,B,C,D DO ITER=1,NITER DO i=1,n A(i) = B(i) + C(i) * D(i) ENDDO <OBSCURE> ENDDO Codebalance: Recheneinheiten: 2 Flops / i-iteration Bandbreite: (3 LD & 1 ST) / i-iteration B c = 4/2 = 2 W/Flop

Lightspeed-Berechnung: Vektortriade auf Itanium2 (1) 17 / 11 Funktionseinheiten: Performance allein durch die arithm. Einheiten beschränkt: 2 MULTIPLY-ADD (2 MADD) Pipelines Vektortriade: 2 Iterationen 1 Takt 4 Flops / Takt Peak Performance Die Daten liegen jedoch i.a. nicht in den Funktionseinheiten/Registern, sondern im L2 Cache: Bandbreite von 2 LD und (2 LD oder 2 ST) pro Takt (=32 GB/s bei 1 GHz) Maschinenbalance: 4/4 = 1 W/Flop Vektortriade: B m /B c = 0.5 ½ Peak Performance (2 GFlop/s) Lightspeed-Berechnung: Vektortriade auf Itanium2 (2) 18 / 11 L3 Cache: komplexe Situation, weil immer aus L2 geladen wird Abschätzung: halbe Performance wie aus L2 Speicher: Bandbreite von 2 LD oder 2 ST mit 400 MHz (Frequenz des Speicherbuses!) Maschinenbalance: 0.8/4 = 0.2 W/Flop Achtung: "Read for Ownership" benötigt einen zusätzlichen LD vor jedem ST, d.h. effektive Codebalance: B c = 2.5 W/Flop Vektortriade: B m /B c = 0.08 8% der Peak Performance (320 MFlop/s)

Lightspeed-Berechnung : Vektortriade auf Itanium2 Messung 19 / 11 HP zx6000 efc Compiler: Memory-Layout kann starken Einfluss auf die Performance im Cache haben! ½ Spitzenleistung (L2 Cache) Hauptspeicher: Theorie:320 MFlop/s Praxis: 260 MFlop/s (81 %) Kernel benchmarks: Vektor-Triade Cache- vs. Vektorsysteme 20 / 11 NEC SX6e Max. Performance 2.0 GFlop/s Welcher Rechner für welches Problem? Cache basierte Systeme: Häufige Nutzung kleiner Datensätze Vektorrechner: Seltener/unregelmäßiger Zugriff auf (sehr) große Datensätze

Kernel benchmarks: streams Dichtung und Wahrheit 21 / 11 300000 250000 200000 Streams Triade (B c =1.5 W/Flop) Memory-Bandbreite aus dem Verkaufsprospekt 213024 MB/s 150000 100000 32249 31982 124601 50000 0 IBM p690 (32 CPUs) NEC SX 6 (1 CPU) SGI Altix (64 I2 CPUs) NEC SX6 (8 CPUs) http://www.cs.virginia.edu/stream/standard/bandwidth.html 22 / 11 Möglichkeiten und Grenzen der Parallelität

Paralleles Rechnen aus der Vogelperspektive 23 / 11 "Parallelrechnen" = mehr als eine CPU zur Lösung eines numerischen Problems einsetzen Begriffe Skalierbarkeit S(N): Wieviel mal schneller wird mein Problem gelöst, wenn es auf N CPUs läuft statt auf einer? Performance P(N): Wieviele Rechenoperationen pro Sekunde macht das Programm mit N CPUs im Vergleich mit einer CPU? parallele Effizienz ε(n)=s(n)/n: Welchen Bruchteil jeder CPU nutzt das parallele Programm? Viele numerische Aufgaben sind im Prinzip parallelisierbar Lösen linearer Gleichungssysteme: Ax = b Eigenwertberechnungen: Ax = λx Zeitpropagation: p(x,t+1)=f (p(x,t)) Grenzen der Parallelität 24 / 11 Idealfall: Arbeit ist komplett parallelisierbar seriell seriell seriell seriell Realität: rein serielle Anteile begrenzen Skalierbarkeit seriell seriell Kommunikation veschlimmert die Situation noch weiter

Grenzen der Parallelität: ein Modell T(1) = s+p = serielle Rechenzeit 25 / 11 parallel: T(N) = s+p/n+nk parallelisierbarer Anteil: p = 1-s rein serieller Anteil s Bruchteil k für Kommunikation zwischen je 2 Prozessoren Allgemeine Formel für Skalierbarkeit (worst case): Fall k=0: "Amdahl's Law" S (strong scaling) k p ( N ) = T (1) T ( N ) = s + 1 s N 1 + Nk Grenzen der Parallelität 26 / 11 Limes großer Prozessorzahlen: bei k=0: Amdahl's Law! lim 0 ( N ) = S p N unabhängig von N 1 s bei k 0: einfaches Kommunikationsmodell liefert: S k p ( N) N 1 >> 1 Nk Die Realität ist noch viel schimmer: Load Imbalance Overhead beim Starten paralleler Programmteile

Grenzen der Parallelität 27 / 11 10 9 8 7 S(N) 6 5 4 s=0.01 s=0.1 s=0.1, k=0.05 3 2 1 0 1 2 3 4 5 6 7 8 9 10 # CPUs Grenzen der Parallelität: Ist Amdahl's Law unschlagbar? 28 / 11 Kommunikation ist nicht immer rein seriell nichtblockierende Netzwerke können gleichzeitig verschiedene Kommunikationsverbindungen schalten Faktor Nk im Nenner wird zu log k oder k (technische Maßnahme) u.u. kann Kommunikation mit nützlicher Arbeit überlappt werden (Implementierung, Algorithmus):

Grenzen der Parallelität: Erhöhen der parallelen Effizienz 29 / 11 Vergrößern des Problems hat oft eine Vergrößerung von p zur Folge p skaliert, während s konstant bleibt Anteil von s an der Gesamtzeit sinkt Nebeneffekt: Kommunikationsaufwand sinkt eventuell s s p/n p Parallele Effizienz steigt, wenn Problemgröße mit N skaliert wird! s p s p/n Grenzen der Parallelität: Erhöhen der parallelen Effizienz 30 / 11 Quantifizierung? Betrachte zunächst k=0! Sei wie vorher s+p=1 Perfekte Skalierung: Laufzeit bleibt konstant bei Vergrößerung von N Skalierbarkeit ist keine relevante Größe mehr! Parallele Performance = Arbeit/Zeit für Problemgröße N mit N CPUs Arbeit/Zeit für Problemgröße 1 mit 1 CPU s + pn P s ( N ) = = s + pn = s + (1 s) N s + p Gustafsson's Law ("weak scaling") Linear in N aber die Defnition der "Arbeit" spielt eine große Rolle!

31 / 11 Designprinzipien moderner Parallelrechner Moderne Parallelrechner Schematischer Aufbau 32 / 11 (1) Bus-basierte SMP- Systeme C C C C Speicher 2-4 Prozessoren mit einem Speicherkanal Itanium / Xeon / Power4 / NEC SX (2) Skalierbare Sharedmemory Systeme (ccnuma) C C C C C C C C Speicherbandbreite skaliert Sehr schnelle interne Verbindungen (0.8 GB/s 6.4 GB/s) SGI Origin / Altix, IBM p690 (ähnlich), Opteron-Knoten 4-256 Prozessoren (3) Cluster von Rechenknoten (Architektur (1) oder (2)) C C Netzwerk Speicherbandbreite skaliert, aber verteilter Speicher Netzwerk: 50 1000 MByte/s 4 100000 Prozessoren

Moderne Parallelrechner 33 / 11 Bei allen 3 Varianten (heute): Dual-Core möglich d.h.: in einem "Sockel" steckt ein Chip mit 2 oder mehr (etwas langsameren) CPUs auf einem Stück Silizium Vorteil: potenziell höhere Rechenleistung pro Sockel bei nahezu gleicher Leistungsaufnahme ("Macho-FLOPs") Nachteil: Speicheranbindung der einzelnen CPU wird schlechter Dominant bei Parallelrechnern: Cluster mit SMP-Knoten Kompromiss bzgl. Speicherbandbreite pro CPU skalierend bis mehrere 10000 CPUs (akt. Rekord: 131072) Spezialfall: "Constellation"-Systeme CPUs/Knoten > # Knoten SGI Altix (HLRB II): ccnuma-architektur 34 / 11 Parallele Programmierung in der Strömungsmechanik

Programmierparadigmen 35 / 11 Parallele Programmierung beginnt immer mit der Identifikation von Parallelität im Code Datenparallelität: Welche Teile eines großen Datensatzes (Feld, Matrix, ) können im Prinzip gleichzeitig bearbeitet werden? Beispiel: datenparallel auf i-ebene do i=1,n do j=1,n A(i,j)=A(i,j-1)*B(i,j) nicht datenparallel auf j-ebene funktionelle Parallelität: Welche funktionalen Einheiten im Programm können im Prinzip gleichzeitig ablaufen? in der Praxis selten benutzt Programmierparadigmen 36 / 11 Abhängig von der Rechnerarchitektur bieten sich 2 Zugänge an: Distributed-Memory-Systeme Ein paralleles Programm besteht aus mehreren Prozessen. Jeder Prozess hat seinen eigenen Adressbereich und keine Zugriff auf die Daten anderer Prozesse. Notwendige Kommunikation findet durch Übermittlung von Messages statt. Standard: MPI Shared-Memory-Systeme (auch ccnuma) Ein paralleles Programm besteht aus mehreren Threads. Alle Threads haben Zugriff auf den kompletten Datenbereich. Standard: OpenMP (Compiler-Direktiven)

ccnuma-systeme: Placement-Problematik 37 / 11 Bei ccnuma-systemen (SGI Altix, Origin) sind Verbindungen zwischen Knoten i.a. langsamer als die lokale Speicherbandbreite Folge: Es muss darauf geachtet werden, dass jede CPU auf den benötigten Speicher möglichst lokal zugreifen kann Problem dabei: First Touch Policy mappt Speicherseiten dort, wo sie das erste Mal angefasst werden (i.a. bei der Initialisierung) Wenn die Initialisierung nicht in gleicher Weise parallelisiert ist wie die Rechenschleifen, folgt eine sehr ungünstige Zugriffsstruktur: P P P P Gebietszerlegung 38 / 11 Unabhängig von Programmiermodell: Parallelisierung von CFD- Codes läuft oft über "Domain Decomposition" Zerlegung des Rechengebietes in N Teile eines für jede CPU P1 P2 P3 P4

Beispiel für Gebietszerlegung: Red-Black Gauss-Seidel Solver 39 / 11 Problem: Temperaturverteilung auf quadratischer Platte mit Randbedingungen Lösung der Laplace-Gleichung: ΔT = Numerik: Abb. auf NxN-Gitter Algorithmus: "Relaxation" T an einem Punkt = Mittelwert der 4 Nachbarn Iteration: Update erst der roten, dann der schwarzen Punkte Parallelisierung mittels Gebietszerlegung Was macht man mit den Randzellen eines Gebietes? 0 Beispiel für Gebietszerlegung : Red-Black Gauss-Seidel Solver 40 / 11 Lösung des Randzellenproblems durch "Geisterzellen" (ghost cells) jedes Gebiet hat eine zusätzliche Schicht Randzellen, wo es an ein anderes Gebiet grenzt Nach jeder Iteration (red/black Sweep) werden die Geisterzellen mit dem Inhalt der Randzellen des Nachbarn beschrieben Gebiet 1 Gebiet 2

Gebietszerlegung und Kommunikation: Kostenmodelle 41 / 11 Wirkt sich die Kommunikation auf die Skalierbarkeit aus? Annahmen: keine Überlappung zwischen Kommunikation und Rechnung, nichtblockierendes Netzwerk, 3D-Problem 2 Fälle: (1) strong scaling: Problemgröße konstant, N steigt Latenz L wird wichtig Kommunikationszeit = k/n 2/3 +L Skalierung sättigt langsamer und auf niedrigerem Niveau! S p ( N) = s + 1 s N 1 + kn 2/3 + L N >> 1 1 s + L (2) weak scaling: Problemgröße steigt proportional zu N Arbeit pro CPU bleibt konstant, ebenso die Kommunikation k Performance skaliert langsamer, aber noch linear P( N) = s + pn s + p + k = s + (1 s) N 1+ k 42 / 11 CFD Applikationsperformance SIP Solver nach Stone

CFD kernel: Strong Implicit Solver 43 / 11 Strongly Implicit Procedure (SIP) nach Stone wird in Finite-Volumen Paketen oftmals zur Lösung des linearen Gleichungssystems A x = b verwendet Beispiele: LESOCC, FASTEST, FLOWSI (LSTM, Erlangen) STHAMAS3D (Kristalllabor, Erlangen) CADiP (Theoret. Thermodynamik und Transportprozesse, Bayreuth) SIPSolver: 1) Unvollständige LU-Zerlegung von A 2) Serie von Vorwärts-/Rückwärts-Substitutionen und Residuenberechnungen Ursprüngliches Testprogramm (M. Peric): ftp.springer.de:/pub/technik/peric Optimization: HPC-Gruppe RRZE SIPSolver: Datenabhängigkeiten und naive Implementierung 44 / 11 Vorwärts-Substitution (naive 3D version) Datenabhängigkeit: (i,j,k) {(i-1,j,k);(i,j-1,k);(i,j,k-1)} do k = 2, kmax do j = 2, jmax do i = 2, imax RES(i,j,k) ={RES(i,j,k) $ - LB(i,j,k)*RES(i,j,k-1) $ - LW(i,j,k)*RES(i-1,j,k) $ - LS(i,j,k)*RES(i,j-1,k) $ }*LP(i,j,k) Datenabhängigkeit verhindert Vektorisierung oder einfache Parallelisierung erlaubt hohe örtliche Datenlokalität: Alle Elemente der Cachelines werden genutzt. erlaubt reuse von Cachelines: RES(i,j,k),RES(i-1,j,k) Geeignete Implementierung für Cache-basierte Prozessoren!

SIPSolver: Naive 3D Implementierung: Einzelprozessorperfromance 45 / 11 Gitter=91 3 (Problemgröße: 100 MB); 3D Version & naive Compiler-switches Performance: 1 Flop/Wort 700 Obere Grenze für Itanium2: ~800 MFlop/s 600 IBM Power4 (p690) MFlop/s 500 400 300 200 100 Itanium2 (0.9 GHz; 1.5 MB L3) Itanium2 (1 GHz; 3 MB L3) Xeon 2,66 GHz Opteron 1,6 GHz (ifc) Opteron 1,6 GHz (pgf90) 0 SIPsolver: hyperplane Implementierung 46 / 11 Elimination der Datenabhängigkeit (i,j,k)<-{(i-1,j,k);..} durch Umgruppierung: Innerste Schleife über eine hyperplane: Alle Punkte i+j+k=l(mit festem l) liegen in der hyperplane l, sind voneinander unabhängig greifen nur auf Datenpunkte in der hyperplane l-1 (Vorwärtssubstitution) zu. Einfache Vektorisierung/ Parallelis. der inneren Schleife Verlust der Datenlokalität do l=1,hyperplanes n=icl(l) do m=n+1,n+lm(l) ijk=ijkv(m) RES(ijk) =(RES(ijk) - $ LB(ijk)*RES(ijk-ijMax)- $ LW(ijk)*RES(ijk-1) - $ LS(ijk)*RES(ijk-iMax) ) $ *LP(ijk) Geeignete Implementierung für Vektorprozessoren

SIPsolver: hyperplane Implementierung 47 / 11 SIPSolver: hyperplane Leistungszahlen 48 / 11 2000 NEC SX6 (hp) MFlop/s 1500 1000 500 0 1 2 4 NEC SX5e (hp) Itanium2 (1 GHz) (hp) * Itanium2 (1 GHz) (3D) Prozessoren Gute Skalierung für Itanium2 SMP System, aber schlechte absolute Performance Gute absolute Einzelprozessorperformance für NEC SX6 Vektorprozessor

SIPSolver: pipeline parallel processing Idee und Implementierung 49 / 11 Ziel: Parallelisierung (Shared- Memory) und Erhalt der Datenlokalität der 3D Implementierung Vorgehensweise: 3D Implementierung (i,j,k)<-{(i-1,j,k);..} Parallelisierung in j Richtung Aufheben der Datenabhängigkeiten durch Synchronisieren nach jedem Schritt in k - Richtung $omp parallel private(.) do l =2, kmax+numthreads-2 threadid=omp_get_thread_num() k = l threadid if((k.ge.2).and.(k.le.kmaxm)) then do j = js(threadid),je(threadid) do i = 2, imax RES(i,j,k)={RES(i,j,k-1)- $ LB(i,j,k)*RES(i,j,k-1) $ endif $omp barrier $omp end parallel Thread 0 Thread 1 SIPSolver: pipeline parallel processing Schematische Darstellung 50 / 11 k Thread 0 A B C t 1 B C j i Barrier 2 C Parallelisierung sinnvoll, falls kmax, jmax >> #Threads Automatische Parallelisierung der 3D Version durch Hitachi-Compiler! Beste Version für große SMP Knoten mit Cache-basierten Prozessoren

SIPSolver: SMP Skalierbarkeit (Pipeline Parallel Processing) 51 / 11 2000 NEC SX6 (hp) MFlop/s 1500 1000 500 0 1 2 4 NEC SX5e (hp) HP rx5600: Itanium2 (1 GHz) (ppp) HP rx5670: Itanium2 (1 GHz) (hp) SGI-Altix: Itanium2 (0.9 GHz) (ppp) Gitter: 91**3 Prozessoren HP rx5670: 4-fach Itanium2-System mit nur einem Speicherkanal für 4 Prozessoren (Speed-Up(4)=1,5) SGI Altix: 32-fach Itanium2-System mit einem Speicherkanal für jeweils 2 Prozessoren (Speed-Up(4)=2,0) 2500 2000 SIPSolver: SMP Performance vs. Vektorprozessor NEC SX6 52 / 11 MFlop/s 1500 1000 500 SGI Altix IBM p690 HP rx5600 Hitachi 0 1 2 4 8 16 Prozessoren Gitter: 201**3 IBM p690: 32-fach Power4-System mit einem Speicherkanal für jeweils 2 Prozessoren (Speed-Up(16)=7) Hitachi SR8000: 8-fach Power3 -System mit einem Speicherkanal pro Prozessor (Speed-Up(8)=7.2)

SIPSolver (ppp): NUMA Placement Problematik 53 / 11 Performancevergleich Altix Falsches Placement Korrektes Placement SIPSolver (ppp): NUMA Placement Problematik 54 / 11 Konkrete Maßnahme: korrekte Parallelisierung der Initialisierungsschleife!$omp parallel do private(i,j) do k=1,kmax do j=1,jmax do i=1,imax T(i,j,k)=0. do k=1,kmax!$omp parallel do private(i) do j=1,jmax do i=1,imax T(i,j,k)=0.

Zusammenfassung 55 / 11 Ergebnisse für CFD-Applikationen: Speicherbandbreite ist die entscheidende Einflussgröße Effiziente Nutzung schneller, Vermeidung langsamer Datenpfade ist Pflicht! Parallelisierung muss immer auch parallele Effizienz berücksichtigen Kommunikationsaufwand beachten strong/weak scaling Parallele Skalierbarkeit der Problemstellung ist Voraussetzung, um SMP Systeme/Cluster in Konkurrenz zu Vektorprozessoren zu setzen Bei ccnuma-systemen ist auf korrektes Placement zu achten! 56 / 11 Vielen Dank!

Links und Referenzen 57 / 11 HPC-Dienste und Rechner: RRZE: http://www.rrze.uni-erlangen.de/hpc/ LRZ: http://www.lrz-muenchen.de/services/compute/hlr/ HLR Stuttgart: http://www.hlrs.de/ NIC Jülich: http://www.fz-juelich.de/nic/ HPC allgemein: KONWIHR: http://konwihr.in.tum.de/ TOP500: http://www.top500.org/ Benchmarks: http://www.spec.org/ LSTM: http://www.lstm.uni-erlangen.de/