Projekt Parallelrechnerevaluation

Größe: px
Ab Seite anzeigen:

Download "Projekt Parallelrechnerevaluation"

Transkript

1 Projekt Parallelrechnerevaluation Thema Autor Datum In Zusammenarbeit mit Fortran Parallelisierung Anna Fuchs September 2012 Petra Nerge Julian Kunkel Michal Kuhn Nathanael Hübbe

2 Überblick Fortran Architekturen Interner Parallelismus Externer Parallelimus OpenMP MPI Hybrid GPU Beispielanalyse Quellen 2

3 Fortran Überblick FORmula TRANslation Erste funktionsfähige höhere prozedurale Programmiersprache 1954 Backus, IBM Einsatz: Wissenschaft, Militär, Ingineurwesen Klima, Ströhmungsmechanik, Astronomie etc. Neben C/C++ führend auf dem HLR Markt 3

4 Fortran Versionen FORTRAN I 1954 FORTRAN II 1958 FORTRAN III FORTRAN IV 1961 FORTRAN FORTRAN /1978 FORTRAN HPF (High Performance Fortran) FORTRAN FORTRAN Co-Array Fortran FORTRAN /2010 Erster Compiler 1957 Einzelne Module kompilieren Nie veröffentlicht Überarbeitung von FORTRAN II Von ASA (American Standards Association) standardisiert print, if, include, character, open/close Modularisierung, dynamische Speicherverwaltung, Überladn der Operatoren forall, Trend: parallel Überarbeitung des Vorgängers Objektorientierung, C-Kompatibilität PGAS PGAS 4

5 Architekturen Gemeinsamer Speicher (shared memory) Mehrere CPUs/Rechner teilen sich den Speicher Schneller, weitgehen gleicher Speicherzugriff UMA (Uniform Memory Access) Verteilter Speicher (distributed memory) Jede CPU/Rechner hat jeweils eigenen Speicher Langsamer Zugriff auf fremden Speicher Mittelweg: Vernetzte Rechnerknoten mit gemeinsamem Speicher NUMA (Non-uniform Memory Access) Problem: Manipulation auf fremdem Speicher Cache / Hauptspeicher synchronisieren Lösung: virtueller gemeinsamer Speicher, Interconnects ccnuma First Touch Strategie Wer rechnet, der initialisiert auch 5

6 Interner Parallelismus PGAS (partitioned global address space) Parallel C Co-Array Fortran Co-Array Fortran Adressbereich logisch aufgeteilt Effeziente Unterteilung großer Datenmengen Komplexe Variablenverwaltung Ggf. guter Lastausgleich Codereplizierung, Daten aufgeteilt Asynchrone Ausführung der Kopien Syntaxerweiterung Von Intel aufgegriffen, verbreitet sich weiter SSE Intrinsics (Streaming SIMD Extension) Befehlssatzerweiterung der X86-Architektur (Intel) 16 Register mit 128 (256) Bit Breite 1 Taktzyklus für z.b. Addition, 4 Additionen in 1 Taktzyklus Hardwarenahes Programmieren aufwendig, aber gut Fortran intern, ermöglicht Vektorisierung forall Angeblich besser vom Compiler zu verarbeiten Funktioniert nicht wird später erläutert 6

7 Interner Parallelismus OpenMP (gemeinsamer Speicher) Schwerpunkt MPI (verteilter Speicher) Hybrid GPU Beschleuniger 7

8 Externer Parallelismus OpenMP Open Multi-Processing Programmierschnittstelle für C/C++ und Fortran Ab 1997 von Hardware- und Compilerherstellern entwickelt Für Fortran und C/C++ getrennt entwickelt, erst 2005 vereint Aktuelle Version OpenMP 3.1 (Juli 2011) Schwache Kontrolle über Variablen und Abläufe 8

9 Externer Parallelismus OpenMP - Einführung Kompilieren gfortran -fopenmp -o test test.f90 # für gfortran ifort -openmp -o bsp bsp.f90 # für Intel Fortran Compiler use omp_lib, NICHT include 'omp_lib.h' Mit!$omp Direktiven eingeleitet Wenn nicht mit OpenMP Flag kompiliert, als Kommentar gewertet Threads erzeugen/zertören!$omp parallel /!$omp end parallel Threadszahl!$omp parallel num_threads(10) omp_get_max_threads() Synchronisierung!$omp barrier Am Ende jedes parallelen Blocks eine implizite barrier, kann mit nowait aufgelöst werden 9

10 Externer Parallelismus OpenMP - Einführung Sequentieller Ablauf single Von 1 Thread ausgeführt - der als erster den Block erreicht master Von 1 Thread ausgeführt - der Master Thread Hinweis: wenn mehrere parallele Blöcke von wenigen sequentiellen Anweisungen getrennt: Sequentiellen Ablauf im parallelen Block erzwingen, spart Erzeugung und Zerstörung der Threads critical section Von allen Threads ausgeführt - aber nie gleichzeitig Ressorucenverwaltung shared (default), private, lastprivate, firstprivate firstprivate Initialisierung mit dem letzten Wert vor dem parallelen Block lastprivate Der Wert der letzten Iteration wird rausgeschrieben 10

11 Externer Parallelismus OpenMP - Einführung Schleifen!$omp do /!$omp end do Hier auch möglich Variablen zu deklarieren (private, shared etc.) Laufindex immer private, auch wenn explizit als shared deklariert canonical shape Keine dynamische Grenzenänderung Keine Sprünge: break, exit, return, goto Nur <, >, = erlaubt, keine.and.,.or. In- bzw. Dekrementierung nur mit +, - Verschachtelte Schleife mit collapse(x) zusammenführen Sonst nur äußere Iterationen aufgeteilt 11

12 Externer Parallelismus OpenMP - Einführung Scheduling keine aussagekräftigen Tests schedule (type, chunk) type [static / dynamic / guided / runtime / auto] static Aufteilung in Blöcke fester Größe [chunk] zur Kompilierzeit schlechtere Verteilung, weniger Overhead dynamic guided Aufteilung in Blöcke fester Größe [chunk] zur Laufzeit bessere Verteilung, mehr Ovrhead Immer kleiner werdende Blöcke zugewiesen (dynamisch) chunk ist nicht die Anfangsgröße max(chunk, i/pn), i Zahl der verbliebenen Iterationen, pn Zahl der Threads Weniger Blöcke als beim guided, mehr Overhead runtime setenv OMP_SCHEDULE dynamic, 10 auto Vom Compiler zur Laufzeit entschieden 12

13 Externer Parallelismus OpenMP - Einführung Folgendes ist nicht standardisiert Anzahl der Threads, falls nicht vorgegeben Anzahl der Ebenen beim nested parallelism Default scheduling chunk-größe runtime scheduling include 'omp_lib.h' oder use omp_lib Realisierung der atomic Anweisungen (ggf. wird es mit critical section gemacht) 13

14 Externer Parallelismus MPI MPI (Message Parsing Interface) de-facto Standard für verteilten Speicher Nachrichtenaustausch Interessante Gegenüberstellungen zum Testen: blockierend p2p vs. nichtblockierend p2p kollektiv vs. One-sided Intel Compiler vs. GNU Compiler mpich Bibliothek vs. openmpi Bibliothek 14

15 Externer Parallelismus Hybrid Mischung aus mehreren Strategien z.b. MPI und OpenMP nicht trivial 15

16 Externer Parallelismus GPU Beschleuniger GPU (grapfic processor unit) Ungeschlagen in Anzahl der Operation/Sekunde CUDA (Compute Unified Device Architecture) von Nvidia OpenCL (Open Computing Language) universeller Kernelquellcode von speziellen Compilern übersetzt, Rest von gewöhnlichen Virtueller Maschinencode zur Laufzeit für jeweilige GPU eingebettet - weitere Bibliotheken nötig Aufwendige Programmierung - wenig geeignete Anwendungen Keine gute Auslastung der Knotenpaare CPU/GPU y-achse: Peak in Gflops/sec 16 16

17 Analyse O3 Optimierung nicht immer hilfreich zum Testen Möglichst keine Systemaufrufe wie write Cluster - Masterknoten (!) sollte man nicht tun Mittelwert aus 3 Druchläufen sofern keiner der Wert signifikant abweicht Zeit mit time./run gemessen Geht alternativ mit call cpu_time() oder omp_get_wtime() pro Thread Hilfsschleife für aussagekräfitge Zeitmessung 17

18 Analyse Hilfsschleife 1 program race 2!NICHT NACHMACHEN 3 USE omp_lib 4 implicit none 5 INTEGER, PARAMETER :: second = INTEGER, PARAMETER :: third = INTEGER, PARAMETER :: first = INTEGER :: one, two, three 9 INTEGER, DIMENSION (1:second, 1:third) :: matrix = !$omp parallel num_threads(12) 11!$omp do 12 DO one = 1, first 13 DO three= 1, third 14 DO two = 1, second 15 matrix(two, three) = matrix(two, three) & 16 + two + three 17 END DO 18 END DO 19 END DO Es gibt immer wieder verschiedene Ergebnisse one nicht an der Berechnung beteiligt Nur äußere Iterationen aufgeteilt Gleichzeitiger Zugriff auf die Matrix Race Conditions Wettlaufsituationen Laufzeitabhängiges Ergebnis Intel Thread Checker Lösung: Hilfsschleife außerhalb des parallelen Blocks Unnötige Threasderzeugung 20!$omp end do 21!$omp end parallel 22 write(*,*) matrix(30,30) END program race

19 Beispiele Array - Initialisierung sec program init_imm_seq 2 implicit none 3 4 INTEGER, DIMENSION( ) :: a 5 a = 0 6 END program init_imm_seq init_seq Elemente init_imm_seq init_for_seq 1 program init_for_seq 2 implicit none 3 4 INTEGER, DIMENSION( ) :: a 5 INTEGER :: i 6 7 DO i = 1, a(i) = 0 9 END DO END program init_for_seq Elemente init_imm_seq init_for_seq ,003 0, ,01 0, ,06 0, ,49 1, ,72 9,16 Äquivalente Programme Einzeiler lässt sich nicht parallelisieren, Schleife schon Lohnt sich nur für letzte Messwerte OpenMP lässt so viel Speicher nicht reservieren Der Einzeiler ist gut! 19

20 Beispiele Race Conditions - Abhängige Iterationen 1 program fix_me 2 USE omp_lib 3 implicit none 4! NICHT NACHMACHEN 5 INTEGER, PARAMETER :: m_end = INTEGER :: in, it 7 INTEGER :: it_stop = INTEGER, DIMENSION (1:m_end) :: matrix_a = 10 9 INTEGER, DIMENSION (1:m_end) :: matrix_b = 0 10 DO it = 1, it_stop!hilfsschleife Zugriff auf Werte ggf. eines anderen Threads Keine logische Reihenfolge der Abarbeitung Read/write Konflikt in Z. 14 und Z !$omp parallel num_threads(2) 12!$omp do 13 DO in = 2, m_end 14 matrix_a(in) = 2 * in * (in - 1) 15 matrix_b(in) = matrix_a(in) - matrix_a(in-1) 16 END DO 17!$omp end do 18!$omp end parallel 19 END DO END program fix_me 2 Lösungen Werte nicht auslesen, redundant berechnen Berechnung in 2 Schleifen aufsplitten 20

21 Beispiele Race Conditions - Abhängige Iterationen 14 matrix_a(in) = 2 * in * (in - 1) 15 matrix_b(in) = matrix_a(in) - 2 * (in -1) * (in - 2) «elegant» für redundante Berechnung non_elegant_x für Aufsplittung der Berechnungen in 2 Schleifen; x für 1 oder 2 Hilfsschleifen Threaderzegung offensichtlich nicht merkbar Seqeuntielle Lösungen geringfügig langsamer «elegante» Lösung besser, weil redundante Berechnung nicht sehr teuer 21

22 Beispiele Race Conditions - Abhängige Iterationen 1 program fix_me_real 2 implicit none 3!NICHT NACHMACHEN 4 INTEGER, PARAMETER :: m_end = INTEGER :: in, it 7 INTEGER :: it_stop = REAL, DIMENSION (1:m_end) :: matrix_a = REAL, DIMENSION (1:m_end) :: matrix_b = DO it = 1, it_stop 11 DO in = 2, m_end 12 matrix_a(in) = sin(real(in)) * matrix_b(in) = matrix_a(in) - matrix_a(in-1) 14 END DO 15 END DO 16 END program fix_me_real Seqentielle Zeit bei redundanter Berechnung doppelt so hoch Abwägen zwischen Speicherzugriff und Berechnungskosten Lokaler Speicher, fremder Speicher Sinus nicht die teuerste Operation 22

23 Beispiele Race Conditions - Abhängige Iterationen 1 program fixed_real 2 USE omp_lib 3 implicit none 4 INTEGER, PARAMETER :: m_end = INTEGER :: in, it_begin 6 INTEGER :: it_stop = REAL, DIMENSION (1:m_end) :: matrix_a = REAL, DIMENSION (1:m_end) :: matrix_b = DO it_begin = 1, it_stop!hilfsschleife 10!$omp parallel num_threads(12) 11!$omp do 12 DO in = 2, m_end 13 matrix_a(in) = sin(real(in)) * END DO 15!$omp end do 16!!$omp barrier 17!$omp do 18 DO in = 2, m_end 19 matrix_b(in) = matrix_a(in) - matrix_a(in-1) 20 END DO 21!$omp end do 22!$omp end parallel 23 END DO 24 END program fixed_real barrier auskommentiert, weil implizit schon eine da Zeiten zwischen fix_me_int und fix_me_real nicht direkt verlgeichbar m_end unterschiedlich groß Integer und Real Berechnung unterschiedlich aufwendig 23

24 Beispiele Race Conditions - private 1 program no_private 2! NICHT NACHMACHEN 3 USE omp_lib 4 implicit none 5 6 INTEGER, DIMENSION( ) :: arr = 1 7 INTEGER :: i, j, sum = 0 8!$omp parallel num_threads(100) 9!$omp do 10 DO i = 1, sum = sum + arr(i) 12 END DO 13!$omp end do 14!$omp end no_parallel write(*,*) sum 17 END program no_private 1 program p_private 2 3 USE omp_lib 4 implicit none 5 6 INTEGER, DIMENSION( ) :: arr = 1 7 INTEGER :: i, j, sum = 0 8!$omp parallel num_threads(100), firstprivate(sum) 9!$omp do 10 DO i = 1, sum = sum + arr(i) 12 END DO 13!$omp end do 14!$omp end no_parallel write(*,*) sum 17 END program p_private no_private weist Race conditions auf, liefert immer unterschiedliche Ergebnisse p_private weist keine Race Conditions auf, liefert aber nur Teilsummen 24

25 Beispiele Race Conditions - private 25

26 Beispiele Verschachtelte Schleifen - Optimierung If Block abhängig von nur 4 Variablen k-schleife im If block effezienter Speicherzugriffe optimieren 26

27 Beispiele Verschachtelte Schleifen - Optimierung 27

28 Beispiele Verschachtelte Schleifen - Optimierung Was ist besser - viele Iterationen außen oder wenig Iterationen außen? 28

29 Beispiele Verschachtelte Schleifen - collapse 29

30 Beispiele Verschachtelte Schleifen - collapse 30

31 Beispiele Verschachtelte Schleifen - collapse a_diagramm time(sec) num_threads fifth = 4, collapse(1) fifth = 4, collapse(2) 31

32 Beispiele Verschachtelte Schleifen - collapse 32

33 Beispiele Verschachtelte Schleifen - collapse 33

34 Beispiele Verschachtelte Schleifen - collapse b_diagramm time(sec) num_threads fifth = 4, collapse(2) fifth = 2100, collapse(1) Absolute Zeiten gering, prozentual aber ausreichend 34

35 Beispiele Verschachtelte Schleifen - collapse Ausreichend viele Iterationen außen, kein collapse Jedoch nicht zu viele, sonst steigt Aufteilungsoverhead Weiß man sicher, dass außen sind immer wenige Iterationen Entweder Schleife nach innen verschieben Oder collapse einbauen Mindestens so viele Iterationen wie es Threads gibt 35

36 Beispiele forall 1 program main 2 3 USE omp_lib 4 implicit none 5 6 REAL, DIMENSION(1:10000, 1:10000) :: A = REAL, DIMENSION(1:10000) :: B 8 INTEGER :: i, t 9 10 DO t= 1, $call omp_set_num_threads (1) $omp parallel 14 $omp workshare 15 forall (i = 1:10000) A(i,i) = sin(real(i)) / i 16! B(i) = A(i,i) 17 $omp end workshare 18 $omp end parallel 19 END DO END program main Einzeiler oder Block Maske Mit workshare zu parallelisieren Idexzugriff oder Wertezugriff Nur für Fortran 90/95, nur GNU, ab OpenMP 2.0 Arbeit wird in getrennte units aufgeteilt Läuft nicht parallel (Compiler? ) seq:36 sec ohne -fopenmp, seq:50 sec mit -fopenmp thr(2):40 sec 36

37 Vorgehensweise 1. Verteilter oder gemeinsamer Speicher? 1a. Konkrete Architektur (ggf. Sockets, Nodes etc) 1b. Hardwareunterstützung 1c. Umfang der Skalierbarkeit (100 oder cores?) 2. Analyse der sequentiellen Umsetzung 2.1 Profiler, Speicheranalyse, Algorithmen-analyse 3. Optimierung der sequentiellen Umsetzung 3.1 Cache Optimierung 3.2 Speicherzugriffe 3.3 Umstrukturierung 4. Entwurf auf Papier (domain decomposition, critical section) 5. Kommunikation schätzen für verteilten Speicher / Kritische Bereiche für gemeinsamen Speicher bestimmen 6. Abschätzung der Vorteile das Prinzip alleine sollte effizient sein, sequentielle Messungen 7. Implementieren Standard beachten! 8. Testen / Profilen / Analysieren / Debuggen 9. Optimierung/Skalierbarkeit: 9.1 Maß der Skalierbarkeit bestimmen, wann bricht Speed-up ein, Maßnahmen ergreifen 9.2 Lastausgleich 9.3 Compiler-Optimierung 9.4 Portabilität ermitteln 37

38 Was hätte ich besser machen können? Kein time./run verwenden Testfälle gut durchdenken, bevor Zeit investieren Prioritäten besser setzen - welche Tests will ich unbedingt zeigen Von Fehlern nicht so lange aufhalten lassen OpenMP Standard als Buch benutzen Gern in die OpenMP Implementierung reingeschaut Realistischer sein 38

39 Quellen Literatur 1. Stephen J. Chapman, Fortran 95/2003 for Scientists and Engineers, Heiko Bauke, Stephan Mertens, Cluster Computing, Rolf Rabenseifner, Parallel Programming Workshop, 2012 Web

40 Danke für die Aufmerksamkeit =) 40

Projekt Parallelrechnerevaluation

Projekt Parallelrechnerevaluation Projekt Parallelrechnerevaluation Thema Autor Datum In Zusammenarbeit mit Fortran Parallelisierung Schwerpunkt OpenMP Anna Fuchs September 01 Petra Nerge Julian Kunkel Michal Kuhn Nathanael Hübbe Inhaltsverzeichnis

Mehr

OpenMP - Threading- Spracherweiterung für C/C++ Matthias Klein, Michael Pötz Systemprogrammierung 15. Juni 2009

OpenMP - Threading- Spracherweiterung für C/C++ Matthias Klein, Michael Pötz Systemprogrammierung 15. Juni 2009 - Threading- Spracherweiterung für C/C++ Matthias Klein, Michael Pötz Systemprogrammierung 15. Juni 2009 Grundlagen der Parallelen Programmierung Hardware Threads vs. Prozesse Kritische Abschnitte Lange

Mehr

Praktikum: Paralleles Programmieren für Geowissenschaftler

Praktikum: Paralleles Programmieren für Geowissenschaftler Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart & Enno Zickler hermann.lenhart@zmaw.de OpenMP Allgemeine Einführung I OpenMP Merkmale: OpenMP ist keine Programmiersprache!

Mehr

Praktikum: Paralleles Programmieren für Geowissenschaftler

Praktikum: Paralleles Programmieren für Geowissenschaftler Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart, Ulrich Körner, Nathanael Hübbe hermann.lenhart@zmaw.de OpenMP Einführung I: Allgemeine Einführung Prozesse

Mehr

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

Master-Thread führt Programm aus, bis durch die Direktive OpenMP seit 1998 Standard (www.openmp.org) für die Shared-Memory Programmierung; (Prä-)Compiler für viele Systeme kommerziell oder frei (z.b. Omni von phase.hpcc.jp/omni) verfügbar Idee: automatische Generierung

Mehr

Einige Grundlagen zu OpenMP

Einige Grundlagen zu OpenMP Einige Grundlagen zu OpenMP Stephanie Friedhoff, Martin Lanser Mathematisches Institut Universität zu Köln 22. Juni 2016 Überblick Was ist OpenMP? Basics Das OpenMP fork-join-modell Kompilieren und Ausführen

Mehr

Beispiel: Schleifenparallelisierung

Beispiel: Schleifenparallelisierung Beispiel: Schleifenparallelisierung for (i = 0; i high) { printf ( Exiting during iteration %d\n,i); break; for (j=low;j

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 OpenMP-Programmierung Teil III Multikern-Praktikum Wintersemester 06-07 Inhalt Was ist OpenMP? Parallele Regionen Konstrukte zur Arbeitsteilung

Mehr

OpenMP. Viktor Styrbul

OpenMP. Viktor Styrbul OpenMP Viktor Styrbul Inhaltsverzeichnis Was ist OpenMP Warum Parallelisierung Geschichte Merkmale von OpenMP OpenMP-fähige Compiler OpenMP Ausführungsmodell Kernelemente von OpenMP Zusammenfassung Was

Mehr

OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer

OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer OpenCL Programmiersprachen im Multicore-Zeitalter Tim Wiersdörfer Inhaltsverzeichnis 1. Was ist OpenCL 2. Entwicklung von OpenCL 3. OpenCL Modelle 1. Plattform-Modell 2. Ausführungs-Modell 3. Speicher-Modell

Mehr

1. Einführung in OpenMP

1. Einführung in OpenMP 1. Einführung in OpenMP Übersicht Einführung Homogene und inhomogene Arbeitsverteilung Rekursive Parallelität Beispiele Parallele Programmierung 1 Nicolas Maillard, Marcus Ritt 1 Überblick OpenMP: Vereinfachte

Mehr

Shared-Memory Programmiermodelle

Shared-Memory Programmiermodelle Shared-Memory Programmiermodelle mehrere, unabhängige Programmsegmente greifen direkt auf gemeinsame Variablen ( shared variables ) zu Prozeßmodell gemäß fork/join Prinzip, z.b. in Unix: fork: Erzeugung

Mehr

Konzepte der parallelen Programmierung

Konzepte der parallelen Programmierung Fakultät Informatik, Institut für Technische Informatik, Professur Rechnerarchitektur Konzepte der parallelen Programmierung Parallele Programmiermodelle Nöthnitzer Straße 46 Raum 1029 Tel. +49 351-463

Mehr

Praktikum: Paralleles Programmieren für Geowissenschaftler

Praktikum: Paralleles Programmieren für Geowissenschaftler Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart, Nathanael Hübbe hermann.lenhart@zmaw.de MPI Einführung I: Hardware Voraussetzung zur Parallelen Programmierung

Mehr

CUDA. Moritz Wild, Jan-Hugo Lupp. Seminar Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg

CUDA. Moritz Wild, Jan-Hugo Lupp. Seminar Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg CUDA Seminar Multi-Core Architectures and Programming 1 Übersicht Einleitung Architektur Programmierung 2 Einleitung Computations on GPU 2003 Probleme Hohe Kenntnisse der Grafikprogrammierung nötig Unterschiedliche

Mehr

Parallele Programmierung mit OpenMP

Parallele Programmierung mit OpenMP Parallele Programmierung mit OpenMP - Eine kurze Einführung - 11.06.2003 RRZN Kolloquium SS 2003 1 Gliederung 1. Grundlagen 2. Programmiermodell 3. Sprachkonstrukte 4. Vergleich MPI und OpenMP 11.06.2003

Mehr

Compute Unified Device Architecture CUDA

Compute Unified Device Architecture CUDA Compute Unified Device Architecture 06. Februar 2012 1 / 13 Gliederung 2 / 13 : Compute Unified Device Architecture entwickelt von Nvidia Corporation spezifiziert Software- und Hardwareeigenschaften Ziel:

Mehr

Threads und OpenMP. Frank Mietke <frank.mietke@informatik.tu-chemnitz.de> Cluster- & Gridcomputing Frank Mietke 7/4/04

Threads und OpenMP. Frank Mietke <frank.mietke@informatik.tu-chemnitz.de> Cluster- & Gridcomputing Frank Mietke 7/4/04 Threads und OpenMP Frank Mietke 1 Ziel der Vorlesungen Einführung in Threads Programmierung mit Threads Einführung in OpenMP Programmierung mit OpenMP 2 Was ist

Mehr

Computergrundlagen Moderne Rechnerarchitekturen

Computergrundlagen Moderne Rechnerarchitekturen Computergrundlagen Moderne Rechnerarchitekturen Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Aufbau eines modernen Computers DDR3- Speicher Prozessor Prozessor PEG

Mehr

C-to-CUDA-Compiler. Johannes Kölsch. October 29, 2012

C-to-CUDA-Compiler. Johannes Kölsch. October 29, 2012 October 29, 2012 Inhaltsverzeichnis 1 2 3 4 5 6 Motivation Motivation CUDA bietet extreme Leistung für parallelisierbare Programme Kompliziert zu programmieren, da multi-level parallel und explizit verwalteter

Mehr

Praktikum: Paralleles Programmieren für Geowissenschaftler

Praktikum: Paralleles Programmieren für Geowissenschaftler Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart hermann.lenhart@zmaw.de MPI Einführung I: Einführung Nachrichtenaustausch mit MPI MPI point-to-point communication

Mehr

Computergrundlagen Moderne Rechnerarchitekturen

Computergrundlagen Moderne Rechnerarchitekturen Aufbau eines modernen Computers Computergrundlagen Moderne Rechnerarchitekturen Axel Arnold Institut für Computerphysik Universität Stuttgart DDR3- Speicher Prozessor Prozessor PEG Graphikkarte(n) weitere

Mehr

OpenMP - Geschichte. 1997: OpenMP Version 1.0 für Fortran

OpenMP - Geschichte. 1997: OpenMP Version 1.0 für Fortran OpenMP - Geschichte 1997: OpenMP Version 1.0 für Fortran Standard für f r die Shared-Memory Memory-Programmierung inzwischen für f r alle namhaften SMP-Rechner verfügbar wird im techn.-wiss. Rechnen die

Mehr

Parallel Regions und Work-Sharing Konstrukte

Parallel Regions und Work-Sharing Konstrukte Parallel Regions und Work-Sharing Konstrukte Um eine Parallelisierung von größeren Programmabschnitten, als es einzelne Schleifen sind, zu ermöglichen, stellt OpenMP als allgemeinstes Konzept die Parallel

Mehr

Intel Thread Checker

Intel Thread Checker Kurs 1: Ferienakademie 2009 26. September 2009 Gliederung Gliederung Was macht der Thread Checker und warum? Historisches Alternativen Was macht der Thread Checker und warum? Historisches Alternativen

Mehr

FORTRAN77. eine höllische Programmiersprache. Christian Sternecker. Sommersemester TU-München

FORTRAN77. eine höllische Programmiersprache. Christian Sternecker. Sommersemester TU-München FORTRAN77 eine höllische Programmiersprache Christian Sternecker TU-München Sommersemester 2010 Aufbau des Vortrags Geschichte Merkmale Höllische Konzepte Typsicherheit Programmstruktur Speicherverwaltung

Mehr

Evaluation. Einleitung. Implementierung Integration. Zusammenfassung Ausblick

Evaluation. Einleitung. Implementierung Integration. Zusammenfassung Ausblick Christopher Schleiden Bachelor Kolloquium 15.09.2009 Einleitung Evaluation Implementierung Integration Zusammenfassung Ausblick Einleitung laperf Lineare Algebra Bibliothek für C++ Möglichkeit zur Integration

Mehr

Multi- und Many-Core

Multi- und Many-Core Multi- und Many-Core Benjamin Warnke Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 2016-12-15 Benjamin

Mehr

6. Der OpenMP Standard. Direktiven-basiertes API zur Programmierung von Parallelrechnern mit gemeinsamem Speicher für FORTRAN, C und C++

6. Der OpenMP Standard. Direktiven-basiertes API zur Programmierung von Parallelrechnern mit gemeinsamem Speicher für FORTRAN, C und C++ 6. Der OpenMP Standard Direktiven-basiertes API zur Programmierung von Parallelrechnern mit gemeinsamem Speicher für FORTRAN, C und C++ OpenMP Programmiermodell OpenMP Direktiven basieren in C and C++

Mehr

PGI Accelerator Model

PGI Accelerator Model PGI Accelerator Model Philip Höhlein, Nils Werner Supervision: R. Membarth, P. Kutzer, F. Hannig Hardware-Software-Co-Design Universität Erlangen-Nürnberg Philip Höhlein, Nils Werner 1 Übersicht Motivation

Mehr

Beispielvortrag: HPCG auf Intel Haswell-EP

Beispielvortrag: HPCG auf Intel Haswell-EP Beispielvortrag: HPCG auf Intel Haswell-EP Johannes Hofmann 1 Seminarvortrag Architekturen von Multi- und Vielkern-Prozessoren Erlangen, 19.4.2016 1 Computer Architecture, University Erlangen-Nuremberg

Mehr

Interaktive Globale Beleuchtung nach dem Antiradiance-Verfahren mittels der Open Computing Language (OpenCL)

Interaktive Globale Beleuchtung nach dem Antiradiance-Verfahren mittels der Open Computing Language (OpenCL) Interaktive Globale Beleuchtung nach dem Antiradiance-Verfahren mittels der Open Computing Language (OpenCL) Verteidigung der Belegarbeit Andreas Stahl Zielstellung Globales Beleuchtungsverfahren für die

Mehr

Parallel Computing. Einsatzmöglichkeiten und Grenzen. Prof. Dr. Nikolaus Wulff

Parallel Computing. Einsatzmöglichkeiten und Grenzen. Prof. Dr. Nikolaus Wulff Parallel Computing Einsatzmöglichkeiten und Grenzen Prof. Dr. Nikolaus Wulff Parallel Architekturen Flynn'sche Klassifizierung: SISD: single Instruction, single Data Klassisches von-neumann sequentielles

Mehr

Anleitung für zwei Fortran-Openmp-Beispiele auf der NWZSuperdome

Anleitung für zwei Fortran-Openmp-Beispiele auf der NWZSuperdome Anleitung für zwei Fortran-Openmp-Beispiele auf der NWZSuperdome (Timo Heinrich, t_hein03@uni-muenster.de) Inhaltsverzeichnis: 0.Einleitung 1.Teil: Helloworldprogramm 1.1 Quellcode: Helloworld.f90 1.2

Mehr

Memory Models Frederik Zipp

Memory Models Frederik Zipp Memory Models Frederik Zipp Seminar: Programmiersprachen für Parallele Programmierung (SS 2010) Fakultät für Informatik - IPD SNELTING LEHRSTUHL PROGRAMMIERPARADIGMEN 1

Mehr

Paralleles Programmieren mit OpenMP und MPI OpenMP-Übungsaufgaben Steinbuch Centre for Computing

Paralleles Programmieren mit OpenMP und MPI OpenMP-Übungsaufgaben Steinbuch Centre for Computing Paralleles Programmieren mit OpenMP und MPI OpenMP-Übungsaufgaben Steinbuch Centre for Computing und Universität Karlsruhe (TH) www.scc.kit.edu Parallele Berechnung von PI program compute_pi integer integer,

Mehr

Cilk Sprache für Parallelprogrammierung. IPD Snelting, Lehrstuhl für Programmierparadigmen

Cilk Sprache für Parallelprogrammierung. IPD Snelting, Lehrstuhl für Programmierparadigmen Cilk Sprache für Parallelprogrammierung IPD Snelting, Lehrstuhl für Programmierparadigmen David Soria Parra Geschichte Geschichte Entwickelt 1994 am MIT Laboratory for Computer Science Cilk 1: Continuations

Mehr

Parallele Programmierung mit OpenMP

Parallele Programmierung mit OpenMP Parallele Programmierung mit OpenMP Wolfgang Dautermann FH Joanneum Chemnitzer Linuxtage 2008 1 Motivation 2 OpenMP Übersicht 3 Hello World - der erste Code 4 OpenMP-Compilerdirektiven Threaderzeugung

Mehr

Rheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit

Rheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit Rheinisch-Westfälische Technische Hochschule Aachen Seminararbeit Analyse von General Purpose Computation on Graphics Processing Units Bibliotheken in Bezug auf GPU-Hersteller. Gregori Kerber Matrikelnummer

Mehr

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches

Mehr

Paralleler Cuckoo-Filter. Seminar: Implementierungstechniken für Hauptspeicherdatenbanksysteme Jeremias Neth München, 21.

Paralleler Cuckoo-Filter. Seminar: Implementierungstechniken für Hauptspeicherdatenbanksysteme Jeremias Neth München, 21. Paralleler Cuckoo-Filter Seminar: Implementierungstechniken für Hauptspeicherdatenbanksysteme Jeremias Neth München, 21. November 2017 1 Paralleler Cuckoo-Filter Cuckoo-Hashtabelle Serieller Cuckoo-Filter

Mehr

Automatische Parallelisierung

Automatische Parallelisierung MPI und OpenMP in HPC Anwendungen findet man immer häufiger auch den gemeinsamen Einsatz von MPI und OpenMP: OpenMP wird zur thread-parallelen Implementierung des Codes auf einem einzelnen Rechenknoten

Mehr

Kurzeinführung in C99

Kurzeinführung in C99 Kurzeinführung in C99 Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Compiler und Editoren - Was wird benötigt um ein Programm zu erstellen 2

Mehr

4. Parallelprogrammierung

4. Parallelprogrammierung 4. Parallelprogrammierung AlDaBi Prak4kum David Weese 2010/11 Enrico Siragusa WS 2011/12 Inhalt Einführung in Parallelität OpenMP Bemerkungen zur P- Aufgabe EINFÜHRUNG IN PARALLELITÄT Folien z.t. aus VL

Mehr

Hochleistungsrechnen Hybride Parallele Programmierung. Prof. Dr. Thomas Ludwig Universität Hamburg Informatik Wissenschaftliches Rechnen

Hochleistungsrechnen Hybride Parallele Programmierung. Prof. Dr. Thomas Ludwig Universität Hamburg Informatik Wissenschaftliches Rechnen Hochleistungsrechnen Hybride Parallele Programmierung Prof. Dr. Thomas Ludwig Universität Hamburg Informatik Wissenschaftliches Rechnen Inhaltsübersicht Einleitung und Motivation Programmiermodelle für

Mehr

Grundlagen von CUDA, Sprachtypische Elemente

Grundlagen von CUDA, Sprachtypische Elemente Grundlagen von CUDA, Sprachtypische Elemente Stefan Maskanitz 03.07.2009 CUDA Grundlagen 1 Übersicht 1. Einleitung 2. Spracheigenschaften a. s, Blocks und Grids b. Speicherorganistion c. Fehlerbehandlung

Mehr

2 Rechnerarchitekturen

2 Rechnerarchitekturen 2 Rechnerarchitekturen Rechnerarchitekturen Flynns Klassifikation Flynnsche Klassifikation (Flynn sche Taxonomie) 1966 entwickelt, einfaches Modell, bis heute genutzt Beschränkung der Beschreibung auf

Mehr

Jannis Beese, Universität Stuttgart, Ferienakademie 2009

Jannis Beese, Universität Stuttgart, Ferienakademie 2009 Jannis Beese, Universität Stuttgart, Ferienakademie 2009 I. Was ist OpenMP? II. Konzepte III. Beispiele IV. Sichtbarkeit von Daten V. Kompilier-Vorgang VI. Effizienz 01.10.2009 Jannis Beese Portable, shared-data

Mehr

Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern

Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern Institut für Betriebssysteme und Rechnerverbund TU Braunschweig 25.10., 26.10.

Mehr

Systeme 1: Architektur

Systeme 1: Architektur slide 1 Vorlesung Systeme 1: Architektur Prof. Dr. Ulrich Ultes-Nitsche Forschungsgruppe Departement für Informatik Universität Freiburg slide 2 Prüfung 18. Februar 2004 8h00-11h40 13h00-18h20 20 Minuten

Mehr

Cell and Larrabee Microarchitecture

Cell and Larrabee Microarchitecture Cell and Larrabee Microarchitecture Benjamin Grund Dominik Wolfert Universität Erlangen-Nürnberg 1 Übersicht Einleitung Herkömmliche Prozessorarchitekturen Motivation für Entwicklung neuer Architekturen

Mehr

Seminarvortrag: Direktivenbasierte Programmierung von Beschleunigern mit OpenMP 4.5 und OpenACC 2.5 im Vergleich

Seminarvortrag: Direktivenbasierte Programmierung von Beschleunigern mit OpenMP 4.5 und OpenACC 2.5 im Vergleich Seminarvortrag: Direktivenbasierte Programmierung von Beschleunigern mit Direktivenbasierte Programmierung von Beschleunigern mit Agenda Einführung / Motivation Überblick zu OpenMP und OpenACC Asynchronität

Mehr

Vorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016

Vorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016 Paralleles Programmieren mit und MPI Vorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016 Steinbuch Centre for Computing Hartmut Häfner, Steinbuch Centre for Computing (SCC) STEINBUCH CENTRE

Mehr

LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610

LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610 LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610 Dominik Weinrich dominik.weinrich@tu-dresden.de Dresden, 30.11.2017 Gliederung Motivation Aufbau und Hardware

Mehr

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5 Informatik 1 (251-0832-00) D-MAVT F2010 Schleifen, Felder Nachbesprechung Blatt 3 Aufgabe 1 ASCII... A > a Vorsicht: Lösen Sie sich von intuitiven Schlussfolgerungen. A ist nicht grösser als a, denn in

Mehr

> High-Level Programmierung heterogener paralleler Systeme

> High-Level Programmierung heterogener paralleler Systeme > High-Level Programmierung heterogener paralleler Systeme Projektseminar im SoSe 2012 Prof. Sergei Gorlatch, Michel Steuwer, Tim Humernbrum AG Parallele und Verteilte Systeme, Westfälische Wilhelms-Universität

Mehr

OpenMP Primer. Rechnerübung Rechnerarchitektur

OpenMP Primer. Rechnerübung Rechnerarchitektur OpenMP Primer Rechnerübung Rechnerarchitektur 1 Expliting Multicre Parallelism OpenMP basiert auf frk-jin Prgrammiermdel Prgramme starten mit nur einem Thread Zusätzliche Threads (thread team) werden für

Mehr

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches

Mehr

Parallele Programmiermodelle

Parallele Programmiermodelle Parallele Programmiermodelle ProSeminar: Parallele Programmierung Semester: WS 2012/2013 Dozentin: Margarita Esponda Einleitung - Kurzer Rückblick Flynn'sche Klassifikationsschemata Unterteilung nach Speicherorganissation

Mehr

Homogene Multi-Core-Prozessor-Architekturen

Homogene Multi-Core-Prozessor-Architekturen Homogene Multi-Core-Prozessor-Architekturen Praktikum Parallele Rechnerarchitekturen Stefan Potyra Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2009

Mehr

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung Version 21.12.2016 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen

Mehr

Masterpraktikum Scientific Computing

Masterpraktikum Scientific Computing Masterpraktikum Scientific Computing High-Performance Computing Thomas Auckenthaler Wolfgang Eckhardt Prof. Dr. Michael Bader Technische Universität München, Germany Outline Organisatorisches Entwicklung

Mehr

6. Grundlagen der Programmierung

6. Grundlagen der Programmierung Computeranwendung in der Chemie Informatik für Chemiker(innen) 6. Grundlagen der Programmierung Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL6 Folie 1 Dr. Jens Döbler Grundlagen

Mehr

Eine kurze Einführung in Rechnerarchitektur und Programmierung von Hochleistungsrechnern als zentrales Werkzeug in der Simulation

Eine kurze Einführung in Rechnerarchitektur und Programmierung von Hochleistungsrechnern als zentrales Werkzeug in der Simulation Eine kurze Einführung in Rechnerarchitektur und Programmierung von Hochleistungsrechnern als zentrales Werkzeug in der Simulation Dr. Jan Eitzinger Regionales Rechenzentrum (RRZE) der Universität Erlangen-Nürnberg

Mehr

Hochleistungsrechnen mit Windows Verifikations- und Analyseprogramme Christian Terboven Rechen- und Kommunikationszentrum RWTH Aachen

Hochleistungsrechnen mit Windows Verifikations- und Analyseprogramme Christian Terboven Rechen- und Kommunikationszentrum RWTH Aachen Hochleistungsrechnen mit Windows Verifikations- und Analyseprogramme hristian Terboven Rechen- und Kommunikationszentrum RWTH Aachen 1 Hochleistungsrechnen mit Windows enter omputing and ommunication Agenda

Mehr

CUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1

CUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1 CUDA Jürgen Pröll Multi-Core Architectures and Programming Jürgen Pröll 1 Image-Resize: sequentiell resize() mit bilinearer Interpolation leicht zu parallelisieren, da einzelne Punkte voneinander unabhängig

Mehr

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3 Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................

Mehr

http://www.uniregensburg.de/edv/kurs_info/brf09510/hpc/openmp/openmp.dvi

http://www.uniregensburg.de/edv/kurs_info/brf09510/hpc/openmp/openmp.dvi Open Multi Processing Dipl. Math. F. Braun Universität Regensburg Rechenzentrum http://www.uniregensburg.de/edv/kurs_info/brf09510/hpc/openmp/openmp.html http://www.uniregensburg.de/edv/kurs_info/brf09510/hpc/openmp/openmp.pdf

Mehr

Einleitung Die Pins alphabetisch Kapitel 1 Programmierung des ATmega8 und des ATmega

Einleitung Die Pins alphabetisch Kapitel 1 Programmierung des ATmega8 und des ATmega Einleitung... 11 Die Pins alphabetisch.... 12 Kapitel 1 Programmierung des ATmega8 und des ATmega328.... 15 1.1 Was Sie auf den nächsten Seiten erwartet... 19 1.2 Was ist eine Micro Controller Unit (MCU)?....

Mehr

Raytracing in GA mittels OpenACC. Michael Burger, M.Sc. FG Scientific Computing TU Darmstadt

Raytracing in GA mittels OpenACC. Michael Burger, M.Sc. FG Scientific Computing TU Darmstadt Raytracing in GA mittels OpenACC Michael Burger, M.Sc. FG Scientific Computing TU Darmstadt michael.burger@sc.tu-darmstadt.de 05.11.12 FB Computer Science Scientific Computing Michael Burger 1 / 33 Agenda

Mehr

Architektur von Parallelrechnern 50

Architektur von Parallelrechnern 50 Architektur von Parallelrechnern 50 Rechenintensive parallele Anwendungen können nicht sinnvoll ohne Kenntnis der zugrundeliegenden Architektur erstellt werden. Deswegen ist die Wahl einer geeigneten Architektur

Mehr

Parallele und verteilte Programmierung

Parallele und verteilte Programmierung Thomas Rauber Gudula Rünger Parallele und verteilte Programmierung Mit 165 Abbildungen und 17 Tabellen Jp Springer Inhaltsverzeichnis 1. Einleitung 1 Teil I. Architektur 2. Architektur von Parallelrechnern

Mehr

Parallel Computing. Einsatzmöglichkeiten und Grenzen. Prof. Dr. Nikolaus Wulff

Parallel Computing. Einsatzmöglichkeiten und Grenzen. Prof. Dr. Nikolaus Wulff Parallel Computing Einsatzmöglichkeiten und Grenzen Prof. Dr. Nikolaus Wulff Vorüberlegungen Wann ist paralleles Rechnen sinnvoll? Wenn die Performance/Geschwindigkeit steigt. Wenn sich größere Probleme

Mehr

Multi-threaded Programming with Cilk

Multi-threaded Programming with Cilk Multi-threaded Programming with Cilk Hobli Taffame Institut für Informatik Ruprecht-Karls Universität Heidelberg 3. Juli 2013 1 / 27 Inhaltsverzeichnis 1 Einleitung Warum Multithreading? Ziele 2 Was ist

Mehr

Wissenschaftliches Rechnen im SoSe 2015 Dr. J. Kunkel, Hans Ole Hatzel Abgabe:

Wissenschaftliches Rechnen im SoSe 2015 Dr. J. Kunkel, Hans Ole Hatzel Abgabe: Universität Hamburg Übungsblatt 2 zum Praktikum Department Informatik Paralleles Programmieren Wissenschaftliches Rechnen im SoSe 2015 Dr. J. Kunkel, Hans Ole Hatzel 06.05.2015 1 Vertiefung von C-Kentnissen

Mehr

Mehrprozessorarchitekturen

Mehrprozessorarchitekturen Mehrprozessorarchitekturen (SMP, UMA/NUMA, Cluster) Arian Bär 12.07.2004 12.07.2004 Arian Bär 1 Gliederung 1. Einleitung 2. Symmetrische Multiprozessoren (SMP) Allgemeines Architektur 3. Speicherarchitekturen

Mehr

OpenMP. Michael Westermann

OpenMP. Michael Westermann Westfälische Wilhelms-Universität Münster Ausarbeitung OpenMP im Rahmen des Seminars Parallele und verteilte Programmierung Michael Westermann Themensteller: Prof. Dr. Herbert Kuchen Betreuer: Dipl. Wirt.-Inform.

Mehr

Masterpraktikum Scientific Computing

Masterpraktikum Scientific Computing Masterpraktikum Scientific Computing High-Performance Computing Thomas Auckenthaler Wolfgang Eckhardt Technische Universität München, Germany Outline Entwicklung General Purpose GPU Programming (GPGPU)

Mehr

Entwicklung algorithmischer Skelette für CUDA am Beispiel von Affintiy Propagation

Entwicklung algorithmischer Skelette für CUDA am Beispiel von Affintiy Propagation Entwicklung algorithmischer Skelette für CUDA am Beispiel von Affintiy Propagation Christoph Winter Fakultät für Informatik und Mathematik Ostbayerische Technische Hochschule Regensburg 93049 Regensburg

Mehr

Rechnerarchitektur (RA)

Rechnerarchitektur (RA) 12 Rechnerarchitektur (RA) Sommersemester 2015 OpenMP Michael Engel Informatik 12 michael.engel@tu-.. http://ls12-www.cs.tu-.de/daes/ Tel.: 0231 755 6121 2015/07/07 Basierend auf Material von OpenMP Usage

Mehr

Parallele Rechnerarchitekturen

Parallele Rechnerarchitekturen Bachelor Parallele en Informatik 3 ( ) Prof. Dietmar Fey Ziel des s Paralleles Rechnen Keine akademische Nische mehr Vielmehr Allgemeingut für den Beruf des Informatikers Bedingt durch Multikern- (und

Mehr

I Grundlagen der parallelen Programmierung 1

I Grundlagen der parallelen Programmierung 1 vii I Grundlagen der parallelen Programmierung 1 1 Einführung...... 3 1.1 Paradigmenwechsel in der Softwareentwicklung..... 4 1.2 Anwendungsbereiche...... 5 1.3 Parallelität in der Hardware..... 5 1.3.1

Mehr

C++ - Variablen: Gültigkeit - Sichtbarkeit

C++ - Variablen: Gültigkeit - Sichtbarkeit C++ - Variablen: Gültigkeit - Sichtbarkeit Reiner Nitsch 8417 r.nitsch@fbi.h-da.de Attribute von Variablen und Funktionen Attribute von Variablen sind Name (name), Typ (type), Wert (value) Attribute von

Mehr

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems 4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um

Mehr

Repetitorium Programmieren I + II

Repetitorium Programmieren I + II Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case

Mehr

Georg Hager Regionales Rechenzentrum Erlangen (RRZE)

Georg Hager Regionales Rechenzentrum Erlangen (RRZE) Erfahrungen und Benchmarks mit Dual- -Prozessoren Georg Hager Regionales Rechenzentrum Erlangen (RRZE) ZKI AK Supercomputing Karlsruhe, 22./23.09.2005 Dual : Anbieter heute IBM Power4/Power5 (Power5 mit

Mehr

Unicode Support Atomic Operations Thread Support Type-Generic Makros Sicherheit Ease-of-Use C11. Thomas Duckardt

Unicode Support Atomic Operations Thread Support Type-Generic Makros Sicherheit Ease-of-Use C11. Thomas Duckardt C11 Thomas Duckardt Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 22.05.2014 1 / 22 Gliederung (Agenda)

Mehr

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems 4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um

Mehr

ÜBUNGS-BLOCK 7 LÖSUNGEN

ÜBUNGS-BLOCK 7 LÖSUNGEN ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i

Mehr

7 Laufzeit-Speicherverwaltung

7 Laufzeit-Speicherverwaltung 7.1 Grundlagen Bevor wir die Code-Generierung betrachten, müssen wir uns Gedanken über zur Laufzeit des zu generierenden Programms notwendige Aktivitäten zur Zuordnung und Freigabe von Speicherplatz machen.

Mehr

Games with Cellular Automata auf Parallelen Rechnerarchitekturen

Games with Cellular Automata auf Parallelen Rechnerarchitekturen Bachelor Games with Cellular Automata auf Parallelen en ( ) Dipl.-Inf. Marc Reichenbach Prof. Dietmar Fey Ziel des s Paralleles Rechnen Keine akademische Nische mehr Vielmehr Allgemeingut für den Beruf

Mehr

Vorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016

Vorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016 Paralleles Programmieren mit OpenMP und MPI MPI-Übungsaufgaben Vorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016 Hartmut Steinbuch Häfner, Centre Steinbuch for Computing Centre for Computing

Mehr

ATIK ORMAT SINFO HAFTS WIRT. Swetlana Konovalov Seminar Programmiersprachen Westfälische Wilhelms-Universität Münster

ATIK ORMAT SINFO HAFTS WIRT. Swetlana Konovalov Seminar Programmiersprachen Westfälische Wilhelms-Universität Münster Westfälische Wilhelms-Universität Münster WIRTSCHAFTS ATIK ORMAT SINFO TSCH HAFTS WIRT FORTRAN Swetlana Konovalov Seminar Programmiersprachen 04.06.200906 Inhalt Einführung Historische Entwicklung Charakteristika

Mehr

Programmieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff

Programmieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff Programmieren in C Speicher anfordern, Unions und Bitfelder Prof. Dr. Nikolaus Wulff Vergleich: Felder und Strukturen Felder müssen Elemente vom selben Typ enthalten. Strukturen können Elemente unterschiedlichen

Mehr

OpenMP am Beispiel der Matrizenmultiplikation

OpenMP am Beispiel der Matrizenmultiplikation OpenMP am Beispiel der Matrizenmultiplikation David J. Meder, Dr. Victor Pankratius IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe

Mehr

Gliederung. Was ist CUDA? CPU GPU/GPGPU CUDA Anwendungsbereiche Wirtschaftlichkeit Beispielvideo

Gliederung. Was ist CUDA? CPU GPU/GPGPU CUDA Anwendungsbereiche Wirtschaftlichkeit Beispielvideo Gliederung Was ist CUDA? CPU GPU/GPGPU CUDA Anwendungsbereiche Wirtschaftlichkeit Beispielvideo Was ist CUDA? Nvidia CUDA ist eine von NvidiaGPGPU-Technologie, die es Programmierern erlaubt, Programmteile

Mehr

Refactoring the UrQMD Model for Many- Core Architectures

Refactoring the UrQMD Model for Many- Core Architectures Refactoring the UrQMD Model for Many- Core Architectures Mathias Radtke Semiar: Softwaretechnologie (WS 2013/2014 Goethe-Universität Frankfurt Agenda: 1. UrQMD 2. CPU Vs. GPU 3. Von FORTRAN zu C++/OpenCL

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr