Multi-threaded Programming with Cilk

Größe: px
Ab Seite anzeigen:

Download "Multi-threaded Programming with Cilk"

Transkript

1 Multi-threaded Programming with Cilk Hobli Taffame Institut für Informatik Ruprecht-Karls Universität Heidelberg 3. Juli / 27

2 Inhaltsverzeichnis 1 Einleitung Warum Multithreading? Ziele 2 Was ist Cilk? Cilk für Multithreading Wie funktioniert Cilk? Multithreaded Computation 3 Performance Work, Span, Speedup 4 Scheduler und Work-stealing Scheduler Work-stealing 5 Zusammenfassung 2 / 27

3 Einleitung Warum Multithreading? Warum Multi-Core? Abbildung: Graphik zur Belegung des mooreschen Gesetzes Quelle: 3 / 27

4 Einleitung Warum Multithreading? Warum Multi-Core? Bis zum Jahr 2005 Erhöhung der Leistungsfähigkeit von Rechnern durch den Einsatz von mehreren Single-Core-CPUs Möglich durch die Erhöhung der Taktfrequenz ABER: Höhere Taktfrequenzen verursachen Abwärme Kühlmaßnahmen Energieverbrauch und Lärm Lösung: Keine Steigerung der Taktfrequenz sondern Multi-Core! Mehrere Kerne in einem Prozessor mehrere Recheneinheiten Vorteile: Geringerer Takt Weniger Energieverbrauch pro Kern Weniger Stromverbrauch 4 / 27

5 Einleitung Warum Multithreading? Warum Multi-Core? Bis zum Jahr 2005 Erhöhung der Leistungsfähigkeit von Rechnern durch den Einsatz von mehreren Single-Core-CPUs Möglich durch die Erhöhung der Taktfrequenz ABER: Höhere Taktfrequenzen verursachen Abwärme Kühlmaßnahmen Energieverbrauch und Lärm Lösung: Keine Steigerung der Taktfrequenz sondern Multi-Core! Mehrere Kerne in einem Prozessor mehrere Recheneinheiten Vorteile: Geringerer Takt Weniger Energieverbrauch pro Kern Weniger Stromverbrauch 4 / 27

6 Einleitung Warum Multithreading? Multithreading ABER: Optimale Leistung nur durch Beschäftigung aller Prozessorkerne Unterstützung des Betriebssystems Bis jetzt überwiegend sequentielle Programmierung Multithreading: Gleichzeitiges Abarbeiten von mehreren Threads innerhalb eines Prozesses Zwei Parallelisierungsstrategien: Message Passing Shared Memory 5 / 27

7 Einleitung Warum Multithreading? Multithreading ABER: Optimale Leistung nur durch Beschäftigung aller Prozessorkerne Unterstützung des Betriebssystems Bis jetzt überwiegend sequentielle Programmierung Multithreading: Gleichzeitiges Abarbeiten von mehreren Threads innerhalb eines Prozesses Zwei Parallelisierungsstrategien: Message Passing Shared Memory 5 / 27

8 Einleitung Warum Multithreading? Multithreading in Shared Memory Parallelisierung durch Compiler-Optionen oder Parallelisierungsanweisungen Schnelle Kommunikation über gemeinsamen Speicher (Pointer) Shared-Memory Parallelrechner überall (Smartphones, Tablets, Laptops,...) Ansätze: PThreads, OpenMP, Intel TBB, Cilk Abbildung: Verallgemeinerung von Programm, Prozess und Threads 6 / 27

9 Einleitung Ziele Was sollen wir mitnehmen? Was ist Cilk? Wie funktioniert Cilk? Cilk vs OpenMP 7 / 27

10 Was ist Cilk? Cilk für Multithreading Was ist Cilk? Erweiterung für C/C : Veröffentlichung der 1. Version von Cilk (C-basiert) durch Prof. Charles E. Leiserson und Kollegen von MIT-CSAIL 1 Socrates, Socrates 2.0, Cilkchess: Cilk Schachprogramme mit Preisen bei Computer Schachweltmeisterschaften Cilk / Cilk++ / Cilk Plus 2 Weiterentwicklung von Cilk durch Intel läuft auf Linux, Unix, MS Windows Compilers: GCC, ICC, Clang/LLVM 1 Massachussetts Institute of Technology - Computer Science And Artificial Intelligence Laboratory / 27

11 Was ist Cilk? Wie funktioniert Cilk? Programmieren in Cilk Gleiche Syntax wie in C/C++ Gleiche Datentypen wie in C/C++: float, double, int,... Unterschied von Cilk- und C-Quellcode durch weinige Schlüsselwörter (cilk, spawn, sync, inlet, abort) serial/c elision Neuere Schlüsselwörter in Cilk Plus: cilk_spawn, cilk_sync, cilk_for Parallelisierung von sequentiellen Codes einfacher Gute Unterstützung für tiefe Rekursionen und Arrays 9 / 27

12 Was ist Cilk? Wie funktioniert Cilk? Beispiel: Fibonacci in Cilk und C 1 c i l k i n t f i b ( i n t n ) 2 { 3 i f ( n < 2) return n ; 4 e l s e 5 { 6 i n t x, y ; 7 x = spawn f i b ( n 1); 8 y = spawn f i b ( n 2); 9 sync ; 10 return ( x+y ) ; 11 } 12 } 1 i n t f i b ( i n t n ) 2 { 3 i f ( n < 2) return n ; 4 e l s e 5 { 6 i n t x, y ; 7 x = f i b ( n 1); 8 y = f i b ( n 2); 9 10 return ( x+y ) ; 11 } 12 } 10 / 27

13 Was ist Cilk? Wie funktioniert Cilk? Keywords in Cilk cilk: Funktion als Cilk Prozess definieren parallele Ausführung möglich spawn: Ausführung des Kindprozesses auf weiterem Prozessor sync: Sicherstellen, dass alle Kindprozesse Ergebnisse zurückgeliefert haben inlet: Bei weiterer Operation mit dem Rückgabewert einen neuen Thread starten ( Bsp: z = add(spawn fib(x)) ) abort: Kindprozess innerhalb einer inlet-funktion abbrechen 11 / 27

14 Was ist Cilk? Wie funktioniert Cilk? Keywords in Cilk cilk: Funktion als Cilk Prozess definieren parallele Ausführung möglich spawn: Ausführung des Kindprozesses auf weiterem Prozessor sync: Sicherstellen, dass alle Kindprozesse Ergebnisse zurückgeliefert haben inlet: Bei weiterer Operation mit dem Rückgabewert einen neuen Thread starten ( Bsp: z = add(spawn fib(x)) ) abort: Kindprozess innerhalb einer inlet-funktion abbrechen 11 / 27

15 Was ist Cilk? Wie funktioniert Cilk? Beispiel für inlet und abort Berechne das Produkt: p = n i=0 A i 1 i n t p r oduct ( i n t A, i n t n ){ 2 i n t i, p=1; 3 f o r ( i =0; i <n ; i ++){ 4 p = A[ i ] ; 5 i f ( p == 0) break ; 6 } 7 return p ; 8 } 12 / 27

16 Was ist Cilk? Wie funktioniert Cilk? Beispiel für inlet und abort 1 c i l k i n t p r o d u c t ( i n t A, i n t n ){ 2 i n t p = 1 ; 3 i n l e t v o i d m u l t i p l y ( i n t x ){ 4 p = x ; 5 i f ( p == 0){ 6 a b o r t ; 7 } 8 r e t u r n ; 9 } 10 i f ( n == 1){ 11 r e t u r n A [ 0 ] ; 12 } e l s e { 13 m u l t i p l y ( spawn p r o d u c t (A, n /2) ) ; 14 m u l t i p l y ( spawn p r o d u c t (A+n /2, n n /2) ) ; 15 sync ; 16 r e t u r n p ; 17 } 18 } 13 / 27

17 Was ist Cilk? Multithreaded Computation Dynamisches Multithreading: DAG Darstellung der Ausführung des Cilk Programms als DAG (Directed Acyclic Graph) G = (V,E) jeder Knoten v V = thread Es gibt immer: initial thread und final thread jede Kante e E ist entweder: spawn edge (nach unten) return edge (nach oben) oder continuation edge (waagerecht) 14 / 27

18 Was ist Cilk? Multithreaded Computation Dynamisches Multithreading: DAG Abbildung: DAG für die Berechnung von fib(3). Threads (Kreise) der gleichen Prozedur sind mit einem abgerundeten Rechteck umrandet. 15 / 27

19 Performance Wie sieht die Performance von Cilk aus? Work - Span - Speedup 16 / 27

20 Performance Work, Span, Speedup Work und span Zwei Maßeinheiten für die Messung der Leistung: T P Laufzeit für die Ausführung aller Operationen auf P Prozessoren work ( T 1 ): Ausführungszeit aller Anweisungen auf P = 1 Abbildung: work von fib(3) T P = 9 17 / 27

21 Performance Work, Span, Speedup Work und span span oder critical-path length (T ): Ausführungszeit aller Operationen des längsten Pfades Abbildung: span von fib(3) T = 6 18 / 27

22 Performance Work, Span, Speedup Speedup speedup = T 1 /T P T 1 /T P = P linear speedup T 1 /T = Parallelisierung Beispiel: Work: T 1 = 9 Span: T = 6 T 1 /T = 1.5 Performance von work-stealing auf P Prozessoren: T P T 1 /P + T 19 / 27

23 Scheduler und Work-stealing Wie wird die Performance von Cilk erreicht? Scheduler - Work-stealing 20 / 27

24 Scheduler und Work-stealing Scheduler Der Scheduler Effiziente Einplanung des Ablaufs Beachtung der Abhängigkeiten zwischen den Threads Zuweisung von Threads zu Prozessoren nach den Reihenfolgen der Abhängigkeiten Work-stealing effizient einsetzen 21 / 27

25 Scheduler und Work-stealing Work-stealing Work-stealing: Dequeue Threads als Queue von Aufgaben verwalten: Beispiel: spawn A; spawn B;... spawn F; 22 / 27

26 Scheduler und Work-stealing Work-stealing Work-stealing: Steal I Bearbeitung von unten nach oben: return B; return D; 23 / 27

27 Scheduler und Work-stealing Work-stealing Work-stealing: Steal II Anwendung von Work-stealing für eine bessere Effizienz Work-stealing nur wenn Thread nicht in Ausführung! 24 / 27

28 Zusammenfassung Zusammenfassung I Multi-Core Rechner überall Optimale und effiziente Nutzung durch Multithreading Motivation zur Implementierung von Multi-Threading-Anwendungen Cilk Eigenschaften von Cilk: Erweiterung von C/C++ durch cilk, spawn, sync Umwandlung von sequentiellen Codes zu parallelen Codes einfach Parallelisierung von Vektoren bietet Leistungsgarantie Scheduler: plant, kommuniziert sorgfältig verwaltet Jobs als Dequeue erlaubt Work-stealing für eine optimale Effizienz 25 / 27

29 Zusammenfassung Zusammenfassung II Einige Merkmale von Cilk und OpenMP: Cilk C/C++ Einfache Parallelisierung des Codes Low-level-Verwaltung der Parallelisierung Keywords Tiefe Rekursionen, Parallelisierung von Vektoren Cilk view, Cilk screen OpenMP Fortran, C/C++ einfacheres Modell als Message- Passing High-level API Compiler-Direktiven Parallelisierungsprobleme von großen, vorhersehbaren Datenmengen einfacher als Thread-Library 26 / 27

30 Zusammenfassung Literatur [1] Robert D. Blumofe and Christopher F. Joerg and Bradley C. Kuszmaul and Charles E. Leiserson and Keith H. Randall and Yuli Zhou. Journal of Parallel and Distributed Computing. Pages Cilk: An Efficient Multithreaded Runtime System, ftp://theory.lcs.mit.edu/pub/cilk/cilkjpdc96.ps.gz [2] Wikipedia. Cilk php?title=cilk&oldid= [3] Charles E. Leiserson and Harald Prokop. A Minicourse on Multithreaded Programming [4] Charles E. Leiserson. Multithreaded Programming in Cilk [5] OpenMP Tutorial / 27

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

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

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

Mehr

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

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

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

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

Mehr

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

2 Rechnerarchitekturen

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

Mehr

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

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

Mehr

Evaluation. Einleitung. Implementierung Integration. Zusammenfassung Ausblick

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

Mehr

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

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

> High-Level Programmierung heterogener paralleler Systeme

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

Mehr

Parallele und verteilte Programmierung

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

Mehr

Parallele Programmiermodelle

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

Mehr

Beispielvortrag: HPCG auf Intel Haswell-EP

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

Mehr

Kapitel 1 Parallele Modelle Wie rechnet man parallel?

Kapitel 1 Parallele Modelle Wie rechnet man parallel? PRAM- PRAM- DAG- R UND R Coles und Kapitel 1 Wie rechnet man parallel? Vorlesung Theorie Paralleler und Verteilter Systeme vom 11. April 2008 der Das DAG- Das PRAM- Das werkmodell Institut für Theoretische

Mehr

Implementation of a Framework Component for Processing Tasks within Threads on the Application Level

Implementation of a Framework Component for Processing Tasks within Threads on the Application Level Implementation of a Framework Component for Processing Tasks within Threads on the Application Level Deutsches Krebsforschungszentrum, for Processing Task within Threads on the Application Level Motivation

Mehr

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

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

Mehr

RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck

RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck RST-Labor WS06/07 GPGPU General Purpose Computation On Graphics Processing Units (Grafikkarten-Programmierung) Von: Marc Blunck Ablauf Einführung GPGPU Die GPU GPU Architektur Die Programmierung Programme

Mehr

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

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

Mehr

High-Performance Computing mit FEMAG

High-Performance Computing mit FEMAG High-Performance Computing mit FEMAG Untersuchungen und Massnahmen zur Verbesserung der Rechenzeit FEMAG Anwendertreffen 2013 (Zürich) Ronald Tanner SEMAFOR Informatik & Energie AG, Basel 10./11. Oktober

Mehr

Projektseminar Parallele Programmierung

Projektseminar Parallele Programmierung HTW Dresden WS 2014/2015 Organisatorisches Praktikum, 4 SWS Do. 15:00-18:20 Uhr, Z136c, 2 Doppelstunden o.g. Termin ist als Treffpunkt zu verstehen Labore Z 136c / Z 355 sind Montag und Donnerstag 15:00-18:20

Mehr

General Purpose Computation on GPUs

General Purpose Computation on GPUs General Purpose Computation on GPUs Matthias Schneider, Robert Grimm Universität Erlangen-Nürnberg {matthias.schneider, robert.grimm}@informatik.stud.uni-erlangen.de M. Schneider, R. Grimm 1 Übersicht

Mehr

Nebenläufige Programme mit Python

Nebenläufige Programme mit Python Nebenläufige Programme mit Python PyCon DE 2012 Stefan Schwarzer, SSchwarzer.com info@sschwarzer.com Leipzig, Deutschland, 2012-10-30 Nebenläufige Programme mit Python Stefan Schwarzer, info@sschwarzer.com

Mehr

2. Der ParaNut-Prozessor "Parallel and more than just another CPU core"

2. Der ParaNut-Prozessor Parallel and more than just another CPU core 2. Der ParaNut-Prozessor "Parallel and more than just another CPU core" Neuer, konfigurierbarer Prozessor Parallelität auf Daten- (SIMD) und Thread-Ebene Hohe Skalierbarkeit mit einer Architektur neues

Mehr

Optimierungen der Lattice Boltzmann Methode auf x86-64 basierten Architekturen

Optimierungen der Lattice Boltzmann Methode auf x86-64 basierten Architekturen Optimierungen der Lattice Boltzmann Methode auf x86-64 basierten Architekturen J. Treibig, S. Hausmann, U. Ruede 15.09.05 / ASIM 2005 - Erlangen Gliederung 1 Einleitung Motivation Grundlagen 2 Optimierungen

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

Mehrprozessorarchitekturen

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

Mehr

Programmierung von Many-Cores. Seminar: Software Engineering für Exascale Computing

Programmierung von Many-Cores. Seminar: Software Engineering für Exascale Computing Programmierung von Many-Cores Seminar: Software Engineering für Exascale Computing Patrizia Peller April 18, 2013 Programmierung von Many-Cores Hardware-Architekturen Anforderungen an Programmiersprachen

Mehr

Tutorium Softwaretechnik I

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

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

Ibis. Jan Frederik Naujoks

Ibis. Jan Frederik Naujoks Ibis Jan Frederik Naujoks Gliederung: 1. Überblick über das Ibis Projekt 2. Features 3. Architektur 4. Programmiermodelle 5. Ibis und Middleware 6. Portabilität 7. Entwicklung und Nutzung 8. Fazit 2 Was

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

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG GRUNDLAGEN Tobias Witt!! 24.03.2014 ORGANISATORISCHES 09:00-10:30! Täglich Übungen zur Vertiefung! Laptop hier nicht erforderlich! Linux, OS X! Freitag: http://hhu-fscs.de/linux-install-party/

Mehr

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

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

Mehr

Cell Broadband Engine & CellSs: ein Programmiermodel für den Cell Prozessor

Cell Broadband Engine & CellSs: ein Programmiermodel für den Cell Prozessor Cell Broadband Engine & CellSs: ein Programmiermodel für den Cell Prozessor Hardware-Software-Co-Design Universität Erlangen-Nürnberg mark.duchon@mb.stud.uni-erlangen.de Ziegler_Matthias@web.de andreas.fall@googlemail.com

Mehr

Visualisierung paralleler bzw. verteilter Programme

Visualisierung paralleler bzw. verteilter Programme Seminar Visualisierung in Informatik und Naturwissenschaften im SS 1999 Visualisierung paralleler bzw. verteilter Programme Holger Dewes Gliederung Zum Begriff Motivation PARADE Beispiel 1: Thread basierte

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard Systeme I: Betriebssysteme Kapitel 4 Prozesse Wolfram Burgard Version 18.11.2015 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen

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

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

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

Mehr

PRIP-Preis. Effizientes Object Tracking durch Programmierung von Mehrkernprozessoren und Grafikkarten

PRIP-Preis. Effizientes Object Tracking durch Programmierung von Mehrkernprozessoren und Grafikkarten Masterarbeit @ PRIP-Preis Effizientes Object Tracking durch Programmierung von Mehrkernprozessoren und Grafikkarten Michael Rauter Pattern Recognition and Image Processing Group Institute of Computer Aided

Mehr

C++ Teil 5. Sven Groß. 16. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16

C++ Teil 5. Sven Groß. 16. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16 C++ Teil 5 Sven Groß 16. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 16. Nov 2015 1 / 16 Themen der letzten Vorlesung Namensräume Live Programming zu A2 Gleitkommazahlen Rundungsfehler Auswirkung

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

Betriebssysteme und Microkern

Betriebssysteme und Microkern 16. September 2004 Überblick 1 Einführung 2 Betriebssysteme 3 Monolith 4 5 Anhang Einführung Teil I Einführung Einführung Was ist ein Betriebssystem? Unterscheidung Was ist ein Betriebssystem? engl. Operating

Mehr

Organisatorisches Einführung Quellen. Einführung. Praktikum C-Programmierung. Eugen Betke, Nathanael Hübbe, Michael Kuhn, Jakob Lüttgau, Jannek Squar

Organisatorisches Einführung Quellen. Einführung. Praktikum C-Programmierung. Eugen Betke, Nathanael Hübbe, Michael Kuhn, Jakob Lüttgau, Jannek Squar Einführung Praktikum C-Programmierung Eugen Betke, Nathanael Hübbe, Michael Kuhn, Jakob Lüttgau, Jannek Squar Wissenschaftliches Rechnen Fachbereich Informatik Universität Hamburg 2018-10-22 Michael Kuhn

Mehr

High Performance Computing

High Performance Computing REGIONALES RECHENZENTRUM ERLANGEN [RRZE] High Performance Computing Systemausbildung Grundlagen und Aspekte von Betriebssystemen und systemnahen Diensten, 21.06.2017 HPC-Gruppe, RRZE Agenda Was bedeutet

Mehr

Crashkurs C++ - Teil 1

Crashkurs C++ - Teil 1 Crashkurs C++ - Teil 1 Intro Speicherverwaltung Variablen, Pointer, Referenzen Felder statische & dynamische Allozierung Birgit Möller & Denis Williams AG Bioinformatik & Mustererkennung Institut für Informatik

Mehr

Motivation (GP)GPU CUDA Zusammenfassung. CUDA und Python. Christian Wilms. Integriertes Seminar Projekt Bildverarbeitung

Motivation (GP)GPU CUDA Zusammenfassung. CUDA und Python. Christian Wilms. Integriertes Seminar Projekt Bildverarbeitung CUDA und Python Christian Wilms Integriertes Seminar Projekt Bildverarbeitung Universität Hamburg WiSe 2013/14 12. Dezember 2013 Christian CUDA und Python 1 Gliederung 1 Motivation 2 (GP)GPU 3 CUDA 4 Zusammenfassung

Mehr

Fakultät für Informatik der Technischen Universität München. Kapitel 3. Nebenläufigkeit

Fakultät für Informatik der Technischen Universität München. Kapitel 3. Nebenläufigkeit Kapitel 3 Nebenläufigkeit 136 Inhalt Motivation Unterbrechungen (Interrupts) (Software-) Prozesse Threads Interprozesskommunikation (IPC) 137 Links: Literatur Maurice Herlihy, Nir Shavit, The Art of Multiprocessor

Mehr

II.1.1. Erste Schritte - 1 -

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.

Mehr

Cell and Larrabee Microarchitecture

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

Mehr

Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7)

Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) J. Zhang zhang@informatik.uni-hamburg.de Universität Hamburg AB Technische Aspekte Multimodaler Systeme

Mehr

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders Typisierung Effiziente Programmierung Thomas Schnieders Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 2018-04-26 Thomas Schnieders Typisierung 1

Mehr

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Dynamische Programmierung. Problemlösungsstrategie der Informatik als Problemlösungsstrategie der Informatik und ihre Anwedung in der Diskreten Mathematik und Graphentheorie Fabian Cordt Enisa Metovic Wissenschaftliche Arbeiten und Präsentationen, WS 2010/2011 Gliederung

Mehr

Kick-Off Paralleles Programmieren

Kick-Off Paralleles Programmieren Fakultät Informatik Institut für Software- und Multimediatechnik, Lehrstuhl für Softwaretechnologie Kick-Off Paralleles Programmieren Thomas Kühn Motivation Moore's Law The complexity for minimum component

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

Funktionale Programmiersprachen

Funktionale Programmiersprachen Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte

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

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

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

Mehr

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

h.o.-computer news 20 Jahre ho-computer Die Party geht weiter Jubiläumsrabatt auf alle Intel-Softwareprodukte bis zum 20. Dezember

h.o.-computer news 20 Jahre ho-computer Die Party geht weiter Jubiläumsrabatt auf alle Intel-Softwareprodukte bis zum 20. Dezember h.o.-computer news ho-computer Entwicklertag Paralleles Programmieren im Kölner Schokoladenmuseum Intel Parallel Studio Promotion Intel Compiler Suite Pakete & Lizenzmodelle Inhalt Editorial 2 ho-computer

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

Inhalt. Einführung in die Strukturierte Programmierung 15

Inhalt. Einführung in die Strukturierte Programmierung 15 Inhalt Einführung in die Strukturierte Programmierung 15 1.1 Was bedeutet Programmieren? 17 1.2 Was bedeutet Strukturierte Programmierung? 18 1.3 Was ist Pascal? 19 1.4 Was ist PS/k? 20 1.5 Warum wird

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

verschiedenen Recheneinheiten, die miteinander kommunizieren können

verschiedenen Recheneinheiten, die miteinander kommunizieren können Vorlesung 9 BALANCIERUNG DYNAMISCHER UNABHÄNGIGER LASTEN 293 Lastbalancierung Motivation Ein paralleles System besteht aus verschiedenen Recheneinheiten, die miteinander kommunizieren können Warum parallel

Mehr

Probestudium. Paralleles Programmieren für moderne Multicore-Prozessoren. Prof. Dr. Hans Jürgen Ohlbach

Probestudium. Paralleles Programmieren für moderne Multicore-Prozessoren. Prof. Dr. Hans Jürgen Ohlbach Paralleles Programmieren für moderne Multicore-Prozessoren Prof. Dr. Hans Jürgen Ohlbach 1 Kurze Geschichte der Computer Erste Versuche Charles Babbage (1792 1871) difference Engine 1832 (zum Berechnen

Mehr

Objektorientierte Programmierung (ZQ1u2B)

Objektorientierte Programmierung (ZQ1u2B) Objektorientierte Programmierung (ZQ1u2B) Woche 4 Rekursion Christopher Scho lzel Technische Hochschule Mittelhessen 4. November 2015 Inhalt Rekursion Lineare Rekursion Verzweigte Rekursion Verschränkte

Mehr

II.1.1. Erste Schritte - 1 -

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.

Mehr

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

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

Mehr

PostgreSQL auf vielen CPUs. Hans-Jürgen Schönig Hans-Jürgen Schönig

PostgreSQL auf vielen CPUs. Hans-Jürgen Schönig  Hans-Jürgen Schönig PostgreSQL auf vielen CPUs Ansätze zur Skalierung PostgreSQL auf einer CPU Traditionell läuft eine Query auf nur einer CPU Historisch gesehen war das kein Problem Mittlerweile ist das ein großes Problem

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen 1 Datenstrukturen und Algorithmen Übung 11 Alexander Pilz, Daniel Hupp, Lukas Humbel FS 2017 Programm von heute 2 1 Feedback letzte Übung 2 Wiederholung Theorie 3 Programmieraufgabe 1. Feedback letzte

Mehr

RO-Tutorien 15 und 16

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

Mehr

Objektorientierte Programmierung. Agenda für heute, 1. April, Eines der drei wichtigsten Programmierparadigmen

Objektorientierte Programmierung. Agenda für heute, 1. April, Eines der drei wichtigsten Programmierparadigmen Agenda für heute, 1. April, 2010 Imperatives vs. objektorientiertes Programmieren Lesen Sie den Begleittext Seite 79 85 Eines der drei wichtigsten Programmierparadigmen (Paradigma: Denkmuster) Imperative

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG GRUNDLAGEN Tobias Witt 24.03.2014 ORGANISATORISCHES tobias.witt@hhu.de 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber später in den Übungen!

Mehr

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. ) Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:

Mehr

Hello World! Eine Einführung in das Programmieren Das erste Programm

Hello World! Eine Einführung in das Programmieren Das erste Programm Hello World! Eine Einführung in das Programmieren Das erste Programm Görschwin Fey Institute of Embedded Systems Hamburg University of Technology Slide 2 Betriebssystem Funktion Anwendung Gerätesteuerung

Mehr

UNABHÄNGIGER LASTEN. Vorlesung 9 BALANCIERUNG DYNAMISCHER. Graphenalgorithmen und lineare Algebra Hand in Hand

UNABHÄNGIGER LASTEN. Vorlesung 9 BALANCIERUNG DYNAMISCHER. Graphenalgorithmen und lineare Algebra Hand in Hand Vorlesung 9 BALANCIERUNG DYNAMISCHER UNABHÄNGIGER LASTEN 266 Lastbalancierung Motivation! Ein paralleles System besteht aus! verschiedenen Recheneinheiten,! die miteinander kommunizieren können! Warum

Mehr

Grafikkarten-Architektur

Grafikkarten-Architektur > Grafikkarten-Architektur Parallele Strukturen in der GPU Name: Sebastian Albers E-Mail: s.albers@wwu.de 2 > Inhalt > CPU und GPU im Vergleich > Rendering-Pipeline > Shader > GPGPU > Nvidia Tesla-Architektur

Mehr

Programming Models for Cell BE

Programming Models for Cell BE Hauptseminar MAP08 Programming Models for Cell BE Hannes Stadler, Sebastian Graf HannesStadler@gmx.de, sebgr@gmx.net Betreuung: Matthias Hartl, Hritam Dutta, Frank Hannig Hardware-Software-Co-Design Universität

Mehr

Hochleistungsrechnen auf dem PC

Hochleistungsrechnen auf dem PC Hochleistungsrechnen auf dem PC Steffen Börm Christian-Albrechts-Universität zu Kiel Ringvorlesung Informatik, 26. Juni 2014 S. Börm (CAU Kiel) Hochleistungsrechnen auf dem PC 26. Juni 2014 1 / 33 Übersicht

Mehr

Futures, Scheduling and Work Distribution

Futures, Scheduling and Work Distribution Samy Ateia Philip Czech Futures, Scheduling and Work Distribution Proseminar Nebenläufige Programmierung Samy Ateia - Philip Czech - 14.07.2010 1 / 35 Um was geht es? Programme Aufteilen und parallel ausführen

Mehr

OpenCL. Multi-Core Architectures and Programming (Seminar) Apelt, Nicolas / Zöllner, Christian

OpenCL. Multi-Core Architectures and Programming (Seminar) Apelt, Nicolas / Zöllner, Christian OpenCL Multi-Core Architectures and Programming (Seminar) Apelt, Nicolas / Zöllner, Christian Hardware-Software-Co-Design Universität Erlangen-Nürnberg Apelt, Nicolas / Zöllner, Christian 1 Was ist OpenCL?

Mehr

Paralleles Rechnen. (Architektur verteilter Systeme) von Thomas Offermann Philipp Tommek Dominik Pich

Paralleles Rechnen. (Architektur verteilter Systeme) von Thomas Offermann Philipp Tommek Dominik Pich Paralleles Rechnen (Architektur verteilter Systeme) von Thomas Offermann Philipp Tommek Dominik Pich Gliederung Motivation Anwendungsgebiete Warum paralleles Rechnen Flynn's Klassifikation Theorie: Parallel

Mehr

Leistungsfähige ARM CPUs für den industriellen Einsatz

Leistungsfähige ARM CPUs für den industriellen Einsatz Leistungsfähige ARM CPUs für den industriellen Einsatz Layerscape ARM Cortex-A CPUs von NXP mit Features aus der PowerPC Welt. Performance und Echtzeitfähigkeits-Vergleich von ARM und PowerPC. Kei Thomsen,

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen 1 Datenstrukturen und Algorithmen Übung 12 FS 2018 Programm von heute 2 1 Feedback letzte Übung 2 Wiederholung Theorie 3 Programmieraufgaben 1. Feedback letzte Übung 3 Fussballmeisterschaft 4 Verein Punkte

Mehr

1 Konzepte der Parallelverarbeitung

1 Konzepte der Parallelverarbeitung Parallelverarbeitung Folie 1-1 1 Konzepte der Parallelverarbeitung Erhöhung der Rechenleistung verbesserte Prozessorarchitekturen mit immer höheren Taktraten Vektorrechner Multiprozessorsysteme (Rechner

Mehr

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015 Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Programmierung 1 für Wirtschaftsinformatik Wintersemester 2015/16

Programmierung 1 für Wirtschaftsinformatik Wintersemester 2015/16 Programmierung 1 für Wirtschaftsinformatik Wintersemester 2015/16 Prof. Dr.-Ing. habil. Peter Sobe Fakultät Informatik / Mathematik Programmierung 1: Programmierung 1 - Ziele Vermittlung von Grundkenntnissen

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

PGI Accelerator Model

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

Mehr

Vorstellung der SUN Rock-Architektur

Vorstellung der SUN Rock-Architektur Fakultät Informatik Institut für Technische Informatik, Professur für VLSI-Entwurfssysteme, Diagnostik und Architektur Vorstellung der SUN Rock-Architektur Hauptseminar Ronald Rist Dresden, 14.01.2009

Mehr

Einführung in die Parallele Programmierung

Einführung in die Parallele Programmierung Einführung in die Parallele Programmierung K. Benkert 1, A. Stock 2 1 High Performance Computing Centre Stuttgart www.hlrs.de Universität Stuttgart 2 Institut für Aerodynamik und Gasdynamik (IAG) www.iag.uni-stuttgart.de

Mehr

Programmieren in Lua

Programmieren in Lua Roberto lerusalimschy Programmieren in Lua 3. Auflage Open Source Press Inhaltsverzeichnis Vorwort 13 I Die Sprache 21 1 Einführung 23 1.1 Chunks 24 1.2 Einige lexikalische Konventionen 26 1.3 Globale

Mehr

II.1.1. Erste Schritte - 1 -

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.

Mehr

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 1.0 EBNF 2.0 Einfache Java Programme Thomas R. Gross Department Informatik ETH Zürich Graphische Darstellung von EBNF Regeln Syntax Graph: graphische Darstellung

Mehr