Multi-threaded Programming with Cilk
|
|
|
- Judith Bretz
- vor 8 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
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
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
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
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
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
2 Rechnerarchitekturen
2 Rechnerarchitekturen Rechnerarchitekturen Flynns Klassifikation Flynnsche Klassifikation (Flynn sche Taxonomie) 1966 entwickelt, einfaches Modell, bis heute genutzt Beschränkung der Beschreibung auf
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
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
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
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
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 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
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
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
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
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
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
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
Nebenläufige Programme mit Python
Nebenläufige Programme mit Python PyCon DE 2012 Stefan Schwarzer, SSchwarzer.com [email protected] Leipzig, Deutschland, 2012-10-30 Nebenläufige Programme mit Python Stefan Schwarzer, [email protected]
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
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:
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
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
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
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
Beispiel: Schleifenparallelisierung
Beispiel: Schleifenparallelisierung for (i = 0; i high) { printf ( Exiting during iteration %d\n,i); break; for (j=low;j
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/
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 [email protected] [email protected] [email protected]
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
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
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
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
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
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
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 [email protected] www.go-sky.de Die Serie: 5 Teile Teil 1: Einführung, Amdahl s Gesetz, Data
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
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
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
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
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
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
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
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
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
Funktionale Programmiersprachen
Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte
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
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
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
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.
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
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
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
EINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG GRUNDLAGEN Tobias Witt 24.03.2014 ORGANISATORISCHES [email protected] 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber später in den Übungen!
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:
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
Grafikkarten-Architektur
> Grafikkarten-Architektur Parallele Strukturen in der GPU Name: Sebastian Albers E-Mail: [email protected] 2 > Inhalt > CPU und GPU im Vergleich > Rendering-Pipeline > Shader > GPGPU > Nvidia Tesla-Architektur
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
Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015
Java Crashkurs Kim-Manuel Klein ([email protected]) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
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,
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
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
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
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.
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
