1. Einführung in OpenMP
|
|
|
- Liese Maus
- vor 9 Jahren
- Abrufe
Transkript
1 1. Einführung in OpenMP Übersicht Einführung Homogene und inhomogene Arbeitsverteilung Rekursive Parallelität Beispiele Parallele Programmierung 1 Nicolas Maillard, Marcus Ritt
2 1 Überblick OpenMP: Vereinfachte Parallelisierung mit Threads Idee: Programm durch spezielle Hinweise (Direktiven) parallelisieren Schleifenparallelisierung: Fork Join Modell Vorteile» Einfacher als Threads: Höhere Abstraktion» Sequentielle Version weiterhin nutzbar Nachteile» Nur gemeinsamer Hauptspeicher» Eingeschränkte Anwendung (Schleifentypen, C++) Sprachen C, C++, Fortran Homepage Parallele Programmierung 2 Nicolas Maillard, Marcus Ritt
3 1 Überblick Entwicklung 1997/1998: Version /2002: Version : Version : Version 3.0» Tasks Unterstützung Kommerzielle Compiler: IBM, Portland, Intel OpenSource: GNU gcc» OpenMPI 2.5 ab gcc 4.2» OpenMPI 3.0 ab gcc 4.4 Parallele Programmierung 3 Nicolas Maillard, Marcus Ritt
4 1 Direktiven Spezielle Compileranweisungen In C und C++» #pragma omp <omp anweisung> <optionale argumente> In Fortran»!$omp <omp anweisung> <optionale argumente> Parallele Programmierung 4 Nicolas Maillard, Marcus Ritt
5 2 Einführung Sequentielles Programm double res[10000]; for (int i=0 ; i<10000 ; i++) langwierige_berechnung(&res[i]); Parallelisiert mit OpenMP double res[10000]; #pragma omp parallel for for (int i=0 ; i<10000 ; i++) langwierige_berechnung(&res[i]); Parallele Programmierung 5 Nicolas Maillard, Marcus Ritt
6 2 Einführung Was passiert im Hintergrund? OpenMP nutzt SPMD Modell (Single program, multiple data) Programm startet sequentiell mit einem einzigen Thread Direktive parallel startet ein Team Aktueller Thread ist Master Alle Threads bearbeiten den folgenden Abschnitt Direktive for, teilt die Iterationen auf die Team Mitglieder auf Jeder Thread bearbeitet einen Teil der Iterationen Ende das parallelen Blocks Implizite Synchronisation (Barrier) Nur der Master läuft weiter Parallele Programmierung 6 Nicolas Maillard, Marcus Ritt
7 2 Einführung: Direktiven Parallele Regionen omp parallel Definition gemeinsamer und privater Daten omp shared, private,... Aufteilung von Schleifen omp for Synchronisation omp atomic, critical, barrier,... Bibliotheksfunktionen und Umgebungsvariablen omp_set_num_threads(), omp_set_lock(),... OMP_SCHEDULE, OMP_NUM_THREADS,... Parallele Programmierung 7 Nicolas Maillard, Marcus Ritt
8 2 Einführung Festlegung der Anzahl der Threads: Option num_threads double res[10000]; #pragma omp parallel for num_threads(4) for (int i=0; i<10000 ; i++) langwierige_berechnung(&res[i]); Bedingte Parallelisierung: Option if double res[elemente]; #pragma omp parallel for if(elemente>500) for (int i=0; i<elemente ; i++) langwierige_berechnung(&res[i]); Parallele Programmierung 8 Nicolas Maillard, Marcus Ritt
9 2 Einführung Einige Parameter können auch über OMP Bibliotheksfunktionen gesetzt werden omp_set_num_threads(4); double res[10000]; #pragma omp parallel for for (int i=0; i<10000 ; i++) langwierige_berechnung(&res[i]); über Umgebungsvariablen beeinflusst werden» export OMP_NUM_THREADS=4 Parallele Programmierung 9 Nicolas Maillard, Marcus Ritt
10 3 Arbeitsverteilung Parallele Ausführung mit parallel Folgender Block wird von allen Threads parallel ausgeführt Programmierer verteilt die Arbeit manuell double A[10000]; omp_set_num_threads(4); #pragma omp parallel { int th_id = omp_get_thread_num(); langwierige_berechnung (th_id, A); printf( Beendet.\n ); Parallele Programmierung 10 Nicolas Maillard, Marcus Ritt
11 3 Arbeitsverteilung Aufteilung von Schleifeniteration mit for OpenMP teilt Iterationen den einzelnen Threads zu Nur for Schleifen mit bestimmter Syntax int i; #define N 1000 #pragma omp parallel #pragma omp for for (i=0 ; i<n ; i++) { langwierige_berechnung (i); printf( Beendet.\n ); Parallele Programmierung 11 Nicolas Maillard, Marcus Ritt
12 3 Arbeitsverteilung Beispiel in C++ (OpenMP 3.0) Nur random_acess_iterator möglich vector<int> v(10000); typedef vector<int>::iterator iter; #pragma omp parallel #pragma omp for for (iter i=v.begin(); i < v.end() ; i++) { langwierige_berechnung (*i); printf( Beendet.\n ); Parallele Programmierung 12 Nicolas Maillard, Marcus Ritt
13 3 Arbeitsverteilung Einschränkungen Nur ganzahlige Typen (mit oder ohne Vorzeichen) Test nur mit <, <=, >, >= Schleifenvariable verändern: nur einfache Ausdrücke» Operatoren ++,,+, +=, = Obere und untere Grenze unabhängig von Schleifendurchlauf» Ausdrücke sind möglich Automatische Synchronisation nach for (barrier) can mit nowait unterdrückt werden Parallele Programmierung 13 Nicolas Maillard, Marcus Ritt
14 3 Arbeitsverteilung: Aufteilung von Schleifen Konzeptuell: Indexraum 0..N 1 wird aufgeteilt und zugewiesen Angabe von schedule schedule(static[,k])» Indexraum wird in Blöcke der Größe k aufgeteilt und reihum an die Threads zugeweisen schedule(dynamic[,k])» Indexraum wird in Blöcke der Größe k aufgeteilt und nach Bedarf an die Threads zugewiesen schedule(guided[,k])» Index wird in Blöcke proportional zur Restarbeit por Thread aufgeteilt und nach Bedarf zugewiesen. k = minimale Iterationszahl schedule(auto)» Implementierung spezifisch (Standard, wenn keine Angabe) schedule(runtime)» Entscheidung zur Laufzeit (omp_set_schedule, omp_get_schedule, OMP_SCHEDULE) Parallele Programmierung 14 Nicolas Maillard, Marcus Ritt
15 3 Arbeitsverteilung: Aufteilung von Schleifen Beispiel, 100 Iterationen, 3 Threads, homogene Last schedule(static,1)» schedule(static,5)» schedule(guided,1)» Thread 0: 33,1 iterations» Thread 1: 22,6,3,1,1 iterations» Thread 2: 15,10,4,2,1,1 iterations schedule(guided,5)» Thread 0: 33 iterations» Thread 1: 22,6,5 iterations» Thread 2: 15,10,5,4 iterations Parallele Programmierung 15 Nicolas Maillard, Marcus Ritt
16 3 Arbeitsverteilung Anwendungsbeispiel: Raytracing Idee: Jeder Thread rechnet einen Streifen Problem: Ungleichmäßige Last Mit OpenMP: Jeder Thread berechnet 10 Spalten y #pragma omp parallel #pragma omp for schedule(dynamic,10) for (int x=0; x <= Breite; x++) { berechne_spalte (x); x Parallele Programmierung 16 Nicolas Maillard, Marcus Ritt
17 3 Arbeitsverteilung Zusammenfassung von Schleifen for Direktive wirkt nur auf nächste Schleife collapse(k) erlaubt, kombiniert Indexraum der folgenden k Schleifen #pragma omp parallel #pragma omp for schedule(dynamic,20) collapse(2) for (int x=0; x <= Breite; x++) { for (int y=0; x <= Höhe; y++) { berechne_pixel (x,y); Jeder Thread berechnet 20 Pixel Vorteil: Feinere Lastverteilung Parallele Programmierung 17 Nicolas Maillard, Marcus Ritt
18 3 Arbeitsverteilung Anwendungsbeispiel: Game of life Dasselbe Muster Durch zwei Arrays: Lese aber keine Schreibkonflikte #pragma omp parallel #pragma omp for schedule(dynamic,10) for (int i=1; i <= height; i++) for (int j=1; j <= width; j++) update_cell(i,j); Parallele Programmierung 18 Nicolas Maillard, Marcus Ritt
19 3 Arbeitsverteilung Anwendungsbeispiel: LU Zerlegung for(k=0; k<=n-2; k++) { #pragma omp parallel for for (i=k+1; i<=n-1; i++) M[i][k] = -M[i][k] / M[k][k]; #pragma omp parallel for collapse(2) for(j=k+1; j<=n-1; j++) for(i=k+1; i<=n-1; i++) M[i][j] = M[i][j] + M[i][k]*M[k][j]; Parallele Programmierung 19 Nicolas Maillard, Marcus Ritt
20 3 Arbeitsverteilung Parallelisierung ohne Schleifen mit Abschnitten Jeder Abschnitt wird einem Thread zugewiesen Nur statische Parallelität möglich: Abschnitt gilt für ganzes Team #pragma omp parallel #pragma omp sections { #pragma omp section Arbeit1( ); #pragma omp section Arbeit2( ); #pragma omp section Arbeit3( ); // erstes #pragma optional Parallele Programmierung 20 Nicolas Maillard, Marcus Ritt
21 3 Arbeitsverteilung Einfache Synchronisation Folgenden Abschnitt nur von einem Thread ausführen #pragma omp single Parallele Programmierung 21 Nicolas Maillard, Marcus Ritt
22 3 Arbeitsverteilung Parallelisierung ohne Schleifen mit Tasks (OpenMP 3.0) Jeder Task wird (reihum) einem Thread zugewiesen Unterschied zu sections» Task kann von beliebigem Thread im Team definiert werden» Ein Thread im Team führt den Task aus» Definition eines Tasks an beliebiger Stelle Syntax: #pragma omp task Parallele Programmierung 22 Nicolas Maillard, Marcus Ritt
23 3 Arbeitsverteilung Beispiel: Quicksort mit Task void quicksort(int a[], int l, int r) { if(r>l) { int i = partition(a,l,r) #pragma omp task quicksort(a, l, i-1); quicksort(a, i+1, r); int main() { #pragma openmp parallel { #pragma openmp single nowait quicksort(a,1, 99); Parallele Programmierung 23 Nicolas Maillard, Marcus Ritt
24 3 Arbeitsverteilung Zum Vergleich: Quicksort mit verschachtelten Teams void quicksort(int a[], int l, int r) { if(r>l) { int i = partition(a,l,r); #pragma omp parallel sections { #pragma omp section quicksort(a, l, i-1); #pragma omp section quicksort(a, i+1, r); int main() { quicksort(a,1, 99); Parallele Programmierung 24 Nicolas Maillard, Marcus Ritt
25 Reference: Some useful library functions #include <omp.h> omp_get_num_procs() omp_get_num_threads() omp_set_num_threads() omp_get_max_threads() omp_get_thread_num() // get number of processors // # of running threads // set # of running threads // maximum # of threads // current thread's id Parallele Programmierung 25 Nicolas Maillard, Marcus Ritt
26 Reference: Some useful environment variables OMP_NUM_THREADS OMP_SCHEDULE OMP_STACKSIZE # number of threads to use # scheduling policy for # loop with schedule(runtime) # size of thread stacks Parallele Programmierung 26 Nicolas Maillard, Marcus Ritt
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
Beispiel: Schleifenparallelisierung
Beispiel: Schleifenparallelisierung for (i = 0; i high) { printf ( Exiting during iteration %d\n,i); break; for (j=low;j
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
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
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
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
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
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
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++
Threads und OpenMP. Frank Mietke <[email protected]> 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
Praktikum: Paralleles Programmieren für Geowissenschaftler
Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart, Ulrich Körner, Nathanael Hübbe [email protected] OpenMP Einführung I: Allgemeine Einführung Prozesse
4. Parallelprogrammierung AlDaBi Prak4kum
4. Parallelprogrammierung AlDaBi Prak4kum David Weese WS 2010/11 Inhalt Einführung in Parallelität OpenMP Bemerkungen zur P- Aufgabe EINFÜHRUNG IN PARALLELITÄT Folien z.t. aus VL Programmierung von Hardwarebeschleunigern
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
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
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
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
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
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
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
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
Parallele Programmiermodelle
Parallele Programmiermodelle ProSeminar: Parallele Programmierung Semester: WS 2012/2013 Dozentin: Margarita Esponda Einleitung - Kurzer Rückblick Flynn'sche Klassifikationsschemata Unterteilung nach Speicherorganissation
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
Parallele Programmierung in C++ mit OpenMP
Parallele Programmierung in C++ mit OpenMP Lukas Wendt Hochschule für Angewandte Wissenschaften Hamburg [email protected] 31. Januar 2017 Zusammenfassung In den letzten Jahren haben sich Mehrkernsystem
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
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
Inhaltsverzeichnis. Inhalt. Bemerkung... 9 Vorwort Programme und Programmiersprachen
Inhalt 3 Bemerkung... 9 Vorwort... 10 1 Programme und Programmiersprachen 1.1 Assembler... 13 1.2 Höhere Programmiersprachen... 15 1.2.1 Interpreter... 16 1.2.2 Compiler... 17 1.2.3 Zwischencode... 18
7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});
S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht
Erste Java-Programme (Scopes und Rekursion)
Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Scopes und Rekursion) Tutorium Bioinformatik (WS 18/19) Konstantin: [email protected] Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/
C für Java-Programmierer
Carsten Vogt C für Java-Programmierer ISBN-10: 3-446-40797-9 ISBN-13: 978-3-446-40797-8 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-40797-8 sowie im
Vorkurs Informatik WiSe 16/17
Java Schleifen und Arrays Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 06.10.2016 Technische Universität Braunschweig, IPS Überblick Kommentare Typen Kontrollstrukturen Arrays 06.10.2016 Dr. Werner
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
C für Java- Programmierer
Carsten Vogt C für Java- Programmierer mit 59 Bildern, 36 Tabellen und 35 Aufgaben HANSER Inhalt 1 Einführung 13 Schnelleinstieg 14 1.1 C und Java von den Anfängen bis heute 15 1.1.1 Die Entwicklung von
Parallele Programmierung mit OpenMP und MPI
Parallele Programmierung mit OpenMP und MPI oder Wieso früher alles besser war Robin Geyer 08.10.2010 Robin Geyer () Parallele Programmierung mit OpenMP und MPI 08.10.2010 1 / 52 Fahrplan Einführung /
Wiederholungen / Schleifen
Wiederholungen / Schleifen Repetitive Ausführung von Instruktionen InE1 M. Thaler, [email protected] Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Beispiel Quadratzahlen von 1000 bis 1009 berechnen
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
Javakurs für Anfänger
Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von
5. Parallelprogrammierung II und q-gram Indizes. AlDaBi Praktikum
5. Parallelprogrammierung II und q-gram Indizes AlDaBi Praktikum Inhalt Parallelprogrammierung II q-gram Indizes Bemerkungen zur P-Aufgabe PARALLELPROGRAMMIERUNG II OpenMP - Eine Einführung in die parallele
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:
Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome
Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome (Timo Heinrich, [email protected]) Inhaltsverzeichnis: 0.Einleitung 1.Teil: Helloworldprogramm 1.1 Quellcode: Helloworld.cpp 1.2
Einführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom
Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon
4. Ablaufsteuerung (Kontrollstrukturen) 4.1 Anweisungen 4.2 Selektion (bedingte Anweisung) 4.3 Iteration 4.4 Flussdiagramm (Programmablaufplan)
4. Ablaufsteuerung (Kontrollstrukturen) 4.1 Anweisungen 4.2 Selektion (bedingte Anweisung) 4.3 Iteration 4.4 Flussdiagramm (Programmablaufplan) 4. Ablaufsteuerung 4-1 4.1 Anweisungen Ein Programm besteht
Anleitung für zwei Fortran-Openmp-Beispiele auf der NWZSuperdome
Anleitung für zwei Fortran-Openmp-Beispiele auf der NWZSuperdome (Timo Heinrich, [email protected]) Inhaltsverzeichnis: 0.Einleitung 1.Teil: Helloworldprogramm 1.1 Quellcode: Helloworld.f90 1.2
Angewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der
Programmieren I. Kapitel 5. Kontrollfluss
Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,
Einleitung Grundlagen Erweiterte Grundlagen Zusammenfassung Literatur. C: Funktionen. Philip Gawehn
C: Funktionen Philip Gawehn Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg Do., 22.05.2014 1 / 23 Gliederung
einlesen n > 0? Ausgabe Negative Zahl
1 Lösungen Kapitel 1 Aufgabe 1.1: Nassi-Shneiderman-Diagramm quadratzahlen Vervollständigen Sie das unten angegebene Nassi-Shneiderman-Diagramm für ein Programm, welches in einer (äußeren) Schleife Integer-Zahlen
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
4.4 Imperative Algorithmen Verzweigung und Iteration
Eine weitere bedingte Schleife kann in Java mit dem Schlüsselwort for definiert werden: for (; i ; ) Alle drei Bestandteile im Schleifenkopf sind Ausdrücke
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
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
Projektseminar Parallele Programmierung
HTW Dresden WS 2017/2018 Organisatorisches Praktikum, 4 SWS Do. 15:10-18:30 Uhr, Z136c, 2 Doppelstunden Labor Z 136c ist Donnerstag 15:10-18:30 reserviert, gemeinsam mit anderen Projektseminaren Selbständige
Tag 4 Repetitorium Informatik (Java)
Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)
7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt
7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Kontrollfragen Rekursion Was bedeutet Rekursion? Geben Sie Beispiele
Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff
Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Agenda Elementare Einführung C Programm Syntax Datentypen, Variablen und Konstanten Operatoren und Ausdrücke Kontrollstrukturen
2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)
Parallele Programmierung. Parallele Programmierung Memory-Rechner mit OpenMP
Parallele Programmierung für Shared-Memory Memory-Rechner mit OpenMP Dieter an Mey Rechen- und Kommunikationszentrum der RWTH Aachen 21. Januar 2002 anmey@rz rz.rwth-aachen.de http://www www.rz.rwth-aachen.de
