Multi-threaded Programming with Cilk
|
|
- Judith Bretz
- vor 6 Jahren
- Abrufe
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 David Soria Parra Geschichte Geschichte Entwickelt 1994 am MIT Laboratory for Computer Science Cilk 1: Continuations
MehrOpenCL. 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
MehrOpenMP. 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
MehrMulti- 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
MehrCUDA. 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
MehrMemory 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
Mehr2 Rechnerarchitekturen
2 Rechnerarchitekturen Rechnerarchitekturen Flynns Klassifikation Flynnsche Klassifikation (Flynn sche Taxonomie) 1966 entwickelt, einfaches Modell, bis heute genutzt Beschränkung der Beschreibung auf
MehrParallel 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
MehrEvaluation. 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
MehrComputergrundlagen 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
MehrEinige 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 Projektseminar im SoSe 2012 Prof. Sergei Gorlatch, Michel Steuwer, Tim Humernbrum AG Parallele und Verteilte Systeme, Westfälische Wilhelms-Universität
MehrParallele 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
MehrParallele Programmiermodelle
Parallele Programmiermodelle ProSeminar: Parallele Programmierung Semester: WS 2012/2013 Dozentin: Margarita Esponda Einleitung - Kurzer Rückblick Flynn'sche Klassifikationsschemata Unterteilung nach Speicherorganissation
MehrBeispielvortrag: 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
MehrKapitel 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
MehrImplementation 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
MehrParallel 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
MehrRST-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
MehrOpenMP - 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
MehrHigh-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
MehrProjektseminar 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
MehrGeneral 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
MehrNebenlä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
Mehr2. 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
MehrOptimierungen 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
MehrCompute 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:
MehrMehrprozessorarchitekturen
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
MehrProgrammierung 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
MehrTutorium 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
MehrAutomatische 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
MehrIbis. 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
MehrBeispiel: Schleifenparallelisierung
Beispiel: Schleifenparallelisierung for (i = 0; i high) { printf ( Exiting during iteration %d\n,i); break; for (j=low;j
MehrEINFÜ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/
MehrInteraktive 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
MehrCell 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
MehrVisualisierung 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
MehrSysteme 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
Mehr1. 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
MehrSeminarvortrag: 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
MehrPRIP-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
MehrC++ 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
MehrMSDN 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
MehrBetriebssysteme 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
MehrOrganisatorisches 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
MehrHigh 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
MehrCrashkurs 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
MehrMotivation (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
MehrFakultä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
MehrII.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.
MehrCell 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
MehrVorlesung: 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
MehrEinleitung 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
MehrDynamische 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
MehrKick-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
MehrShared-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
MehrFunktionale Programmiersprachen
Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte
MehrUniversitä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
MehrEntwicklung 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
MehrMaster-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
Mehrh.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
MehrKonzepte 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
MehrInhalt. 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
MehrJannis 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
Mehrverschiedenen 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
MehrProbestudium. 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
MehrObjektorientierte 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
MehrII.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.
MehrUnicode 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)
MehrPostgreSQL 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
MehrDatenstrukturen 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
MehrRO-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
MehrObjektorientierte 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
MehrEINFÜ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!
MehrII. 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:
MehrHello 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
MehrUNABHÄ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
MehrGrafikkarten-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
MehrProgramming 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
MehrHochleistungsrechnen 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
MehrFutures, 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
MehrOpenCL. 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?
MehrParalleles 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
MehrLeistungsfä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,
MehrDatenstrukturen 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
Mehr1 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
MehrEinfü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)
MehrProbeklausur: 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,
MehrProgrammierung 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
MehrHomogene 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
MehrPGI 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
MehrVorstellung 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
MehrEinfü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
MehrProgrammieren 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
MehrII.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.
MehrEinfü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