Architektur paralleler Rechnersysteme - Effiziente HPC Systeme -



Ähnliche Dokumente
Parallele Programmierung mit OpenMP

Architecture of Parallel Computer Systems - Efficient HPC Systems -

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn

Architecture of Parallel Computer Systems - HPC Architecture -

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?

Projektseminar Parallele Programmierung

Architektur paralleler Rechnersysteme - Effiziente HPC Systeme -

Threads Einführung. Zustände von Threads

Threads und OpenMP. Frank Mietke Cluster- & Gridcomputing Frank Mietke 7/4/04

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Architektur paralleler Rechnersysteme - Effiziente HPC Systeme -

Programmierung von Parallelrechnern

Parallele Programmierung

Systeme 1. Kapitel 10. Virtualisierung

OpenMP am Beispiel der Matrizenmultiplikation

Master-Thread führt Programm aus, bis durch die Direktive

PROLAG WORLD 2.0 PRODUKTBESCHREIBUNG SERVERSYSTEM, CLUSTERSYSTEME FÜR PROLAG WORLD

4D Server v12 64-bit Version BETA VERSION

Lizenzierung von Windows Server 2012

Hochleistungsrechnen für Wissenschaft und Wirtschaft im internationalen Verbund

Installation der SAS Foundation Software auf Windows

Big Data in der Forschung

1. Übung zu "Numerik partieller Differentialgleichungen"

0. Einführung. C und C++ (CPP)

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

Übung: Verwendung von Java-Threads

Architecture of Parallel Computer Systems - Efficient HPC Systems -

1 Was ist das Mediencenter?

Super rechnen ohne Superrechner Oder: Was hat das Grid mit Monte Carlo zu tun?

Step by Step Webserver unter Windows Server von Christian Bartl

Das Leibniz-Rechenzentrum der Bayerischen Akademie der Wissenschaften

Einige Grundlagen zu OpenMP

Anleitung zur Nutzung des SharePort Utility

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Mikrocontroller Grundlagen. Markus Koch April 2011

Version 0.3. Installation von MinGW und Eclipse CDT

Kommunikation, Information und mobile verteilte Systeme (KIS)

WIE ERHÖHT MAN DIE EFFIZIENZ DES BESTEHENDEN RECHENZENTRUMS UM 75% AK Data Center - eco e.v. 1. Dezember 2009

Verteilte Systeme Prof. Dr. Stefan Fischer

Formular»Fragenkatalog BIM-Server«

OSEK-OS. Oliver Botschkowski. PG AutoLab Seminarwochenende Oktober AutoLab

Internet Explorer Version 6

Lizenzierung von System Center 2012

12. Dokumente Speichern und Drucken

Zweite Umfrage zur Bedarfsermittlung von Ressourcen zum wissenschaftlichen Rechnen an der TU Dortmund

Native Zeichenketten (C-Strings)

peer-to-peer Dateisystem Synchronisation

GeoPilot (Android) die App

Konzepte der Informatik

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Projektgruppe Algorithmen für die Cloud-unterstützte 3-D-Darstellung auf mobilen Endgeräten

XSC. Reimar Bauer, Rebecca Breu. Dezember Forschungszentrum Jülich. Weihnachtsfeier, 10. Dezember

Synchronisations- Assistent

Computergrundlagen Moderne Rechnerarchitekturen

MPI-Programmierung unter Windows mit MPICH2. Installieren von MPICH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen. Christian Terboven

Systemanforderungen (Mai 2014)

Systemaspekte Verteilter Systeme Wintersemester 2004/05

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

Computergrundlagen Moderne Rechnerarchitekturen

Installation von Office 365 auf einem privaten PC

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Lizenzierung von Windows Server 2012 R2. Lizenzierung von Windows Server 2012 R2

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Lokale Installation von DotNetNuke 4 ohne IIS

SolarWinds Engineer s Toolset

Objektorientierte Programmierung. Kapitel 0: Begrüssung

Tutorium Rechnerorganisation

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

Whitepaper. Produkt: combit Relationship Manager / address manager. Dateiabgleich im Netzwerk über Offlinedateien

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

Avira Professional Security/ Avira Server Security Version 2014 Release-Informationen

Einführung in Eclipse und Java

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Shared-Memory Programmiermodelle

Shared-Memory Programmiermodelle

WINDOWS 8 WINDOWS SERVER 2012

RTEMS- Echtzeitbetriebssystem

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

Fragebogen zur Evaluation der Vorlesung und Übungen Computer Grafik, CS231, SS05

Excel beschleunigen mit dem mit Windows HPC Server 2008 R2

Einfache und effiziente Zusammenarbeit in der Cloud. EASY-PM Office Add-Ins Handbuch

Internet der Dinge (Internet of Things, IoT)

Lizenzierung von SharePoint Server 2013

MULTI-TIER RECHENZENTRUM - EIN DESIGN DER ZUKUNFT? Patrick Pulvermüller

Universität Bielefeld Technische Fakultät AG Rechnernetze und verteilte Systeme. Vorlesung 4: Memory. Wintersemester 2001/2002. Peter B.

Höhere Programmierkonzepte

Installation einer C++ Entwicklungsumgebung unter Windows --- TDM-GCC und Eclipse installieren

C++ mit Eclipse & GCC unter Windows

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Windows Server 2012 R2 Essentials & Hyper-V

Energieeffizienz in Rechenzentren

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

transfer.net Erste Schritte mit transfer.net

Umstieg auf Microsoft Exchange in der Fakultät 02

Lizenzen auschecken. Was ist zu tun?

Lizenzierung von SharePoint Server 2013

GRS SIGNUM Product-Lifecycle-Management

Transkript:

Architektur paralleler Rechnersysteme - Effiziente HPC Systeme - WS 12/13 Nr. L.079.05706 Master-Studiengang Informatik, V2/Ü1 www.uni-paderborn.de/pc2 Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 1 Dozent: Jens Simon (PC²) Organisatorisches Vorlesungen: Montags, 13:15 14:45, Hörsaal O2 Übungen: Montags, 15:00-15:45, ggf. O2.267 Aktuelle Informationen zur Veranstaltung: http://www.uni-paderborn.de/pc2/people/jens-simon/courses/ Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 2 1

Leistungsnachweise Teilnahme an Vorlesungen (2 SWS) Übungen (1 SWS) Lösung der Übungsaufgaben Musterlösungen? Falls ja, dann durch Teilnehmer erarbeitet. Prüfung Mündliche Modulprüfung Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 3 Vorlesungsbetrieb Folien liegen nach der Vorlesung auf der Web- Seite der Veranstaltung Es wird kein Skript zur Vorlesung geben Zielsetzung der Vorlesung Kurzeinführung in parallele Programmiersprachen und Programmiermethoden Überblick über Architekturen von Parallelrechnern Unterschiedliche Aspekte der Effizienz Vom Prozessoren bis hin zum Kommunikationsnetzwerk Vom Server bis hin zum Data-Center Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 4 2

Übungsbetrieb Theoretische Aufgaben begleitend zur Vorlesung Praktische Übungen auf Rechnersysteme des PC² Anmeldung bitte per Email an mich (Name, IMTaccount) Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 5 Zur Person Dr. rer. nat. Jens Simon Werdegang: 1992 bis 1998: Universität Paderborn / PC² 1999 bis 2001: Konrad-Zuse Institut Berlin (ZIB) seitdem: PC² Lehre: Vorlesungen Projektgruppen Forschung: Rechnersysteme, Spezialprozessoren Kommunikationsnetzwerke Middleware für HPC-Systeme Dienstleistung: Anträge schreiben Projektarbeit HPC-Beratung Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 6 3

Literatur Rechnerarchitektur Culler, D. E.; Singh, J. P.; Gupta, A.: Parallel computer architecture : A hardware/software approach, 1999 Hwang, K.: Advanced Computer Architecture, 1993 Hennessy, J.; Patterson D.: Computer Architecture A Quantitative Approach, 1996 Tanenbaum, A.; Computerarchitektur Strukturen Konzepte Grundlagen, 2005 Barros L.A., Hölzle U; Datacenter As A Computer, 2009 Kaxiras S., Martonosi, M.; Computer Architecture Techniques for Power-Efficiency, 2008 Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 7 Parallele Programmierung Literatur Andrews, G. R.: Multithreaded, Parallel, and Distributed Programming, 2000 Leopold, C.: Parallel and Distributed Computing a survey of models, paradigms, and approaches, 2001 Tanenbaum, A.: Moderne Betriebssysteme, 2009 Groop, W.; Lusk, E.; Skjellum, A.: Using MPI Portable Parallel Programming with the Message-Passing Interface, 1999 Groop, W.; Lusk, E.; Thakur, R.: Using MPI-2 Advanced Features of the Message-Passing Interface, 1999 Chapman, B.; Jost, G.; van der Pas, R.: Using OpenMP Portable Shared Memory Parallel Programming, 2007 Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 8 4

Danksagung Einige Teile der Vorlesung sind angelehnt an das Buch und die Unterlagen zu "Parallel Computer Architecture - A Hardware / Software Approach" von Culler, Singh und Gupta Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 9 Paralleles Rechnen aus Sicht eines Anwenders Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 10 5

Warum Paralleles Rechnen? Die Welt ist höchst parallel ein bewährtes Prinzip Physikalische Abläufe sind parallel Kristallwachstum, Gravitationsfelder, Chemische Reaktionen, Soziale und Arbeitsprozesse sind parallel Ameisenkolonie, Straßenverkehr, Produktionsstätten, Finanzwirtschaft, Universitäten, Politik, Menschliches Gehirn, Sensorik, Lernverhalten sind parallel Denken, Sehen, Fühlen, Evolutionsprozesse, Eine Koordination der größtenteils unabhängigen Prozesse ist aber in den meisten Fällen notwendig Die Parallelität kann auch bei der Beschreibung der Abläufe genutzt werden Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 11 Warum Parallelverarbeitung? Einzelprozessorsysteme bieten nicht genügend Ressourcen für viele Anwendungsbereiche Trotz des rasanten Geschwindigkeitszuwachses bei PCs. Sogenannte Grand-Challange Anwendungen benötigen bereits heute um einige Größenordnungen mehr Rechenleistung als die eines einzelnen PCs. Klimaveränderung, Bioinformatik, Astrophysik, Verzicht auf ökonomisch und ökologisch belastende Experimente - dafür Computer-Simulationen Crash-Tests, Nuklearkatastrophen, Strömungsmechanik, Kopplung verschiedener Methoden für das Auffinden einer besseren Lösung Kooperative Systeme Redundante Systeme für höhere Sicherheit und Verfügbarkeit Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 12 6

Most Powerful Supercomputer 06/2012 Sequoia, BlueGen/Q, IBM Lawrence Livermore National Lab, USA 98 304 compute nodes, each PowerPC-A2, 18 Cores processor, 1.6GHz 16 GByte main memory Proprietary communication network 5 d Torus/Mesh total 1 572 864 processor cores ca. 1 600 TByte main memory 96 racks 20.13 PFlop/s peak performance 16.32 PFlop/s Linpack performance ca. 8 MWatt power consumption 1 PetaFlop/s = 10 15 Flop/s = 1 Quadrillion arithmetic operations per second Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 13 Special Purpose Supercomputer 11/2010 Tianhe-1A (TH-1A) Supercomputer National Supercomputing Center in Tianjin, China 7 168 compute nodes, each 2 Intel Xeon X5670 (2 x 6 Cores) 1 Nvidia Tesla M2050 (1 GPUs) 32 GByte main memory Proprietary communication network 160 Gbit/s Galaxy chip total 14 336 Intel Xeon processor (86 016 Cores) 7 168 Nvidia GPUs (3.2 Mio. Stream Processing Units) 229 TByte main memory 4.7 PFlop/s peak performance 2.57 PFlop/s Linpack performance 4 MWatt power consumption Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 14 7

Fastest European Supercomputer 6/2012 SuperMUC, idataplex, IBM Leibniz Rechenzentrum Garching (LRZ) 2.89 PetaFLOP/s Linpack performance 9 216 servers, each with two Intel E5-2680 InfiniBand FDR10 interconnect total 147 456 cores with 2.7 GHz > 300 TByte main memory 10 PByte Harddisk capacity 3.42 MWatt power consumption Investment: ca. 48 Mio. Operation start: June 2012 Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 15 Supercomputer wird zum Mobiltelefon Bestimmung der Leistungsfähigkeit durch den Linpack-Benchmark 1979: Cray 1 und Fortran 3.4 MFlop/s $5 - $9 Mio. 5.25 t 115 kw 30 Jahre 1 : 1.5 13.000 : 1 40.000 : 1 25.000 : 1 2010: Smartphone Motorola Milestone XT720 mit Android 2.1 und Java 5.2 MFlop/s $500 139 g ca. 5 Watt Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 16 8

Stete Leistungszunahme Technik und Wissenschaft entwickelt sich rasch weiter (exponentielles Wachstum) Leistungsfähigkeit des durchschnittlichen menschlichen Gehirns bleibt anscheinend konstant Rechenleistung des Gehirns angenommen als 100 TFlop/s (H. Moravec) oder auch 10 PFlop/s (R. Kurzweil) Speicherleistung der Synapsen ca. 2 Petabyte Gehirn: ca. 1.4 kg Gewicht, 20 Milliarden Nervenzellen, 15 20 Watt chemische Leistungsaufnahme Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 17 Einsatzgebiete von Parallelrechnern Forschung Klimawandel, Astrophysik, Produktentwicklung Mikrochip-Entwurf, Werkstofftests, Virtuelle Prototypen, Informationssysteme Datenbanken, Suchmaschinen, Wetterdienste, Virtuelle Umgebungen Fahrzeugsimulationen, Architekturplanungen, Gesundheitswesen Medikamentenentwicklung, Genomanalyse, Finanzdienstleistungen Fonds- u. Risikoanalysen, High-Frequency-Trading, Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 18 9

HPC in der Forschung Simulation dritte Säule in der Forschung, neben Theorie und Experiment sehr rechenintensiv und teilweise mit sehr hohem Speicherbedarf zur Untersuchung von sehr langsam oder sehr schnell ablaufenden Prozessen ohne störende äußere Einflüsse zur Vermeidung gefährlicher Experimente Nutzung unterschiedlicher Skalen Z.B. Physik: Astrophysik bis hin zur Quantenmechanik Kontinuumsmethode Molekulardynamik Quantenmechanik Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 19 Beispiel: LHC Computing Grid Beschleunigerring, Kollision unterschiedlicher Elementarteilchen für Higgs-Boson Nachweis Large Hadron Collider (LHC) im CERN liefert Messdaten ( Events ) >140 Rechenzentren in 33 Ländern 100.000 Server-Prozessoren für die Analyse der Messdaten 15 PetaBytes Gesamtspeicherkapazität (15 10 15 Byte) Mehrebenenstruktur Tier-0: CERN: Rohdaten Tier-1: vorberechnete Daten Tier-2: Datenverteilung und zentrale Rechenkapazitäten Tier-3: lokale Rechenzentren Tier-4: PCs der Wissenschaftler Simon, CERN 2006 Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 20 10

Beispiel: Google Data Center 45 Container, jeder mit Ca. 1 000 Server 250 kw Stromverbrauch ~ 4 bis 5 kw pro Rack Quelle: Google Google Server-Knoten (Stand 2010) 2 Prozessoren Proprietäre double-wide DIMMs einzelner Lüfter pro Knoten (im Netzteil) nur 12 Volt Stromversorgung zum Knoten 12 Volt USV (Batterie) Verkabelung nur von der Frontseite Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 21 Programmierung von Parallelrechnern Speichermodelle Gemeinsamer Speicher Verteilter Speicher Programmiermethoden Speichergekoppelt Nachrichtengekoppelt Programmierkonzepte Annotierung sequentieller Programme (OpenMP) Mehrere Ausführungsfäden - Threads (PThreads) Expliziter Nachrichtenaustausch - Message-Passing (MPI) Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 22 11

Speichermodell für Shared-Memory Programme virtueller Adressbereich der Prozesse P n physikalischer Adressbereich der Maschine P n private P 0 P 1 P 2 common physical addresses shared portion of address space private portion of address space P 2 private P 1 private P 0 private Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 23 Speichermodell für Message-Passing Programme Match Adresse Y Adresse X Send Q,X,t Receive P,Y,t lokaler Prozessadressbereich lokaler Prozessadressbereich Prozess P Prozess Q Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 24 12

Programmiermethoden Nachrichtengekoppelte Multiprozessorsysteme Prozesse kommunizieren mittels expliziten Nachrichtenaustausch Prozess 1 : send(x); Prozess 2 : receive(x); Standards: MPI-1 und MPI-2 Speichergekoppelte Multiprozessorsysteme Zugriff auf gemeinsame Variablen y = x; oder shmem_get/shmem_put; Synchronisation notwendig lock(mutex_x);... unlock(mutex_x); Nutzung von Multithreading: leichtgewichtige Prozesse POSIX-Threads als Standard (PThreads) durchgängiges Konzept für Workstations, Multiprozessor- Workstations (SMPs) und für die großen verteilten Multiprozessorsysteme aller Arten Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 25 Programmierkonzepte POSIX Threads Gemeinsamer Speicher und Threads OpenMP Erweiterung der Programmiersprachen C/C++ und Fortran Message Passing Interface (MPI) Standardisierter Nachrichtenaustausch PGAS Partitioned Global Address Space Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 26 13

Ausführungsfäden Im Shared-Memory-Modell laufen mehrere Tasks (Threads), oftmals mit unterschiedlichen Funktionalitäten parallel ab. Die Tasks kommunizieren untereinander durch Schreiben und Lesen auf einem gemeinsamen Speicher. Zeit Struktur eines Multi-Threading- Programms Struktur eines OpenMP-Programms Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 27 PThreads PThreads ist ein POSIX-Standard für Threads. Bietet Funktionen zur Verwaltung von Threads. Schnittstelle zu vielen sequentiellen Programmiersprachen. Besteht aus einer Bibliothek und Header-Dateien Header-Datei #include <pthread.h> Bibliothek libpthread.a Compiler-Aufruf gcc pthread file.c icl /pthreads file.c # GNU Compiler, Linux # Intel Compiler, Windows Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 28 14

PThread-Bibliothek Erzeugen eines POSIX Threads int pthread_create (pthread_t *thread_id, const pthread_attr_t *attributes, void *(*thread_function)(void *), void *arguments); Terminieren eines POSIX Threads nach dem Rückkehr aus der Funktion durch Aufruf der Rückkehrfunktion int pthread_exit (void *status); Warten auf Terminierung eines Threads int pthread_join (pthread_t thread, void **status_ptr); Rückgabe der Identität des Threads pthread_t pthread_self (); Vergleich von Thread-Ids int pthread (pthread_t t1, pthread_t t2); Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 29 PThread-Bibliothek Mutex Variablen int pthread_mutex_init (mutex, attr); int pthread_mutex_destroy (mutex); int pthread_mutexattr_init (attr); int pthread_mutexattr_destroy (attr); int pthread_mutex_lock (mutex); int pthread_mutex_trylock (mutex); int pthread_mutex_unlock (mutex); Condition Variablen int pthread_cond_init (cond, attr); int pthread_cond_destroy (cond); int pthread_condattr_init (attr); int pthread_condattr_destry (attr); int pthread_cond_wait (cond, mutex); int pthread_cond_signal (cond); int pthread_cond_broadcast (cond); Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 30 15

Details zu PThreads in einer nachfolgenden Übung Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 31 Was ist OpenMP? OpenMP (Open Multi Processing) ist ein Standard für die Realisierung des Shared-Memory Programmiermodells compilerbasiert eine Erweiterung bestehender Programmiersprachen durch Direktiven für den Compiler einige wenige Bibliotheksroutinen Umgebungsvariablen (z.b. Anzahl Prozesse, Umgebungsvariablen) Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 32 16

OpenMP bietet Möglichkeiten von OpenMP Portabilität auf Shared-Memory Architekturen Skalierbarkeit inkrementelle Parallelisierung Unterstützt Daten-Parallelisierung Erweiterungen für FORTRAN und C/C++ Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 33 Geschichte von OpenMP OpenMP entwickelte sich aus Erweiterungen bestehender Programmiersprachen durch einzelne Hersteller wurde mit dem Ziel der Portabilität entwickelt ist ein Standard sein 1997 wurde von Cray, SGI, Digital Equipment Corporation, IBM, Intel und wird von vielen Hard- und Softwarefirmen unterstützt, darunter Sun, HP, Fujitsu. Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 34 17

Quellen zu OpenMP R. Chandra et al.: Parallel Programming in OpenMP, Academic Press 2001 Chapman, B.; Jost, G.; van der Pas, R.: Using OpenMP Portable Shared Memory Parallel Programming, 2007 http://www.openmp.org Intel Compiler (Linux non commercial use) http://www.intel.com/software/products/global/eval.htm icc openmp file.c # Linux x86 ecc openmp file.c # Linux x86-64 icl /Qopenmp file.c # Windows GCC Compiler Version 4.2 gcc fopenmp file.c Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 35 OpenMP Programming Modell OpenMP basiert auf dem Shared-Memory Modell Die Arbeitslast wird zwischen Threads verteilt Variablen können gemeinsam (shared) für alle Threads sein für jeden Thread dupliziert werden (private Nutzung) Threads kommunizieren durch gemeinsame Variablen Unbeabsichtigt gemeinsam genutzte Variablen können zu sogenannten race conditions führen: race condition: Das Ergebnis des Programms ändert sich, wenn sich das Laufzeitverhalten (scheduling) der Threads ändert Kontrolle von race conditions durch Synchronisierung, um Datenkonflikte zu vermeiden Nachlässige Verwendung von Synchronisierungsanweisungen kann zu dead locks führen Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 36 18

Umgebungsvariablen OMP_NUM_THREADS gibt die Anzahl der Threads während des Programmlaufs an ist die dynamische Anpassung der Anzahl der Threads aktiviert, so gibt sie die Zahl maximal verfügbarer Threads an setenv OMP_NUM_THREADS 4 OMP_SCHEDULE betrifft nur die for-schleife und parallelen for Direktiven die den Scheduling Type RUNTIME haben setzt den Scheduling Typ und die chunk size aller Schleifen setenv OMP_SCHEDULE GUIDED, 4 Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 37 OpenMP Direktiven #pragma Direktiven Format: #pragma omp directive_name [clause [[,] [clause],..] Unterscheidung von Gross- und Kleinbuchstaben bedingte Compilation #ifdef _OPENMP block #endif Include-File für Bibliotheksroutinen: #include <omp.h> Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 38 19

OpenMP Laufzeitbibliothek Benutzerfunktionen der Laufzeitbibliothek Anzahl der Threads numthreads = omp_get_num_threads(); Identifikation eines Threads myid = omp_get_thread_num(); Systemfunktionen der Laufzeitbibliothek Thread-Verwaltung starten, halten, stoppen, Thread-Steuerung Scheduling, Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 39 Parallele Region Block des Programms, der durch mehrere Threads parallel ausgeführt werden soll. Jeder Thread führt denselben Code aus C/C++: #pragma omp parallel [clause [clause].. ] new line structured block Clause kann eine der folgenden sein: private (list) shared (list) reduction (operator,list) - Reduktion auf den Variablen schedule (type [, chunk]) - Aufteilung der Iterationen auf Threads nowait - Thread nicht am Schleifenende synch Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 40 20

Fork-and-Join-Modell (1) Fork-Join Modell dient der parallelen Ausführung Begin der Ausführung mit einem einzigen Prozess (master process) paralleles Konstrukt geht aus Master Prozess hervor Start: Master Thread erzeugt Team von Threads Abschluss: Die Threads des Teams werden synchronisiert (implizite Barriere) Nur der Master Thread fährt mit der Ausführung fort Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 41 Beispiel: OpenMP hello #include <stdio.h> # ifdef _OPENMP # include <omp.h> # endif int main(int argc, char** argv) { int myid, numthreads; myid = -1; numthreads = 0; #pragma omp parallel private(myid) { # ifdef _OPENMP myid = omp_get_thread_num(); numthreads = omp_get_num_threads(); # endif printf("hello, world says thread %d of %d threads.\n", myid, numthreads); /* end omp parallel */ } return 0; } Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 42 21

Details zu OpenMP in einer nachfolgenden Übung Vorlesung: Architektur Paralleler Rechnersysteme WS12/13 J.Simon 43 22