Warum parallele Programmierung?

Größe: px
Ab Seite anzeigen:

Download "Warum parallele Programmierung?"

Transkript

1 Einführung OpenMP

2 Warum parallele Programmierung? Viele Bildverarbeitungsalgorithmen leicht parallelisierbar Oft wird mit zwei Schleifen über das gesamte Bild gelaufen Schleifeniterationen meist voneinander unabhängig Parallele Programmierung bietet sich somit an Im Praktikum: Grundlagen mit OpenMP

3 Was ist OpenMP? Steht für Open Multi-Processing API für shared-memory multiprocessing C/C++, Fortran... Multithreading auf abstrakter Ebene Beinhaltet: Compileranweisungen und Pragmas Spezifische Funktionen Spezifische Umgebungsvariablen Mehr Infos:

4 Überblick Prozesse und Threads Paralleles Programmieren mit OpenMP Parallelisieren von Schleifen Synchronisierung Scheduling

5 Prozesse und Threads

6 Prozess Ein momentan ausgeführtes Programm Sequentielle Abarbeitung Ein Prozess beinhaltet: Prozess-ID Programmcode Schrittzähler Registerwerte Stack Lokale Variablen, Rücksprungadressen, Funktionsparameter Datenbereich Globale Variablen Heap Speicherplatz für dynamisch allozierte Variablen

7 Thread (Potentiell) parallel ausgeführte Programmflüsse mit gemeinsamem Adressraum Sequentielle Abarbeitung Ein Thread beinhaltet: Thread-ID Schrittzähler Registerwerte Stack Lokale Variablen, Rücksprungadressen, Funktionsparameter Alles andere (Globale Variablen, Heap, dynamischer Speicher): Geteilt mit anderen Threads

8 Single- und Multithreaded Prozesse

9 Warum OpenMP? Shared-memory Systeme mittlerweile fast überall z.b. Multiprozessor- und Multicore-Rechner Daher: Bedarf Aufgaben zu parallelisieren Bibliotheken zur Threaderzeugung (wie pthread) sind low-level verlangen tiefe Kenntnis, sowie (schwierige) manuelle Synchronisierung/Zugriffsverwaltung sind schlecht portierbar OpenMP bietet Möglichkeit Aufgaben schnell und zuverlässig zu parallelisieren auf einer abstrakten Ebene

10 Paralleles Programmieren mit OpenMP

11 Unterstützte Compiler Visual Studio C/C++-Compiler ab 2005 Allerdings nicht in der Express-Edition Intel C/C++-Compiler ab Version 8 GCC ab Version 4.2 Compiler, die OpenMP nicht unterstützen ignorieren OpenMP-Anweisungen Compiler erlauben meist An- und Abschalten von OpenMP

12 OpenMP und Visual Studio

13 Hello OpenMP world OpenMP pragma #include <stdio.h> #ifdef _OPENMP #include <omp.h> #endif OpenMP preprocessor macro OpenMP library routine int main() { #ifdef _OPENMP printf("number of processors: %d\n", omp_get_num_procs()); #pragma omp parallel { printf("this is thread: %3d out of %3d\n", omp_get_thread_num(), omp_get_num_threads()); } printf("back to serial. Done."); #else printf("openmp support is not available."); #endif return 0; }

14 Mögliche Ausgabe Reihenfolge der Ausführung nicht vorhersagbar, sofern die Threads nicht synchronisiert werden Number of processors: 4 This is thread 0 out of 4 This is thread 2 out of 4 This is thread 1 out of 4 This is thread 3 out of 4 Back to serial. Done.

15 Anweisungen Eingeschlossener Codeblock der Form #pragma omp directivename [clause..] newline Halten sich an C/C++-Konventionen Groß-/Kleinschreibung beachten Jede Anweisung gilt für den nächsten strukturierten Codeblock

16 Die parallel-anweisung Erzeugt eine Menge von Threads, die den Codeblock parallel ausführen Syntax: #pragma omp parallel [clause[ [, ]clause]...] newline structured-block clauses werden später besprochen Können mit section-anweisung und for-anweisung kombiniert werden

17 Fork/Join-Modell Master thread #pragma omp parallel { // } Team of threads The number of threads in a team is determined by the environment variable OMP_NUM_THREADS, the omp_set_num_threads() library function, or the num_threads clause. Master thread

18 Parallele Abschnitte Parallelisierung unabhängiger Unteraufgaben über die sections-anweisung B hängt nur von A ab, D nur von C usw. #pragma omp parallel sections { #pragma omp section { dotaska(); dotaskb(); } // other tasks here #pragma omp section { dotaskg(); dotaskh(); } } A(); B(); C(); D(); E(); F(); G(); H();

19 Mögliche Ausgabe Reihenfolge der Ausführung nicht vorhersagbar, sofern die Threads nicht synchronisiert werden Es gilt jedoch: A vor B C vor D E vor F und G vor H This is thread 0 of 4 doing task A This is thread 2 of 4 doing task C This is thread 1 of 4 doing task E This is thread 3 of 4 doing task G This is thread 1 of 4 doing task F This is thread 0 of 4 doing task B This is thread 2 of 4 doing task D This is thread 3 of 4 doing task H

20 Parallelisierung von Schleifen void multiplyadd(float* src, float* dst, float scale, float shift, int n) { for(int i = 0; i < n; i++) { dst[i] = scale * src[i] + shift; } } void multiplyadd(float* src, float* dst, float scale, float shift, int n) { #pragma omp parallel { Pragma genügt #pragma omp for for(int i = 0; i < n; i++) { dst[i] = scale * src[i] + shift; } } }

21 Bedingungen Voneinander unabhängige Iterationen Abhängigkeiten oft im Vorhinein lösbar Indexvariable vorzeichenbehaftete Ganzzahl (int) Erlaubte Kontrollanweisungen: <, >, <=, >= für Abbruchkriterien und +, - für Zählweise Indexvariable muss sich pro Iteration um die gleiche Menge verändern Anzahl der maximalen Iterationen muss im Vorhinein bekannt sein Indexvariable darf sich innerhalb der Schleife nicht verändern Keine break-anweisungen (continue ist in Ordnung)

22 Beachten Wird eine Exception innerhalb der Schleife geworfen, muss diese auch in der Schleife abgefangen werden Implizite Barriere: Alle Threads müssen auf den langsamsten warten bevor sie ihre Ausführung beenden Falls nicht gewünscht: #pragma omp for nowait int i; #pragma omp parallel { #pragma omp for nowait for (i = 0; i < size; i++) b[i] = a[i] * a[i]; } #pragma omp for nowait for (i = 0; i < size; i++) c[i] = a[i]/2;

23 clauses: Überblick Syntax: <clause> ([var [, var ] ]) clauses für den Gültigkeitsbereich von Variablen: private shared firstprivate lastprivate default reduction Beispiel: #pragma omp parallel for private(x, f_x) shared(delta_x, sum)

24 clauses: Überblick schedule clause Steuert Verteilung der Aufgaben auf die Threads if clause Führt Block parallel aus, wenn Ausdruck wahr ordered clause Wenn die Reihenfolge der Iterationen eine Rolle spielt copyin clause Zum Initialisieren privater Variablen mit Werten des Vater-Threads

25 Datenzugriff und Gültigkeit Threads haben einen gemeinsamen Adressraum Threads kommunizieren durch Lesen/Schreiben von/in gemeinsame Variablen Zugriff muss möglicherweise synchronisiert werden Standardmäßig: Threads haben auf alle Variablen Zugriff (lesend und schreibend) Ausnahme: Indexvariable bei Schleifen

26 private clause Eine als privat markierte Variable exisitiert für jeden Thread separat in seinem Adressraum D.h. jeder Thread bestitzt eine eigene Kopie der Variable Initialisierungswert undefiniert: Muss vom Thread initialisiert werden Ausnahme: Kontrollvariablen bei Schleifen (sind schon initialisiert) C++-Objekte (werden mit Copy- oder Standardkonstruktor initialisiert)

27 Standard-Gültigkeitsbereich void function(int a[], int n) { int i, j, m = 3; #pragma omp parallel for } for(i = 0; i < n; i++) { } int k = m; for(j = 1; j <= 5; j++) { } Variable Scope Reason Safe? a, n, m shared Declared outside parallel region i private Parallel loop index variable j shared Declared outside parallel region k private Automatic call(&a[i], &k, j); variable declared inside parallel region Achtung Yes Yes No Yes

28 firstprivate/lastprivate clause firstprivate([var [, Var]..]) Jede private (also lokale) Kopie der Variable Var wird in der ersten Iteration mit dem Wert des Vater-Threads dieser Variable initialisiert lastprivate([var [, Var]..]) Der Wert der Variablen Var des Vater-Threads wird auf den Wert der privaten (also lokalen) Kopie des Threads gesetzt, der sich als letztes beendet

29 Datenabhängigkeiten Bewahre Richtigkeit bei der Parallelisierung Datenabhängigkeit: Zwei Anweisungen greifen auf den gleichen Speicherbereich zu, mindestens eine schreibend Beispiel: for (int i=1; i<n; ++i) { } array[i] = array[i] + array[i-1]; Während ein Thread liest, kann ein zweiter Thread bereits einen anderen Wert an entsprechende Stelle geschrieben haben Ergebnisse können nicht übereinstimmen

30 Datenabhängigkeiten entdecken Benötigt eine Iteration Ergebnisse einer vorhergegangenen? Vorgehen: Jede Variable der Schleife überprüfen Wird daraus lediglich gelesen, liegt keine Abhängigkeit vor Wird nur an eine Stelle geschrieben, die lediglich von der aktuellen Iteration abhängt, liegt keine Abhängigkeit vor Ansonsten gilt: Abhängigkeit

31 Datenabhängigkeitstypen Echte Abhängigkeit: Thread 1 schreibt an eine Stelle Thread 2 benötigt genau den von Thread 1 geschriebenen Wert Beispiel: 1. A = 3 2. B = A 3. C = B 3. abhängig von 2., 2. abhängig von 1. Eliminierung: Keine allgemein gültige

32 Datenabhängigkeitstypen Gegenabhängigkeit: Thread 1 benötigt Wert, der später von Thread 2 aktualisiert wird Beispiel: 1. B = 3 2. A = B B = 7 Parallele Ausführung würde evtl. Wert A beeinflussen Eliminierung: Jede Iteration schreibt in private Kopie einer Variable (Registerumbenennung) 1. B1 = 3 2. A = B B2 = 7 Gelöst: Antiabhängigkeit zwischen 2. und 3. Nicht gelöst: Echte Abhängigkeit

33 Datenabhängigkeitstypen Ausgabeabhängigkeit: Thread 1 schreibt an eine Stelle Thread 2 schreibt an dieselbe Stelle Beispiel: 1. A = 2 * X 2. B = A / 3 3. A = 9 * Y 3. ausgabeabhängig von 1. Eliminierung: Jede Iteration schreibt in private Kopie einer Variable (Registerumbenennung) 1. A1 = 2 * X 2. B = A1 / 3 3. A2 = 9 * Y

34 Synchronisierung Gleichzeitiger Schreibzugriff auf gemeinsame Variablen führt zu Wettlaufsituationen (engl. race conditions) Der letzte schreibende Thread gewinnt Bezeichnet auch als critical section problem Lösung: Gegenseitiger Ausschluss (engl. mutual exclusion) Immer nur ein Thread kann gleichzeitig auf eine Variable zugreifen Gewährleistet durch kritische Abschnitte (engl. critical sections) In OpenMP critical-anweisung: Gesamter Block kann nur von genau einem Thread betreten werden. Alle anderen warten bis der Block verlassen wird atomic-anweisung: Anweisung wird als kanonische Operation gesehen, die immer nur von einem Thread gleichzeitig ausgeführt werden kann Nur für eine Zuweisung an skalare Variablen erlaubt (z.b. x+=c oder x++)

35 Beispiel Synchronisierung max = a[0]; #pragma omp parallel for num_threads(4) for (i = 1; i < SIZE; i++) { if (a[i] > max) { #pragma omp critical { // compare a[i] and max again because max // could have been changed by another thread after // the comparison outside the critical section if (a[i] > max) } } max = a[i]; }

36 Synchronisierung und Effizienz critical und atomic stellen großen Overhead dar Können gewonnene Effizient zunichte machen Deshalb: Einfachen Code nicht synchronisieren Hier kann sonst sogar sequentieller Code schneller sein

37 Sperren OpenMP bietet auch die Möglichkeit Sperren (engl. locks) auf einzelne Variablen zu setzen Sperrt ein Thread eine Variable, darf nur er darauf zugreifen bis die Sperre freigegeben wird Allokation der Sperre für eine Variable var: omp_init_lock(var) omp_destroy_lock(var) Setzen/Freigeben einer Sperre: omp_set_lock(var) omp_test_lock(var) omp_unset_lock(var) Flexibler als critical und atomic, da nicht auf Codeabschnitte beschränkt

38 Deadlocks Entsteht wenn mehrere Threads auf ein Ereignis (z.b. Freigabe einer Sperre) warten, das nur durch einen ebenfalls wartenden Thread erzeugt werden kann Beispiel 1: Ein Thread befindet sich in einer unbenannten critical section Er möchte in eine weitere unbenannte critical section eintreten Da immer nur ein Thread in eine unbenannten critical section eintreten kann, führt dies zu einem Deadlock Beispiel 2: Ein Thread versucht eine Sperre auf eine Ressource zu setzen, die er bereits gesperrt hat Führt ebenfalls zu einem Deadlock Lösung: Verwende omp_*_nest_lock(var)-funktionen

39 Ereignissynchronisierung mit Barrieren Vor einer Barriere wartet jeder Thread bis alle an diesem Punkt angekommen sind Erst dann überschreiten sie die Barriere Setzen einer Barriere: #pragma omp barrier Das Verhalten kann aber durch die nowait-anweisung geändert werden

40 reduction clause Möglichkeit wiederholte Operationen auf Variablen zu synchronisieren ohne atomic oder critical Viel effizienter als atomic oder critical Erlaubt für: +, *, -, &,, ^, &&, Kommutativ und assoziativ Variable wird mit dem Identitätselement initalisiert Identitätselement: I, sodass gilt A op I = A wobei op eine erlaubte Operation ist int i; double sum; #pragma omp for reduction(+ : sum) for (i = 1; i <= 1000; i++) { sum += 0.5 * ((double)i + 42.); }

41 Scheduling Unter Scheduling versteht man die Art und Weise der Aufteilung der Arbeit auf die verschiedenen Threads schedule(type[, chunk]) Die schedule clause gibt an, wie der kommende parallele Abschnitt in Stücke (engl. chunks) aufgeteilt wird Typen: static dynamic guided runtime

42 Scheduling static Aufgabe wird vor der Schleife in chunk Stücke zerlegt. Thread hört auf zu Arbeiten nachdem er seine zugewiesenen Iterationen abgearbeitet hat. Wenn chunk nicht angegeben wird, versucht der Compiler in etwa gleich große Stücke zu generieren dynamic Threads holen sich dynamisch neue Iterationen nachdem sie chunk Iterationen abgearbeitet haben Wenn chunk nicht angegeben wird, wird 1 verwendet

43 Scheduling guided (wenn chunk nicht angegeben, 1) Stückgröße nimmt exponentiell ab, startend von einer implentierungsabhängigen Größe, bis hin zu chunk Stücke werden dynamisch zur Laufzeit den Threads zugewiesen runtime (chunk darf nicht angegeben werden) Scheduling wird zur Laufzeit anhand der Umgebungsvariable OMP_SCHEDULE festgelegt Z.B. OMP_SCHEDULE= guided, 10

44 Leistungssteigerung Speedup: Verhältnis von Ausführungszeit des sequentiellen Algorithmus zur Ausführungszeit des parallelen Algorithmus mit p Threads Formal: Effizienz: Verhältnis von Speedup zur Anzahl an Threads Formal: t s p t e p s s p p p

45 Leistungssteigerung messen Mithilfe der OpenMP Wanduhr double start = omp_get_wtime(); //... printf("time elapsed: %.2lf ms", 1000*(omp_get_wtime() - start)); Auflösung/Genauigkeit ca. 2-3 Mikrosekunden (plattformabhängig) Daher: Keine zu kurzen Zeiten messen

46 Zusammenfassung OpenMP ermöglicht es, aktuelle Prozessoren optimal auszunutzen Leichtester Ansatz zur parallelen, multithreaded Programmierung Löst jedoch nicht die grundsätzlichen Probleme der Parallelisierung Korrektheit beibehalten Synchronisierung Leistungssteigerung

47 Zusammenfassung Verwende OpenMP wenn die Zielplattform ein Mehrkern/Mehrprozessor ist wenn die meiste Arbeit in Schleifen geschieht für Leistungssteigerung am Ende Beachte Kosten für Thread-Erzeugung und Synchronisation Es gibt keine Fehlerbehandlung Verhalten unter bestimmten Umständen nicht definiert Nicht jedes multithreading-problem lässt sich damit schneller lösen

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

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

Beispiel: Schleifenparallelisierung

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

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

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

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

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

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

Lehrstuhl für Datenverarbeitung. Technische Universität München. Leistungskurs C++ Multithreading

Lehrstuhl für Datenverarbeitung. Technische Universität München. Leistungskurs C++ Multithreading Leistungskurs C++ Multithreading Threading mit Qt Plattformübergreifende Thread-Klasse Sehr einfach zu benutzen Leider etwas schlecht dokumentiert Leistungskurs C++ 2 QThread Plattformübergreifende Thread-Klasse

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

Lehrstuhl für Datenverarbeitung. Technische Universität München. Leistungskurs C++ Multithreading

Lehrstuhl für Datenverarbeitung. Technische Universität München. Leistungskurs C++ Multithreading Leistungskurs C++ Multithreading Zeitplan 16.10. Vorlesung 23.10. Vorlesung, Gruppeneinteilung 30.10. Vorlesung, HA1 06.11. Vorlesung, HA2 13.11. Vorlesung entfällt wegen SVV 20.11. Präsentation Vorprojekt

Mehr

Universität Karlsruhe (TH)

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

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

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

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

Programmieren mit OpenMP

Programmieren mit OpenMP Programmieren mit OpenMP Dr. Victor Pankratius David J. Meder IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Inhalt Was

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

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

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

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

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

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

Universität Karlsruhe (TH)

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

Mehr

Shared-Memory Parallelisierung von C++ Programmen

Shared-Memory Parallelisierung von C++ Programmen Shared-Memory Parallelisierung von C++ Programmen 9. Februar 2006 1 Übersicht Ergebnisse Zusammenfassung 2 3 Übersicht Ergebnisse Zusammenfassung Übersicht Verbreitete Parallelisierungstechniken für Shared-Memory:

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

Betriebssysteme. G: Parallele Prozesse. (Teil B: Klassische Problemstellungen, Mutual Exclusion, kritische Regionen)

Betriebssysteme. G: Parallele Prozesse. (Teil B: Klassische Problemstellungen, Mutual Exclusion, kritische Regionen) Betriebssysteme G: Parallele Prozesse (Teil B: Klassische Problemstellungen, Mutual Exclusion, kritische Regionen) 1 Allgemeine Synchronisationsprobleme Wir verstehen ein BS als eine Menge von parallel

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

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

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

Übung zu Grundlagen der Betriebssysteme. 10. Übung 18.12.2012

Übung zu Grundlagen der Betriebssysteme. 10. Übung 18.12.2012 Übung zu Grundlagen der Betriebssysteme 10. Übung 18.12.2012 Aufgabe 1 a) Was versteht man unter einem kritischen Abschnitt oder kritischen Gebiet (critical area)? b) Welche Aufgabe hat ein Semaphor? c)

Mehr

Parallelisierung der Vektoraddition 149

Parallelisierung der Vektoraddition 149 OpenMP 148 OpenMP ist ein seit 1997 bestehender Standard mit Pragma-basierten Spracherweiterungen zu Fortran, C und C++, die eine Parallelisierung auf MP-Systemen unterstützt. Pragmas sind Hinweise an

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Programmieren mit OpenMP Prof. Dr. Walter F. Tichy Dr. Victor Pankratius Ali Jannesari Inhalt Was ist OpenMP? Parallele Regionen Konstrukte

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

PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes

PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes PThreads Prozesse und Threads Ein Unix-Prozess hat IDs (process,user,group) Umgebungsvariablen Verzeichnis Programmcode Register, Stack, Heap Dateideskriptoren, Signale message queues, pipes, shared memory

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Programmieren mit OpenMP Prof. Dr. Walter F. Tichy Dr. Victor Pankratius Ali Jannesari Inhalt Was ist OpenMP? Parallele Regionen Konstrukte

Mehr

Pthreads. David Klaftenegger. Seminar: Multicore Programmierung Sommersemester

Pthreads. David Klaftenegger. Seminar: Multicore Programmierung Sommersemester Seminar: Multicore Programmierung Sommersemester 2009 16.07.2009 Inhaltsverzeichnis 1 Speichermodell 2 3 Implementierungsvielfalt Prioritätsinversion 4 Threads Speichermodell Was sind Threads innerhalb

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

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

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

Viktor Styrbul. Inhaltverzeichnis:

Viktor Styrbul. Inhaltverzeichnis: Viktor Styrbul In dieser Ausarbeitung geht es um die Programmierschnittstelle OpenMP. Es wird an ihre Eigenschaften und ihre Merkmalle eingegangen. Es werden existierende Kernelemente aufgezählt und Ausführungsmodell

Mehr

Parallele Programmierung in C++ mit OpenMP

Parallele Programmierung in C++ mit OpenMP Parallele Programmierung in C++ mit OpenMP Lukas Wendt Hochschule für Angewandte Wissenschaften Hamburg lukas.wendt@haw-hamburg.de 31. Januar 2017 Zusammenfassung In den letzten Jahren haben sich Mehrkernsystem

Mehr

Praktikum Wissenschaftliches Rechnen

Praktikum Wissenschaftliches Rechnen Performance-optimized Programming Scientific Computing in Computer Science Prof. Dr. H.-J. Bungartz Dipl.-Ing. Ioan Muntean muntean@in.tum.de M.Sc. Csaba Vigh vigh@in.tum.de 5. November 2008 (Foliensatz

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

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

Laborskript Verteilte Systeme

Laborskript Verteilte Systeme Laborskript Verteilte Systeme Nebenläufigkeit in Java Prof. Dr. Oliver Haase 1 Threads Java bietet zwei verschiedene Arten an, Threads zu erzeugen und zu starten: Entweder durch Erweitern der Klasse Thread,

Mehr

MSDN Webcast: Parallelprogrammierung mit der Task Parallel Library für.net (Teil 1) Presenter: Bernd Marquardt

MSDN Webcast: Parallelprogrammierung mit der Task Parallel Library für.net (Teil 1) Presenter: Bernd Marquardt MSDN Webcast: Parallelprogrammierung mit der Task Parallel Library für.net (Teil 1) Presenter: Bernd Marquardt berndm@go-sky.de www.go-sky.de Die Serie: 5 Teile Teil 1: Einführung, Amdahl s Gesetz, Data

Mehr

4. Parallelprogrammierung

4. Parallelprogrammierung 4. Parallelprogrammierung AlDaBi Prak4kum David Weese 2010/11 René Rahn WS 2014/15 Inhalt Einführung in Parallelität OpenMP Bemerkungen zur P- Aufgabe Einführung in Parallelität Folien z.t. aus VL Programmierung

Mehr

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

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr

Threads. Netzwerk - Programmierung. Alexander Sczyrba Jan Krüger

Threads. Netzwerk - Programmierung. Alexander Sczyrba Jan Krüger Netzwerk - Programmierung Threads Alexander Sczyrba asczyrba@cebitec.uni-bielefeld.de Jan Krüger jkrueger@cebitec.uni-bielefeld.de Übersicht Probleme mit fork Threads Perl threads API Shared Data Mutexes

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

Paralleles Höchstleistungsrechnen. Parallele Programmiermodelle I

Paralleles Höchstleistungsrechnen. Parallele Programmiermodelle I Paralleles Höchstleistungsrechnen Parallele Programmiermodelle I Stefan Lang Interdisziplinäres Zentrum für Wissenschaftliches Rechnen Universität Heidelberg INF 368, Raum 425 D-69120 Heidelberg phone:

Mehr

Parallele Programmierung mit OpenMP

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

Mehr

4. Parallelprogrammierung. AlDaBi Praktikum

4. Parallelprogrammierung. AlDaBi Praktikum 4. Parallelprogrammierung AlDaBi Praktikum Inhalt Einführung in Parallelität OpenMP Bemerkungen zur P-Aufgabe Einführung in Parallelität Folien z.t. aus VL Programmierung von Hardwarebeschleunigern von

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

Übersicht. C Ein-/Ausgabe und Kontrollanweisungen. I/O-Funktionen aus stdio. printf() Ein-/Ausgabe. Kontrollanweisungen.

Übersicht. C Ein-/Ausgabe und Kontrollanweisungen. I/O-Funktionen aus stdio. printf() Ein-/Ausgabe. Kontrollanweisungen. Übersicht Ein-/Ausgabe C Ein-/Ausgabe und Kontrollanweisungen Kontrollanweisungen 1 2 I/O-Funktionen aus stdio printf() printf() - zum formatierten Ausgaben #include scanf() - zum formatierten

Mehr

2 SunHPC 2002, Einführung in OpenMP, Dieter an Mey

2 SunHPC 2002, Einführung in OpenMP, Dieter an Mey Parallele Programmierung für Shared-Memory Memory-Rechner mit OpenMP Parallele Programmierung für Shared-Memory Memory-Rechner mit OpenMP Dieter an Mey Rechen- und Kommunikationszentrum der RWTH Aachen

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

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

Vorlesung "Verteilte Systeme" Sommersemester 1999. Verteilte Systeme. Adreßraum. Rechner. Verteilte Systeme, Sommersemester 1999 Folie 19.

Vorlesung Verteilte Systeme Sommersemester 1999. Verteilte Systeme. Adreßraum. Rechner. Verteilte Systeme, Sommersemester 1999 Folie 19. Verteilte Systeme 19. Distributed Shared Memory Sharing!! No Sharing! Sharing? Evolution der Berechnungsmodelle Vergangenheit Gemeinsamer Speicher Einzelrechner Gegenwart Nachrichtenkommunikation Verteilte

Mehr

Parallel Processing in a Nutshell OpenMP & MPI kurz vorgestellt

Parallel Processing in a Nutshell OpenMP & MPI kurz vorgestellt Parallel Processing in a Nutshell & kurz vorgestellt 16. Juni 2009 1 / 29 1 Das Problem 2 2 / 29 1 Das Problem 2 3 2 / 29 1 Das Problem 2 3 4 2 / 29 1 Das Problem 2 3 4 2 / 29 Multi-Core Prozessoren halten

Mehr

Typische Speicherfehler in C

Typische Speicherfehler in C Typische Speicherfehler in C Thorsten Ploß Informatik Universität Hamburg Proseminar: C-Grundlagen und Konzepte 17.05.2013 1 / 13 Inhaltsverzeichnis Einleitung Klassische Speicherverwaltung - Fehlerquellen

Mehr

Lehrstuhl für Datenverarbeitung. Technische Universität München. Leistungskurs C++ Multithreading

Lehrstuhl für Datenverarbeitung. Technische Universität München. Leistungskurs C++ Multithreading Leistungskurs C++ Multithreading Threading mit Qt Plattformübergreifende Thread-Klasse Sehr einfach zu benutzen Leider etwas schlecht dokumentiert Leistungskurs C++ 2 QThread Plattformübergreifende Thread-Klasse

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 Programmiermodelle I

Parallele Programmiermodelle I Parallele Programmiermodelle I Stefan Lang Interdisziplinäres Zentrum für Wissenschaftliches Rechnen Universität Heidelberg INF 368, Raum 532 D-69120 Heidelberg phone: 06221/54-8264 email: Stefan.Lang@iwr.uni-heidelberg.de

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

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

Threads Einführung. Zustände von Threads

Threads Einführung. Zustände von Threads Threads Einführung Parallelität : Zerlegung von Problemstellungen in Teilaufgaben, die parallelel ausgeführt werden können (einfachere Strukturen, eventuell schneller, Voraussetzung für Mehrprozessorarchitekturen)

Mehr

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden Javaprogrammierung mit NetBeans Variablen, Datentypen, Methoden Programmieren 2 Java Bezeichner Bezeichner: Buchstabe _ $ Buchstabe _ $ Ziffer Groß- und Kleinbuchstaben werden strikt unterschieden. Schlüsselwörter

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

1.1 Merkmale von OpenMP

1.1 Merkmale von OpenMP 1 Einführung OpenMP ist eine Programmierschnittstelle, mit deren Hilfe Parallelität in C, C++ und Fortran-Programmen spezifiziert werden kann. Anders als viele konkurrierende Ansätze zur Parallelisierung

Mehr

11. Übung Informatik II - Operatorfunktionen

11. Übung Informatik II - Operatorfunktionen Stand: 26. Juni 2015 Inhalt 1 2 3 Übersicht 1 2 3 Warum Operatoren überladen? Großteil der Operatoren (Arithmetik, Logik, Vergleiche) nur für Standarddatentypen (Zahlen, Zeiger) implementiert vergleichbare

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

1 pulsierender Speicher

1 pulsierender Speicher 1 pulsierender Speicher 1.1 Aufgabentyp Gegeben sei das folgende C-Programm: [...] (a) Geben Sie den Gültigkeitsbereich jedes Objektes des Programms an. (b) Stellen Sie die Rechnung des Programms für die

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

Hochleistungsrechnen mit Windows. Compilieren, Ausführen und Debuggen paralleler Programme. Christian Terboven

Hochleistungsrechnen mit Windows. Compilieren, Ausführen und Debuggen paralleler Programme. Christian Terboven Hochleistungsrechnen mit Windows ompilieren, Ausführen und Debuggen paralleler Programme hristian Terboven Rechen- und Kommunikationszentrum RWTH Aachen 1 Hochleistungsrechnen mit Windows enter omputing

Mehr

Effizienz von Algorithmen

Effizienz von Algorithmen Effizienz von Algorithmen Letzte Bearbeitung: Jan 211 Ein wichtiger Aspekt bei Algorithmen sind seine "Kosten". Wir wollen uns hier ausschließlich mit der Laufzeit des gewählten Algorithmus beschäftigen.

Mehr

9. Vorlesung Betriebssysteme

9. Vorlesung Betriebssysteme Dr. Christian Baun 9. Vorlesung Betriebssysteme Hochschule Mannheim WS1213 1/39 9. Vorlesung Betriebssysteme Dr. Christian Baun Hochschule Mannheim Fakultät für Informatik wolkenrechnen@gmail.com Dr. Christian

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung

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

Tag 8 Repetitorium Informatik (Java)

Tag 8 Repetitorium Informatik (Java) Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 6.11.07, Weitere Anweisungen Übersicht 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung 4 for Schleife 5 while Schleife 6 do Schleife 7 break Anweisung 8 continue Anweisung 9 Leere

Mehr

1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung.

1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung. 1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung. Beschreiben Sie ferner je einen frei gewählten Datentyp aus der Gruppe der skalaren und einen aus der Gruppe der strukturierten

Mehr

Objektorientierte Programmierung OOP Programmieren mit Java

Objektorientierte Programmierung OOP Programmieren mit Java Objektorientierte Programmierung OOP Programmieren mit Java 5.1 Elementare Anweisungen 5.1.1 Ausdrucksanweisung 5.1.2 Leere Anweisung 5.1.3 Blockanweisung 5.1.4 Variablendeklaration 5.2 Bedingungen 5.2.1

Mehr

Elementare Konzepte von

Elementare Konzepte von Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)

Mehr

Nutzung paralleler Prozesse bei der Umweltsimulation

Nutzung paralleler Prozesse bei der Umweltsimulation Nutzung paralleler Prozesse bei der Umweltsimulation RALF Wieland rwieland@zalf.de ZALF/LSA Nutzung paralleler Prozesse bei der Umweltsimulation p. 1 Warum parallele Prozesse? Die Steigerung der Taktfrequenz

Mehr

OpenMP. Marco Nielinger. Westfälische Wilhelms-Universität Münster. Ausarbeitung. im Rahmen des Seminars Parallele Programmierung im SS03

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

Mehr

Programmierung in C: Vermischtes (Teil 1)

Programmierung in C: Vermischtes (Teil 1) Programmierung in C: Vermischtes (Teil 1) Gültigkeitsbereiche für Variablen C-Präprozessor (#define EPS 0.00001) Inkremtieren und Dekrementieren ( jahr++; restzeit--;) Speicherklassen (static) Typecasts

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

Multicore Parallelismus! in modernen CPUs

Multicore Parallelismus! in modernen CPUs Multicore Parallelismus! in modernen CPUs Johannes Hofmann, 21.5.2014 Seminar Architekturen von Multi- und Vielkern-Prozessoren Universität Erlangen-Nürnberg Lehrstuhl für Rechnerarchitektur Informatik

Mehr

Zusammenfassung des Handzettels für Programmieren in C

Zusammenfassung des Handzettels für Programmieren in C Zusammenfassung des Handzettels für Programmieren in C In der handschriftlichen Kopie werden mehr Abkürzungen verwendet. Alles Grün markierte dient zum lernen und wird nicht auf den Handzettel übertragen.

Mehr

Effizientes Memory Debugging in C/C++

Effizientes Memory Debugging in C/C++ Effizientes Memory Debugging in C/C++ Adam Szalkowski Embedded Computing Conference 2014 Ursachen/ Symptome Debugging Tools Ursachen / Symptome Was habe ich falsch gemacht? Was kann denn passieren im schlimmsten

Mehr

Christopher Schleiden

Christopher Schleiden Christopher Schleiden 5.6.2009 Ganz allgemein: Parallele Ausführung von Code 1 Prozess Gesamtaufgabe Ergebnis 4 Prozesse / Threads Gesamtaufgabe Teilaufgaben Einzelberechnung Ergebnis 5 Shared Processor

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