Automatische Parallelisierung
|
|
|
- Hansi Sommer
- vor 8 Jahren
- Abrufe
Transkript
1 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 (z.b. SMP) eingesetzt mit Aufruf geeigneter Funktionen aus der MPI-Bibliothek wird die Kommunikation zwischen den auf den verschiedenen Rechenknoten laufenden parallelen Prozessen implementiert MPI-Bibliothek muss hierzu thread-sicher sein (z.b. Sun MPI)! 52 Automatische Parallelisierung Idee: Compiler extrahiert automatisch die Parallelität aus einem sequentiellem Programm und generiert eine thread-basierte parallele Implementierung Ansatz: In den meisten HPC-Anwendungen wird die meiste Rechenzeit für (geschachtelte) Schleifen benötigt Ist auch eine automatische Parallelisierung von Schleifen durch Compiler möglich? Stand der heutigen Compilertechnik: Analyse von Datenabhängigkeiten in Schleifen zur Erkennung von sicher parallelisierbaren Schleifen Generierung von parallelem Code für einfache Schleifen mit Barrieren- Synchronisation am Schleifenende einige einfache Code-Transformationen werden zur Erhöhung der Anzahl parallelisierbarer Schleifen durchgeführt 53
2 Automatische Parallelisierung (Forts.) Einfache Schleifen (d.h. ohne Index-Abhängigkeiten zwischen Iterationen) lassen sich gut automatisch parallelisieren, z.b.: for (i=0 ; i<n ; i++) for (j=0 ; j<m ; j++) a[i][j] = b[i][j] * c[i][j]; for (i=0 ; i<n/2 ; i++) for (j=0 ; j<m/2 ; j++) a[2*i][2*j+1] = a[2*i][2*j+1] + b[3*i][j+2]; for (i=1 ; i<n/2 ; i++) a[2*i] = 0.5 * (a[2*i-1] + a[2*i+1]); automatische Parallelisierung z.b. auf Sun durch Aufruf von cc fast xautopar xloopinfo <file>.c o file und Setzen der Umgebungsvariablen PARALLEL auf den gewünschten Parallelitätsgrad 54 Automatische Parallelisierung (Forts.) Probleme entstehen bei automatischer Parallelisierung z.b. durch Schleifen mit Index-Abhängigkeiten zwischen Iterationen: for (i=1 ; i<n ; i++) a[i] = a[i-1] + b; for (i=0 ; i<n-2 ; i++) { a[i] = b[i] * c; b[i] = a[i+2] * d; Schleifen mit Funktionsaufrufen: for (i=0 ; i<n ; i=i+incr(i)) a[i] = a[i] + b[i] * c; for (i=0 ; i<n ; i=i++) a[i] = a[i] + compute(a,b,i); 55
3 Automatische Parallelisierung (Forts.) auf Zeiger basierende Schleifen: for (i=min ; i<max ; i++) *p++ = *q--; Schleifen mit auf Feldern basierenden Indexausdrücken: for (i=0 ; i<n ; i++) a[p[i]] = a[q[i]] + b[p[i]] + c; Schleifen mit mehreren datenabhängigen Ausgängen: for (i=0 ; i<n ; i++) { if (b[i] == 0) break; a[i] = a[i] / b[i]; Schleifen mit indexabhängigen Bedingungen: for (i=0 ; i<n ; i++) for (j=0 ; j<m ; j++) if (j > i) a[i][j] = a[i][j] + b[i][j] * c; 56 Automatische Parallelisierung (Forts.) Schleifen mit (eventuell versteckten) Reduktionen: for (i=0 ; i<n ; i++) { y = x * a[i]; x = y + 2 * b[i]; Schleifen mit skalaren Werten: for (i=0 ; i<n ; i++) { t = a[i]; a[i] = b[i]; b[i] = t; 57
4 Automatische Parallelisierung (Forts.) einige Probleme lassen sich (zumindest in einfachen Fällen) durch Code-Transformationen lösen, z.b. indem skalare Variablen durch Feldvariablen ersetzt werden Variablen in Schleifen umbenannt werden Anweisungen oder Funktionen eingesetzt werden ( Inlining ) Reduktionen von Vektoren automatisch erkannt und durch Aufrufe von parallelen Reduktionsfunktionen ersetzt werden (z.b. auf Sun möglich durch Angabe der zusätzlichen Option xreduction) eine weitere Leistungssteigerung kann erreicht werden, indem bei geschachtelten Schleifen innere und äußere Schleife vertauscht werden, um z.b. Parallelitätsgrad oder Anzahl paralleler Berechnungen zu erhöhen Schleifen automatisch entrollt werden mehrere kleine Schleifen mit identischem Indexbereich zusammengefasst werden 58 Automatische Vektorisierung bei der automatischen Vektorisierung wird aus Schleifen ein Code für Vektorprozessoren oder Vektoreinheiten generiert: in geschachtelten Schleifen wird stets nur die innere Schleife vektorisiert Schleifeniterationen müssen unabhängig sein nur einfache Zugriffsmuster auf Feldelemente gestattet die N Iterationen einer Schleife werden derart in Streifen unterteilt, dass die Zahl k der Feldelemente je Streifen in ein Vektorregisters passt (ggf. Sonderbehandlung für die letzten Iterationen erforderlich, wenn N kein Vielfaches von k ist) Beispiel: Gegeben sei ein Prozessor mit 128-Bit Vektorregister und eine Schleife mit den float Vektoren a, b und c vor der Vektorisierung: for (i=0; i<n; i++) c[i] = a[i] * b[i] nach der Vektorisierung: for (i=0; i<n; i++) c[i:i+3] = a[i:i+3] * b[i:i+3] 59
5 Automatische Vektorisierung (Forts.) Intel C/C++ Compiler kann ab Version 7.0 automatisch Code für die Vektoreinheiten MMX, SSE und SSE2 des Intel Pentium 4 Prozessors generieren Aufruf erfolgt z.b. mit: icc xw vec_report3 prog.c in aufeinanderfolgenden Iterationen dürfen nur Zugriffe auf benachbarte Feldelemente erfolgen (d.h. mit stride = 1) Compiler kann effizienteren Code generieren, wenn Daten auf 16-Byte Grenzen ausgerichtet sind es können sowohl for als auch while Schleifen vektorisiert werden; sie dürfen jedoch nur einen Eintritts- und einen Ausgangspunkt aufweisen 60 High Performance FORTRAN (HPF) im Jahre 1993 vom HPF Forum entwickelter Standard als Ergänzung zu FORTRAN 90 Ziel: architekturunabhängige parallele Programmierung FORTRAN ermöglicht einfachere Parallelisierung als C, da keine Zeiger vorhanden sind i.a. keine dynamischen Datenstrukturen unterstützt werden HPF gestattet explizite datenparallele Programmierung durch Datenstrukturen (Arrays) für mehrdimensionale Datenfelder parallele Ausführung auf Feldkomponenten mittels FORALL: FORALL (I=2:N-2:2, J=1:M) A(I,J) = B(I-1,J)+C(I+1,J) oder durch eine parallele Zuweisung: M(1:N,7) = 0.5 zusätzliche INDEPENDENT-Direktive zur Kennzeichnung konfliktfrei parallel ausführbarer Schleifen 61
6 HPF (Forts.) einige zentrale Ideen von High Performance FORTRAN: Definition von Indexräumen ( index templates ):!HPF$ TEMPLATE t(1:100,1:100) Angabe des Alignments von Feldern zu Indexräumen oder anderen Feldern:!HPF$ ALIGN A(I,J) WITH t(j,i)!hpf$ ALIGN B(I,J) WITH t(2*i,2*j) zusätzliche Layout-Direktive geben an, wie einzelne Index-Dimensionen auf p Prozessoren verteilt (d.h. partitioniert) werden: REAL A(100,100), B(50,50), C(100,100,2)!HPF$ DISTRIBUTE t(block,*), C(CYCLIC,BLOCK,*) mit BLOCK : Datenelement i wird auf Prozessor i DIV p abgebildet CYCLIC : Datenelement i wird auf Prozessor i MOD p abgebildet * : Elemente dieser Dimension werden nicht verteilt zur Laufzeit Reorganisation der Daten möglich: REDISTRIBUTE bzw. REALIGN (Syntax wie DISTRIBUTE und ALIGN) 62 HPF (Forts.) parallele implizite Kommunikation über Indexausdrücke: FORALL (I=1:100) A(I,2) = C(I,5,1) viele eingebaute Kommunikationsfunktionen: SUM, TRANSPOSE,... HPF unterstützt mehrdimensionale virtuelle Prozessortopologien, Beispiel: Matrix-Multiplikation in HPF REAL*4, DIMENSION(1000,1000) :: A,B,C!HPF$ PROCESSORS GRID(2, 2)!HPF$ DISTRIBUTE C(BLOCK,BLOCK) onto GRID!HPF$ ALIGN A(I,J) WITH C(I,*)!HPF$ ALIGN B(I,J) WITH C(*,J) INTEGER :: I,J,K DO I = 1, 1000 DO J = 1,1000 DO K = 1,1000 C(I,J) = C(I,J) + A(I,K) * B(K,J) END DO END DO END DO 63
7 Java und Java? höherer Speicherbedarf (ca. 5-fach im Vgl. zu C) geringere Geschwindigkeit (ca % langsamer im Vgl. zu C) durch Teilinterpretation des Codes mittels Just-in-time Übersetzer Probleme bei Gleitkomma-Anwendungen durch Forderung nach exakter Reproduzierbarkeit von Ergebnissen genauere Zwischenergebnisse in FPU müssen vor jeder Folgeoperation auf das von Java vorgeschriebene Zahlenformat gerundet werden! Verbot von Multiply&Add Maschinenbefehlen ineffiziente interne Realisierung von mehrdimensionalen Feldern schlechtere Lesbarkeit von Programmen (kein Überladen von Operatoren) Threads sind bereits fester Bestandteil der Sprache: Starten eines Threads durch Instantiierung eines Objekts von der Klasse Thread und Aufruf der Methode start() gegenseitiger Ausschluss durch Schlüsselwort synchronized 64 Java (Forts.) dasjava Grande Forum ( versucht, eine zum Einsatz in HPC Anwendungen besser geeignete Java- Umgebung zu definieren, z.b. durch neue Schlüsselworte strictfp und fastfp neue Klassen für mehrdimensionale Felder Festlegen einer Schnittstelle für MPI zukünftige Bedeutung von Java für HPC unklar! 65
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
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
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
Beispiel: Schleifenparallelisierung
Beispiel: Schleifenparallelisierung for (i = 0; i high) { printf ( Exiting during iteration %d\n,i); break; for (j=low;j
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
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
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
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,
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
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
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
Programmtransformationen: Vom PRAM Algorithmus zum MPI Programm
Programmtransformationen: Vom PRAM Algorithmus Dr. Victor Pankratius David J. Meder IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe
Peter Prinz Ulla Kirch-Prinz C+ + Lernen und professionell anwenden. ffl mitp
Peter Prinz Ulla Kirch-Prinz C+ + Lernen und professionell anwenden ffl mitp Inhaltsverzeichnis Einleitung 19 1 Grundlagen 21 Entwicklung und Eigenschaften von C + + 22 Objektorientierte Programmierung
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
Wertebereich und Genauigkeit der Zahlendarstellung
Wertebereich und Genauigkeit der Zahlendarstellung Sowohl F als auch C kennen bei ganzen und Floating Point-Zahlen Datentypen verschiedener Genauigkeit. Bei ganzen Zahlen, die stets exakt dargestellt werden
zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
Parallele Programmiermodelle
Parallele Programmiermodelle ProSeminar: Parallele Programmierung Semester: WS 2012/2013 Dozentin: Margarita Esponda Einleitung - Kurzer Rückblick Flynn'sche Klassifikationsschemata Unterteilung nach Speicherorganissation
Kapitel 4.2 Parallele Algorithmen
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Kapitel 4.2 Parallele Algorithmen SWT I Sommersemester 2009 Prof. Dr. Walter F. Tichy Dipl.-Inform. David J. Meder Überblick Matrix-Vektor-Multiplikation
Programmiervorkurs für die Numerik Teil 2/4
line 1 1 0.8 0.6 0.4 0.2 0-0.2-0.4 Programmiervorkurs für die Numerik Teil 2/4 Christian Power Mathematisches Institut Universität Tübingen -8-6 -4-2 0 05.10.2016 2 4 6 8-8 -6-4 -2 0 2 4 6 8 Wiederholung
1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r
1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen
1. Referenzdatentypen: Felder und Strings
1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen
II.1.1. Erste Schritte - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1 - 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
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
2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
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:
WiMa-Praktikum 1. Woche 8
WiMa-Praktikum 1 Universität Ulm, Sommersemester 2017 Woche 8 Lernziele In diesem Praktikum sollen Sie üben und lernen: Besonderheiten der For-Schleife in Matlab Wiederholung des Umgangs mit Matrizen und
Felder, Zeiger und Adreßrechnung
Felder, Zeiger und Adreßrechnung Felder bestehen aus Variablen eines einzigen Datentyps. Bisher kennen wir eindimensionale Felder. In C sind Felder mit beliebigen Dimensionen möglich. Unsere räumliche
Berichte aus der Informatik. Dieter Pawelczak. Start in die C-Programmierung
Berichte aus der Informatik Dieter Pawelczak Start in die C-Programmierung Shaker Verlag Aachen 2012 Inhaltsverzeichnis Inhaltsverzeichnis i 1 Einleitung 1 1.1 Umfeld und Aufbau des Buches 1 Die Programmiersprache
Polymorphie Begriffsklärung und Anwendung
Polymorphie Begriffsklärung und Anwendung Klaus Kusche, Mai 2014 Inhalt Ziel & Voraussetzungen Was bedeutet Polymorphie? Die einzelnen Arten der Polymorphie: Konzept Beispiel / Anwendung Nutzen Implementierung
II.1.1. Erste Schritte - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1 - 1.
Peg-Solitaire. Florian Ehmke. 29. März / 28
Peg-Solitaire Florian Ehmke 29. März 2011 1 / 28 Gliederung Einleitung Aufgabenstellung Design und Implementierung Ergebnisse Probleme / Todo 2 / 28 Einleitung Das Spiel - Fakten Peg-33 33 Löcher, 32 Steine
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
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
Physische Datenstrukturen
Elementare Datentypen Strukturierte Datentypen Zeiger Seite 1 Einfache Datentypen Datentyp char Verwendung: ASCII-Zeichen Wertebereich: alle darstellbaren Zeichen, 8 bit lange Ganzzahlen im Intervall -128
2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
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,
Programmieren I. Arrays Heusch 7.2 Ratz Institut für Angewandte Informatik
Programmieren I Arrays Heusch 7.2 Ratz 5.1 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Arrays: Definition Arrays (dt. Felder) dienen zum Speichern mehrerer gleichartiger Daten
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
Programmieren in C/C++ und MATLAB
Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 5-1 Übung Schreiben Sie ein Programm, das die Zahl π durch π = 4 4 4 4 4 4 + + +... 3 5 7 9 11
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
Überblick. R.Grossmann / P. Sobe 1
Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 3. Grundlagen des Typkonzepts von C++ 4. Ziele der Objektorientierung 5. Objekt und Klasse, Elementfunktionen
FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung
C Sprachelemente für Übung 2 Typumwandlungen (type casts) Bei Ausdrücken, in denen Operanden mit unterschiedlichem Typ vorkommen, werden diese vom Compiler vor der Ausführung automatisch in einen gemeinsamen
Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08
Reihungen Prof. Dr. Christian Böhm In Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende
Just-In-Time-Compiler (2)
Just-In-Time-Compiler (2) Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2015/2016 V. Sieh Just-In-Time-Compiler
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++
Das Einsteigerseminar Objektorientierte Programmierung in Java
Alexander Niemann Das Einsteigerseminar Objektorientierte Programmierung in Java -H-H Inhalt Vorwort 13 Einleitung 15 1 Java 21 1.1 Die Geschichte von Java 22 1.2 Das Konzept 24 Klassisch - Compiler und
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)
Programmiertechnik 1 FOR-SCHLEIFEN
Programmiertechnik 1 FOR-SCHLEIFEN In diesem Dokument wollen wir uns mit Kontrollstrukturen befassen. Dazu sind im Folgenden einige Übungsaufgaben zu den Themen Schleifen (FOR, WHILE, DO) und Bedingungen
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
Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1
Inhaltsverzeichnis Grundlagen und Einführung (1. Band) 1 1 Einleitung und Vorwort 1 1.1 Vorwort zur 13. Auflage....................... 1 1.2 Vorwort zur 10. Auflage....................... 1 1.3 Voraussetzungen...........................
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:
zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
Programmiertechnik 1 FOR-SCHLEIFEN
Programmiertechnik 1 FOR-SCHLEIFEN In diesem Dokument wollen wir uns mit Kontrollstrukturen befassen. Dazu sind im Folgenden einige Übungsaufgaben zu den Themen Schleifen (FOR, WHILE, DO) und Bedingungen
Tutorium Softwaretechnik I
Tutorium Softwaretechnik I Moritz Klammler 11. Juli 2017 Fakultät für Informatik, IPD Tichy Titelfoto: Copyright (C) 2010 Multimotyl CC BY-SA 3.0 1 11. Juli 2017 Moritz Klammler - Tutorium Softwaretechnik
Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg
Sprachkonstrukte Einführung in Java Folie 1 von 20 12. Mai 2011 Ivo Kronenberg Inhalt Kommentare Identifier (Bezeichner) Variablen Numerische Ausdrücke und Typen Kontrollstrukturen Verzweigungen Bedingungen
Werkzeuge zur Programmentwicklung
Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul
Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke
Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke 1 Links Stellenwertsysteme mit Links zu Zahlensysteme: http://de.wikipedia.org/wiki/stellenwertsystem ASCII-Code: http://de.wikipedia.org/wiki/ascii
C.3 Funktionen und Prozeduren
C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens
Einführung in die Modelltransformation mit Xtend
Einführung in die Modelltransformation mit Xtend 12. Dezember 2012 Taentzer Modellgetriebene Softwareentwicklung 297 Überblick Xtend: Eine statisch getypte Sprache, die zur Modellzu-Text-Transformation
Einfache Datentypen in JAVA
5.4.1. Einfache Datentypen in JAVA Ganzzahlige Datentypen byte 8 bits -128
RO-Tutorien 15 und 16
Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 2 am 04.05.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft
