C-to-CUDA-Compiler. Johannes Kölsch. October 29, 2012
|
|
- Gerd Lorentz
- vor 5 Jahren
- Abrufe
Transkript
1 October 29, 2012
2 Inhaltsverzeichnis
3 Motivation Motivation CUDA bietet extreme Leistung für parallelisierbare Programme Kompliziert zu programmieren, da multi-level parallel und explizit verwalteter Speicher Daher gibt es viel Interesse daran, prozeduralen Code automatisch in effizienten CUDA-Code zu überführen.
4 Eigenschaften des C-Codes Eigenschaften des C-Codes Allgemein C-Code ist sehr weit verbreitet. Er reicht von Anwendungen im PC-Bereich bis hin zu eingebetteten Systemen und Kerneln für Betriebssysteme.
5 Eigenschaften des C-Codes Eigenschaften des C-Codes Allgemein C-Code ist sehr weit verbreitet. Er reicht von Anwendungen im PC-Bereich bis hin zu eingebetteten Systemen und Kerneln für Betriebssysteme. Imperativ-prozedural
6 Eigenschaften des C-Codes Eigenschaften des C-Codes Allgemein C-Code ist sehr weit verbreitet. Er reicht von Anwendungen im PC-Bereich bis hin zu eingebetteten Systemen und Kerneln für Betriebssysteme. Imperativ-prozedural keinerlei Parallelität vorhanden
7 Eigenschaften des C-Codes Eigenschaften des C-Codes Allgemein C-Code ist sehr weit verbreitet. Er reicht von Anwendungen im PC-Bereich bis hin zu eingebetteten Systemen und Kerneln für Betriebssysteme. Imperativ-prozedural keinerlei Parallelität vorhanden auf aktuellen Prozessoren eher langsam
8 OpenMP C OpenMP C Implementierung für Multithreading in C
9 OpenMP C OpenMP C Implementierung für Multithreading in C Design für Multiprozessoren mit einem gemeinsamen Speicher
10 OpenMP C OpenMP C Implementierung für Multithreading in C Design für Multiprozessoren mit einem gemeinsamen Speicher Master-Thread verantwortlich für eine Menge von Slave-Threads
11 OpenMP C OpenMP C Implementierung für Multithreading in C Design für Multiprozessoren mit einem gemeinsamen Speicher Master-Thread verantwortlich für eine Menge von Slave-Threads erlaubt dem Programmierer in eine bereits bestehendes Programm Multi-Threading Funktionalität einzufügen
12 OpenMP C OpenMP C Implementierung für Multithreading in C Design für Multiprozessoren mit einem gemeinsamen Speicher Master-Thread verantwortlich für eine Menge von Slave-Threads erlaubt dem Programmierer in eine bereits bestehendes Programm Multi-Threading Funktionalität einzufügen Vergleich zu CUDA Wie man leicht sieht, hat OpenMP viele Parallelen zu CUDA. Daher ist es ein weitaus komplexerer aber auch nẗzlicherer Ansatz, von reinem C-Code in CUDA zu übersetzen.
13 Übersicht Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG Figure :
14 Einordnung ins Framework Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG Figure : Pluto innerhalb des Frameworks
15 Pluto Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG Automatisches Parallelisierungs-Tool Output ähnlich wie OpenMP-C
16 Scanner und Parser Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG Abstract Syntax-Tree (AST) des Input C-Programms wird erzeugt Iterationsraum-Polytope werden erstellt Array-Access-Functions werden erstellt Datenabhängigkeiten werden analysiert
17 Affine Transformation Framework Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG Abhängigkeits-Polytope werden generiert Affine Transformationen werden erstellt kommunikationsoptimiert lokalitätsoptimiert wird später gebraucht, um optimal Daten von Off-Chip in On-Chip Memory und zurück zu verschieben
18 Einordnung ins Framework Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG Figure : Schritt 2 im Compiler-Framework
19 Multi-level Tiling Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG Tiling Hyperplanes müssen gefunden werden Affine Transformationen, die von Pluto gefunden wurden, werden überprüft Daten-Abhängigkeiten nur in Vorwärtsrichtung auf der Tiling Hyperplane Transformationen werden als Schleifen im transformierten Programm implementiert
20 Parallelism Extraction Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG Die Transformationen enhalten doall- und doacross-loops doall-loops können direkt parallel abgearbeitet werden doacross-loops können direkt in einer Pipeline abgearbeitet werden, da die Abhängigkeiten in Vorwärtsrichtung sind
21 Einordnung ins Framework Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG Figure : Schritt 3 im Compiler-Framework
22 On-Chip Memory Management Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG Iterationsraum-Polytope und Array-Access-Functions, die vorher schon bestimmt wurden kommen nun zum Einsatz Array-Referenzen mit ausreichend Daten-Wiederverwendung sind gute Kandidaten für On-Chip memory
23 Data Movement Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG 2 Arten: copy-in statements: Bewegen Daten in den shared memory copy-out statements: Bewegen Daten aus dem shared memory wieder zurück Auf Thread-Block Ebene wie folgt realisiert: copy-in computation copy-out
24 Data Movement Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG Schedule muss entsprechend angepasst werden Neue statements werden für die beiden Movement-Befehle jeweils eingefügt
25 Einordnung ins Framework Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG Figure : CLooG im Compiler-Framework
26 Input Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG Menge von statements Iterationsraum-Polytope der statements statement-weise affine Transformation für jedes level (bei CUDA 2 Levels)
27 Code Generation Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG CLooG scannt die Iterationsraum-Polytope (statement-polytope) die von Pluto erstellt wurden nutzt die neuen Scheduling-functions um neue lexicografische Ordnung herzustellen Da die gegebenen Tranformationen affin sind, wird das erstellte Programm korrekt ausgeführt
28 Loop-Generation Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG wenn doall-loops erkannt werden, so werden diese direkt als parallel markiert doacross-loops werden wie folgt transformiert: loop wird so lange in kleinere loops aufgeteilt, bis nurnoch doall-loops bestehen äusserer loop wird als als sequentiell markiert innere loops als parallel
29 AST Post-processing Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG Der von CLooG so erzeugt Code ist noch nicht CUDA-kompatibel Er muss nun noch Thread-centric transformiert werden synchronisierungs- Methoden müssen noch eingefügt werden
30 Thread-centric Code Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG äusseres level des generierten Codes wird auf Thread-Blocks abgebildet inneres level wird auf Threads abgebildet Data movement Code platziert noch thread-identifier in seine Schleifen
31 Synchronisierungsmethoden Übersicht Schritt 1: Pluto Schritt 2: Multi-level Tiling und Parallelism extraction Schritt 3: On-Chip Memory Management und Data Movement Schritt 4: CLooG CUDA bringt bereits Methoden um zwischen den Threads innerhalb eines Blocks zu synchronisieren Auf Thread-Block Ebene müssen noch Barrieren errichtet werden an jeder Iteration einer sequentiellen Schleife am Ende des Data Movement Codes
32 Eigenschaften des generierten CUDA-Codes Eigenschaften des generierten CUDA-Codes Kompilierbarkeit Der vom vorgestellten Framework erstellte Code ist direkt vom CUDA-Compiler kompilierbar.
33 Eigenschaften des generierten CUDA-Codes Eigenschaften des generierten CUDA-Codes Kompilierbarkeit Der vom vorgestellten Framework erstellte Code ist direkt vom CUDA-Compiler kompilierbar. Anzahl von Threads und Thread Blocks Anzahl der Threads und Thread-Blocks werden vom Benutzer des Codes zur Kompilierzeit als symbolische Konstanten angegeben.
34 Erklärung des Benchmarks Coulomb-Potential Berechnung von elektrischen Feldern in einem Volumen mit Punktladungen
35 Erklärung des Benchmarks Coulomb-Potential Berechnung von elektrischen Feldern in einem Volumen mit Punktladungen Verschiedene Optimierungen
36 Erklärung des Benchmarks Coulomb-Potential Berechnung von elektrischen Feldern in einem Volumen mit Punktladungen Verschiedene Optimierungen Automatic (no unroll, shared memory)
37 Erklärung des Benchmarks Coulomb-Potential Berechnung von elektrischen Feldern in einem Volumen mit Punktladungen Verschiedene Optimierungen Automatic (no unroll, shared memory) Automatic (no unroll, constant memory)
38 Erklärung des Benchmarks Coulomb-Potential Berechnung von elektrischen Feldern in einem Volumen mit Punktladungen Verschiedene Optimierungen Automatic (no unroll, shared memory) Automatic (no unroll, constant memory) Automatic (inner loop unrolling)
39 Erklärung des Benchmarks Coulomb-Potential Berechnung von elektrischen Feldern in einem Volumen mit Punktladungen Verschiedene Optimierungen Automatic (no unroll, shared memory) Automatic (no unroll, constant memory) Automatic (inner loop unrolling) Hand-tuned
40 Erklärung des Benchmarks Coulomb-Potential Berechnung von elektrischen Feldern in einem Volumen mit Punktladungen Verschiedene Optimierungen Automatic (no unroll, shared memory) Automatic (no unroll, constant memory) Automatic (inner loop unrolling) Hand-tuned icc fast parallel (4 cores)
41 Algorithmus zur Berechnung Coulomb-Potential for t1 0 to VOLX do for t2 0 to VOLY do for t3 0 to NATOMS do energy[zdim*volx*voly + t1*volx + t2] = f(t3) ; end end end
42 Algorithmus zur Berechnung Coulomb-Potential for t1 0 to VOLX do for t2 0 to VOLY do for t3 0 to NATOMS do energy[zdim*volx*voly + t1*volx + t2] = f(t3) ; end end end Anmerkung Man kann leicht erkennen, dass die inneren Schleifen komplett ausrollbar sind, da keine Datenabhängigkeiten bestehen.
43 Versuchsergebnisse Coulomb-Potential
44 Vergleich mit Prozessorleistung Coulomb-Potential Leistungssteigerung Der Benchmark zeigt, dass das Compiler-Framework eine extreme Leistungssteigerung gegenüber der Berechnung auf einem Prozessor bringt. Die Leistung reicht fast an die des Hand-optimierten Codes heran.
Parallele Programmiermodelle
Parallele Programmiermodelle ProSeminar: Parallele Programmierung Semester: WS 2012/2013 Dozentin: Margarita Esponda Einleitung - Kurzer Rückblick Flynn'sche Klassifikationsschemata Unterteilung nach Speicherorganissation
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
MehrParallelisierung auf CUDA
Parallelisierung auf CUDA Seminar Multi-Core Architectures and Programming 1 Übersicht RSA-Faktorisierung Image Flooding 2 RSA-Faktorisierung Erster Ansatz Implementierung des Pollard-Rho Algorithmus (sequentiell)
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
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
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
MehrCompiler für f r Eingebettete Systeme (CfES)
Compiler für f r Eingebettete Systeme (CfES) Sommersemester 2009 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung für Eingebettete Systeme Kapitel 9 Ausblick
MehrMulti-threaded Programming with Cilk
Multi-threaded Programming with Cilk Hobli Taffame Institut für Informatik Ruprecht-Karls Universität Heidelberg 3. Juli 2013 1 / 27 Inhaltsverzeichnis 1 Einleitung Warum Multithreading? Ziele 2 Was ist
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
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
MehrCUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1
CUDA Jürgen Pröll Multi-Core Architectures and Programming Jürgen Pröll 1 Image-Resize: sequentiell resize() mit bilinearer Interpolation leicht zu parallelisieren, da einzelne Punkte voneinander unabhängig
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
MehrPraktikum: Paralleles Programmieren für Geowissenschaftler
Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart & Enno Zickler hermann.lenhart@zmaw.de OpenMP Allgemeine Einführung I OpenMP Merkmale: OpenMP ist keine Programmiersprache!
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
MehrPraktikum: Paralleles Programmieren für Geowissenschaftler
Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart, Ulrich Körner, Nathanael Hübbe hermann.lenhart@zmaw.de OpenMP Einführung I: Allgemeine Einführung Prozesse
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
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
MehrDefinitionen/Vorarbeit zum Thema Java
Definitionen/Vorarbeit zum Thema Java Programmiersprachen: System von Wörtern und Symbolen, die zur Formulierung von Programmen für die elektronische Datenverarbeitung verwendet werden. Arten: z.b. Javascript
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
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
MehrBeispiele von Branch Delay Slot Schedules
Beispiele von Branch Delay Slot Schedules Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Prozessor 97 Weniger
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
MehrSysteme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz
Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 21.11.2012 1 Begrüßung Heute ist Tag der offenen Tür Willkommen allen Schülerinnen und Schülern! 2 Testat nach Weihnachten Mittwoch
MehrDatenbanken Implementierungstechniken SS2015
Hochschule für Technik, Wirtschaft und Kultur Leipzig Leipzig University of Applied Sciences Parallele DBMS Datenbanken Implementierungstechniken SS2015 Alexander Müller Fakultät Informatik, Mathematik
MehrDigital Image Interpolation with CUDA
Digital Image Interpolation with CUDA Matthias Schwarz & Martin Rustler Hardware-Software-Co-Design Universität Erlangen-Nürnberg matthias.schwarz@e-technik.stud.uni-erlangen.de martin.rustler@e-technik.stud.uni-erlangen.de
MehrI Grundlagen der parallelen Programmierung 1
vii I Grundlagen der parallelen Programmierung 1 1 Einführung...... 3 1.1 Paradigmenwechsel in der Softwareentwicklung..... 4 1.2 Anwendungsbereiche...... 5 1.3 Parallelität in der Hardware..... 5 1.3.1
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
MehrMicrosoft.NET Framework & Component Object Model. ein Vortrag von Florian Steuber
Microsoft.NET Framework & Component Object Model ein Vortrag von Florian Steuber Übersicht I..NET Framework 1. Was ist das.net Framework? 2. Das.NET Execution Model 3. Sprachunabhängigkeit, CTS und CLS
MehrIntel Thread Checker
Kurs 1: Ferienakademie 2009 26. September 2009 Gliederung Gliederung Was macht der Thread Checker und warum? Historisches Alternativen Was macht der Thread Checker und warum? Historisches Alternativen
MehrSeminar: Multi-Core Architectures and Programming
Seminar: Multi-Core Architectures and Programming Parallelisierung des Viola-Jones Algorithmus auf Tilera Hardware-Software-Co-Design Universität Erlangen-Nürnberg 1 Übersicht Einleitung Erste Versuche
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
MehrLEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610
LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610 Dominik Weinrich dominik.weinrich@tu-dresden.de Dresden, 30.11.2017 Gliederung Motivation Aufbau und Hardware
MehrBeispiel: Schleifenparallelisierung
Beispiel: Schleifenparallelisierung for (i = 0; i high) { printf ( Exiting during iteration %d\n,i); break; for (j=low;j
MehrAutomatische SIMD Parallelisierung 23. Mai 2005
Automatische SIMD Parallelisierung von eingebetteten Anwendungen basierend auf Mustererkennung Seminararbeit von nach [1] Universität Karlsruhe (TH), Fakultät für Informatik, IPD Goos, 18.05.2005 1 Einleitung
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
MehrHigh Performance Embedded Processors
High Performance Embedded Processors Matthias Schwarz Hardware-Software-Co-Design Universität Erlangen-Nürnberg martin.rustler@e-technik.stud.uni-erlangen.de matthias.schwarz@e-technik.stud.uni-erlangen.de
MehrPraxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern
Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern Institut für Betriebssysteme und Rechnerverbund TU Braunschweig 25.10., 26.10.
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
MehrImpact of economics on compiler optimization
Impact of economics on compiler optimization Seminar Zwischen Sprachen und Codegenerierung SS 2005 Dimitar Dimitrov Betreuer: Rubino Geiß Kurzbeschreibung Arch D. Robinson, einer der Entwickler der KAI
MehrOpenMP - Geschichte. 1997: OpenMP Version 1.0 für Fortran
OpenMP - Geschichte 1997: OpenMP Version 1.0 für Fortran Standard für f r die Shared-Memory Memory-Programmierung inzwischen für f r alle namhaften SMP-Rechner verfügbar wird im techn.-wiss. Rechnen die
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
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
MehrTask& Data-Flow Graphs
Task& Data-Flow Graphs M. Thaler, TG208, tham@zhaw.ch www.zhaw.ch/~tham Februar 16 1 1 Um was geht es? Parallele Algorithmen was sind Möglichkeiten zur Darstellung? was sind Möglichkeiten zur Analyse?
MehrChristoph Niederseer, Michaela Mayr, Alexander Aichinger, Fabian Küppers. Wissenschaftl. Arbeitstechniken und Präsentation
Christoph Niederseer, Michaela Mayr, Alexander Aichinger, Fabian Küppers 1. Was ist paralleles Programmieren 2. Bitoner Sortieralgorithmus 3. Quicksort a) sequenzielles Quicksort b) paralleles Quicksort
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
MehrProgrammieren Vorkurs
Programmieren Vorkurs Tag 4 - Schleifen und Git Nils-André Forjahn, 11.10.2018 Über mich Nils-André Forjahn Studiere Informatik Java-HiWi am Institut für Softwaretechnik und Fahrzeuginformatik Lehr-HiWi
MehrAllgemeine Lösung mittels Hazard Detection Unit
Allgemeine Lösung mittels Hazard Detection Unit Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Prozessor 83
Mehr2 Rechnerarchitekturen
2 Rechnerarchitekturen Rechnerarchitekturen Flynns Klassifikation Flynnsche Klassifikation (Flynn sche Taxonomie) 1966 entwickelt, einfaches Modell, bis heute genutzt Beschränkung der Beschreibung auf
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
MehrProjektarbeiten WiSe 13/14
Projektarbeiten WiSe 13/14 Fynn Schwiegelshohn, Muhammed Al Kadi, Max Ferger Prof. Dr.-Ing. Michael Hübner, Lehrstuhl für Eingebettete Systeme der Informationstechnik (ESIT) Fakultät für Elektrotechnik
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
MehrSequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )
Threads Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden ) Ein thread bearbeitet eine sequentielle Teilaufgabe innerhalb eines Prozesses Mehrere nebenläufige
MehrCUDA 3SAT-Solver Boolean Satisfiability VS. nvidia CUDA
CUDA 3SAT-Solver Boolean Satisfiability VS. nvidia CUDA Multicore Architectures and Programming 27. 6. 2008 Blaß Thorsten, Schönfeld Fabian Das Problem SAT: Boolean Satisfiability (Dt.: Erfüllbarkeitsproblem)
MehrArchitektur moderner GPUs. W. Sczygiol - M. Lötsch
Architektur moderner GPUs W. Sczygiol - M. Lötsch Überblick Chipentwicklung Aktuelle Designs Nvidia: NV40 (ATI: R420) Vertex-Shader Pixel-Shader Shader-Programmierung ROP - Antialiasing Ausblick Referenzen
MehrInformatik II SS Der Kompilationsprozess (-phasen) Schreiben des Programms. Die Organisation eines typischen Compilers
Der Kompilationsprozess (-phasen) Informatik II SS 2004 Teil 6: Sprachen, Compiler und Theorie 7 Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Scanner
MehrEinführung in die Systemprogrammierung
Einführung in die Systemprogrammierung Sprachen und Übersetzer Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 4. Juni 2015 Sprachen vs. Übersetzer Sprache C11 Übersetzer GNU C
MehrGPGPU-Architekturen CUDA Programmiermodell Beispielprogramm. Einführung CUDA. Ralf Seidler. Friedrich-Alexander-Universität Erlangen-Nürnberg
Einführung CUDA Friedrich-Alexander-Universität Erlangen-Nürnberg PrakParRA, 18.11.2010 Outline 1 GPGPU-Architekturen 2 CUDA Programmiermodell 3 Beispielprogramm Outlook 1 GPGPU-Architekturen 2 CUDA Programmiermodell
Mehr3. Stud.IP-Entwickler-Workshop 2. Juni 2006 Workshop 1a: Gib mir 5: Lohnt sich der Umstieg auf PHP5 und MySQL5? André Noack
3. Stud.IP-Entwickler-Workshop 2. Juni 2006 Workshop 1a: Gib mir 5: Lohnt sich der Umstieg auf PHP5 und MySQL5? André Noack Gliederung (nicht mehr so) Neues in PHP 5 Neues in MySQL 4.1 / 5 Probleme mit
MehrArchitektur von Parallelrechnern 50
Architektur von Parallelrechnern 50 Rechenintensive parallele Anwendungen können nicht sinnvoll ohne Kenntnis der zugrundeliegenden Architektur erstellt werden. Deswegen ist die Wahl einer geeigneten Architektur
MehrImpact of Economics on Compiler Optimization
Impact of Economics on Compiler Optimization Arch D. Robinson Kai Software Seminar Zwischensprachen & Codegenerierung IPD Goos Dimitar Dimitrov Betreuer Rubino Geiß 0 Überblick Überblick Problem Übersetzer
MehrComputergrundlagen Moderne Rechnerarchitekturen
Computergrundlagen Moderne Rechnerarchitekturen Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Aufbau eines modernen Computers DDR3- Speicher Prozessor Prozessor PEG
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
MehrKonzepte und Methoden der Systemsoftware. Aufgabe 1: Polling vs Interrupts. SoSe bis P
SoSe 2014 Konzepte und Methoden der Systemsoftware Universität Paderborn Fachgebiet Rechnernetze Präsenzübung 3(Musterlösung) 2014-05-05 bis 2014-05-09 Aufgabe 1: Polling vs Interrupts (a) Erläutern Sie
Mehr.NET Task Parallel Library: Eine Rundtour
.NET Parallel Library: Eine Rundtour Luc Bläser Hochschule für Technik Rapperswil Parallel 2015 Konferenz 23. Apr. 2015, Karlsruhe Die.NET Parallel Library (TPL) Stand der Technik für.net Parallelprogrammierung
MehrProgrammiersprachen und Übersetzer
Programmiersprachen und Übersetzer Sommersemester 2009 5. April 2009 Vorteile bei der Verwendung höherer Programmiersprachen Vorteile bei der Verwendung höherer Programmiersprachen 1. Einfache Notation
MehrParsing SystemVerilog 2012
Parsing Julian Nagel Lehrstuhl für Rechnerarchitektur Universität Heidelberg 06.07.2016 1 2 3 Inhaltsverzeichnis 4 5 6 Viele Ideen dazu wie effektiv Hardware entwickelt werden kann, aber keine IDE welche
MehrParalleler Cuckoo-Filter. Seminar: Implementierungstechniken für Hauptspeicherdatenbanksysteme Jeremias Neth München, 21.
Paralleler Cuckoo-Filter Seminar: Implementierungstechniken für Hauptspeicherdatenbanksysteme Jeremias Neth München, 21. November 2017 1 Paralleler Cuckoo-Filter Cuckoo-Hashtabelle Serieller Cuckoo-Filter
MehrRealisierung einer MC-basierten Optionspreisberechnung mit FloPoCo
Fakultät Informatik, Institut für Technische Informatik, Professur VLSI-Entwurfssysteme, Diagnostik und Architektur Realisierung einer MC-basierten Optionspreisberechnung mit FloPoCo Christian Skubich
MehrSimulation digitaler Schaltungen auf GPUs
Simulation digitaler Schaltungen auf GPUs Yohan Humbert TU Kaiserslautern Embedded Systems Group 1 Inhalt 1. Motivation und Geschichte 2. Simulation 3. Synchrones Verfahren 4. Asynchrones Verfahren 5.
MehrApriori Algortihmus. Endpräsentation. Stefan George, Felix Leupold
Apriori Algortihmus Endpräsentation Stefan George, Felix Leupold Gliederung 2 Wiederholung Apriori Erweiterung: Parallelisierung Parallele Programmierung in Python Parallelisierungszenarien Implementierung
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
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
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
MehrComputergrafik Universität Osnabrück, Henning Wenke,
Computergrafik Universität Osnabrück, Henning Wenke, 2012-05-14 Kapitel V: Modeling Transformation & Vertex Shader 5.1 Vertex Definitionen: Vertex Vertex Computergrafik Mathematischer Punkt auf einer Oberfläche
MehrLösungsvorschlag Serie 2 Rekursion
(/) Lösungsvorschlag Serie Rekursion. Algorithmen-Paradigmen Es gibt verschiedene Algorithmen-Paradigmen, also grundsätzliche Arten, wie man einen Algorithmus formulieren kann. Im funktionalen Paradigma
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
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
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
MehrFPGA Systementwurf. Rosbeh Etemadi. Paderborn University. 29. Mai 2007
Paderborn Center for Parallel l Computing Paderborn University 29. Mai 2007 Übersicht 1. FPGAs 2. Entwicklungssprache VHDL 3. Matlab/Simulink 4. Entwicklungssprache Handel-C 5. Fazit Übersicht FPGAs 1.
MehrInformatik I Übung, Woche 40
Giuseppe Accaputo 1. Oktober, 2015 Plan für heute 1. Nachbesprechung Übung 2 2. Vorbesprechung Übung 3 3. Zusammenfassung der für Übung 3 wichtigen Vorlesungsslides Informatik 1 (D-BAUG) Giuseppe Accaputo
MehrMulticore Architektur vs. Amdahl`s Gesetz
Fakultätsname Informatik, Professur Technische Informatik Multicore Architektur vs. Amdahl`s Gesetz Dresden, 21.Juli.2010 Motivation Veröffentlichung von IEEE Computer 2008 von Mark D. Hill (University
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
MehrObjektorientierte Programmierung II
Objektorientierte Programmierung II OOP I Erlaubt Entwicklers, im Problemraum zu denken und zu arbeiten. Das Problem wird in eine Menge von Objekten zerlegt. Objekte wirken aufeinander, um das Problem
MehrLehrstuhl für Informatik 12 (Hardware-Software-Co-Design) Prof. Dr.-Ing. J. Teich
Lehrstuhl für Informatik 12 (Hardware-Software-Co-Design) Friedrich-Alexander-Universität Erlangen-Nürnberg Prof. Dr.-Ing. J. Teich Rückblick - Großrechner 2 Keine Computer im Haushalt? Ken Olsen, US-amerikanischer
MehrEinführung. GPU-Versuch. Andreas Schäfer Friedrich-Alexander-Universität Erlangen-Nürnberg
GPU-Versuch andreas.schaefer@cs.fau.de Friedrich-Alexander-Universität Erlangen-Nürnberg Praktikum Parallele Rechnerarchitekturen SS2014 Outline 1 Einführung 2 Outlook 1 Einführung 2 Eine kurze Geschichte
MehrCilk 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ÜBUNGS-BLOCK 7 LÖSUNGEN
ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i
MehrDatenpfaderweiterung Der Single Cycle Datenpfad des MIPS Prozessors soll um die Instruktion min $t0, $t1, $t2 erweitert werden, welche den kleineren
Datenpfaderweiterung Der Single Cycle Datenpfad des MIPS Prozessors soll um die Instruktion min $t0, $t1, $t2 erweitert werden, welche den kleineren der beiden Registerwerte $t1 und $t2 in einem Zielregister
MehrOrganisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online
Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches
MehrDatenstrukturen & Algorithmen
Datenstrukturen & Algorithmen VO 708.031 Um was geht es? Datenstrukturen Algorithmen Algorithmus Versuch einer Erklärung: Ein Algorithmus nimmt bestimmte Daten als Input und transformiert diese nach festen
MehrRheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit
Rheinisch-Westfälische Technische Hochschule Aachen Seminararbeit Analyse von General Purpose Computation on Graphics Processing Units Bibliotheken in Bezug auf GPU-Hersteller. Gregori Kerber Matrikelnummer
MehrLeichtgewichtsprozesse
Leichtgewichtsprozesse häufiger Prozeßwechsel stellt in einem Betriebssystem eine hohe Belastung dar; auch erfordert die Generierung eines neuen Prozesses viele System-Resourcen in vielen Anwendungen werden
MehrLeichtgewichtsprozesse
Leichtgewichtsprozesse häufiger Prozeßwechsel stellt in einem Betriebssystem eine hohe Belastung dar; auch erfordert die Generierung eines neuen Prozesses viele System-Resourcen in vielen Anwendungen werden
MehrParallel Regions und Work-Sharing Konstrukte
Parallel Regions und Work-Sharing Konstrukte Um eine Parallelisierung von größeren Programmabschnitten, als es einzelne Schleifen sind, zu ermöglichen, stellt OpenMP als allgemeinstes Konzept die Parallel
MehrGames with Cellular Automata auf Parallelen Rechnerarchitekturen
Bachelor Games with Cellular Automata auf Parallelen en ( ) Dipl.-Inf. Marc Reichenbach Prof. Dietmar Fey Ziel des s Paralleles Rechnen Keine akademische Nische mehr Vielmehr Allgemeingut für den Beruf
Mehr