Seminar: Multi-Core Architectures and Programming

Ähnliche Dokumente
CUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1

Analyse von Synchronisation

High Performance Embedded Processors

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

Cell and Larrabee Microarchitecture

Technische Grundlagen der Informatik 2 SS Einleitung. R. Hoffmann FG Rechnerarchitektur Technische Universität Darmstadt E-1

Seminar: Multi-Core Architectures and Programming. Viola-Jones Gesichtsdetektor

N Bit Binärzahlen. Stelle: Binär-Digit:

Pthreads. David Klaftenegger. Seminar: Multicore Programmierung Sommersemester

OpenCL (Cell B. E., PS3) Multicore Architectures and Programming

CUDA. Philip Höhlein, Nils Werner Supervision: R. Membarth, P. Kutzer, F. Hannig. Hardware-Software-Co-Design Universität Erlangen-Nürnberg

Digital Image Interpolation with CUDA

Entwurf eines FPGA-Cores zur Simulationsbeschleunigung zeitkontinuierlicher Modelle im HiL Kontext

Cilk Sprache für Parallelprogrammierung. IPD Snelting, Lehrstuhl für Programmierparadigmen

Parallelisierung auf CUDA

Memory Models Frederik Zipp

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

Grundlagen der Rechnerarchitektur

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Konzepte von Betriebssystem-Komponenten: Effiziente Manycore-Systeme

Threads Einführung. Zustände von Threads

Microsoft.NET Framework & Component Object Model. ein Vortrag von Florian Steuber

Vertiefungsrichtung Rechnerarchitektur

Lehrstuhl für Informatik 12 (Hardware-Software-Co-Design) Prof. Dr.-Ing. J. Teich

Wichtige Rechnerarchitekturen

Grundlagen der Rechnerarchitektur. Einführung

Was ist Rechnerleistung

Implementierung zweier Algorithmen mittels OpenCL auf Grafikkarten

Leistungsfähige ARM CPUs für den industriellen Einsatz

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

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

Lock-free Datenstrukturen

Inhalt. Prozessoren. Curriculum Manfred Wilfling. 28. November HTBLA Kaindorf. M. Wilfling (HTBLA Kaindorf) CPUs 28. November / 9

Architekturen, Werkzeuge und Laufzeitumgebungen für eingebettete Systeme

Just-In-Time-Compiler (2)

Just-In-Time-Compiler (2)

Die Architektur des Sun UltraSPARC T2 Prozessors, Anwendungsszenarien

Tutorium Softwaretechnik I

Einleitung. Dr.-Ing. Volkmar Sieh WS 2005/2006. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg

LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610

C-to-CUDA-Compiler. Johannes Kölsch. October 29, 2012

Einleitung. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2006/2007

Betriebssysteme I WS 2017/18. Prof. Dr. Dirk Müller. 05a 64-/32-Bit-Architekturen

Modellbasierte Systementwicklung für Smarte Sensoren. Dr. Benjamin Schwabe, Andrea Hollenbach

Compute Unified Device Architecture CUDA

Parallele Rechnerarchitekturen

Busse. Dr.-Ing. Volkmar Sieh WS 2005/2006. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg

An Overview of the Signal Clock Calculus

GPU-Programmierung: OpenCL

Assembler - Einleitung

parallele Prozesse auf sequenziellen Prozessoren Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher.

Beispielvortrag: HPCG auf Intel Haswell-EP

Am Beispiel der SHARC-DSPs Jan Kiene

FPGA vs. Mikrocontroller. Agenda

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

Games with Cellular Automata auf Parallelen Rechnerarchitekturen

Teil VIII Von Neumann Rechner 1

I Grundlagen der parallelen Programmierung 1

SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION

Konzepte und Methoden der Systemsoftware. Aufgabe 1: Polling vs Interrupts. SoSe bis P

SOC - System on a Chip

Übersicht. Einleitung. Übersicht. Architektur. Dr.-Ing. Volkmar Sieh WS 2008/2009

Threads. Foliensatz 8: Threads Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015

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

Car on a Chip: Neue Steuergeräte-Architekturen mit Systems-on-Chip im Automobilbereich.

Grundlagen der Technischen Informatik. 13. Übung

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

DIGITALE SCHALTUNGEN II

Betriebssysteme. Vorlesung im Herbstsemester 2010 Universität Mannheim. Kapitel 6: Speicherbasierte Prozessinteraktion

Kapitel 4.2 Parallele Algorithmen

Busse. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2008/2009

Konzepte der parallelen Programmierung

Thread basierte partielle Rekonfiguration von SoC Systemen. Frank Opitz INF-M1 Anwendung 1 - Wintersemester 2009/

Aktuelle RTOS-Entwicklungen aus der Forschung

Aufbau und Funktionsweise eines Computers

Praktikum angewandte Systemsoftwaretechnik: Vergleich nichtblockierender Queues

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

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Current and Emerging Architectures Multi-core Architectures and Programming

Prozesse. Prozesse sind Programme. Prozesse können aus Unterprozessen bestehen. Prozesshierarchie Unterprozesse Threads

Analyse von Ansätzen zur Beschleunigung von SAT - Lösern durch dedizierte Hardware Komponenten

Hochleistungsrechnen auf dem PC

Teil 3: Konzepte von Betriebssystemen

Prozessrechner-Praktikum Echtzeitsysteme

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Besprechung des 5. Übungsblattes Parallelität innerhalb der CPU Pipelining

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Technische Informatik 1 Übung 5: Eingabe/Ausgabe (Computerübung) Georgia Giannopoulou, ETZ G & 18.

Refactoring the UrQMD Model for Many- Core Architectures

Evaluation of Switch-to-Switch Header Flit Protection Schemes in Networks-on-Chip

Multi-Core Architectures and Programming. Bilateral Grid Filter

Prüfung WS 1997/98. Studiengang: Informatik Fächergruppe: Software (I4) Tag: Bearbeitungszeit: 4 Stunden. Name:... Matr.Nr.:...

Selbststudium Informationssysteme - H1102 Christian Bontekoe & Felix Rohrer

Aufgabe 1 Entwicklung einer Virtuellen Maschine

Übungen zu Systemnahe Programmierung in C (SPiC) Sommersemester 2018

z/architektur von IBM

I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK

Vorstellung der SUN Rock-Architektur

Transkript:

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 Implementierung Ergebnisse Komplette Parallelisierung Implementierung Ergebnisse Ergebnisse 2

Einleitung Tile Processor von Tilera Multikern-Prozessor Maschine Erhöht Durchsatz durch Einsatz von Parallelität in Anwendungen Programmierbar über ANSI C und C++ Umgebung Prozessoren verbunden über zweidimensionales Mesh Network Integriert externe Speicher- und I/O-Schnittstellen auf dem Chip Jedes Tile implementiert einen unabhängigen 32-bit Integer Prozessor 3

Einleitung 64-core TILEPro64 Tile Prozessor Tile-Prozessor Hardware Architektur, TILE PROCESSOR ARCHITECTURE OVERVIEW FOR THE TILEPRO SERIES 4

Einleitung Einzelnes Tile Unabhängig ausführbar 32-bit Integer Prozessor Bestandteile: Zwischenspeicher, Cache Prozessor Einheit Switch Einheit verbindet Komponenten Drei Operationen pro Zyklus Tile Detail, TILE PROCESSOR ARCHITECTURE OVERVIEW FOR THE TILEPRO SERIES 5

Einleitung Eigenschaften Taktung: 866Mhz oder 700MHz 64 Kerne, davon 56 zur Verfügung Parallelisierung durch Threads Synchronisation über Mutex Programmiersprache: C++ Emulierte Floating-Point Berechnung 6

Erster Versuch - Skalierung Implementierung der Bild-Skalierung Bilineare Interpolation Gewichtung der Eckpunkte mit Distanzen d und y d x Geringe Änderung des gefundenen Objekts und Radius (303,292) Radius 87 Etwa 5% Performanceverlust Ausführung der Implementierung auf Tilera ca. 100-fache Ausführungszeit 35.000ms 7

Erster Versuch - Skalierung Parallelisierung Unterteilung des Bildes in kleinere Abschnitte Skalierung der Abschnitte auf Threads aufteilen Ablauf: Thread erzeugen Parameter: Anfangs- und Endpunkt des zu skalierenden Bildes sowie Originalbild skalierte Werte in interpoliertes Bild schreiben Thread beenden Ergebnis: ca. doppelter Zeitaufwand Problem: ständiges Erstellen und Beenden der Threads Lösung: Threads bekommen Signal, wenn neues Arbeitspaket bereit ist 8

Zweiter Versuch - Skalierung Vater Erstellt einmalig alle Threads Methode zerteilt Bild und erstellt Arbeitspakete für Threads Vater signalisiert Threads über Variable ob und was zu tun ist Threads Threads warten auf Signal vom Vater Dann entweder Skalierung mit Arbeitspaket durchführen oder beenden Ergebnis: Kein Zeitgewinn gegenüber nicht-paralleler Ausführung Problem: Skalierung nicht rechenaufwändig genug um Parallelität richtig auszunutzen Lösung: Gesamte Gesichtserkennung parallelisieren 9

Dritter Versuch - Detektion Vater Erstellt nach wie vor einmalig alle Threads Vorbereitung der Arbeitspakete für die Threads Sobald keine Arbeitspakete mehr vorhanden, warten bis alle Threads fertig sind Ergebnis ausgeben Threads Threads warten auf Signal vom Vater dass Arbeitspaket vorhanden ist Detektion durchführen und anschließend Signal an Vater Ergebnis: Erhebliche Schwierigkeiten bei der Implementierung Problem: Häufiges Sperren von vielen Variablen zur Synchronisation Lösung: Gesamte Arbeit an Threads auslagern, Vater verwaltet Threads nur 10

Vierter Versuch - Detektion Vater Vorinitialisierung des Skalierungsfaktors (erste Skalierung erst mit Faktor 1,331) Erstellen der Threads mit festen Parametern und Zeigern für Result-Set und Kaskade Warten bis alle Threads zurückkehren Ausgabe der Ergebnisse Threads Holt sich eigenständig aktuellen Skalierungsfaktor und startet Detektion Beendet sich wenn Grenze für Skalierungsfaktor erreicht ist Vorteil: Nur kurzzeitiges Sperren des globalen Skalierungsfaktors nötig Einfache Parameterverwaltung Ergebnis: Erhebliche Performancesteigerung Lösung: Gesamte Arbeit an Threads auslagern, Vater verwaltet Threads nur 11

Vierter Versuch - Detektion - Vater 12

Vierter Versuch - Detektion - Thread 13

Tim e in m iliseconds Ergebnisse Average execution tim e 60000 55000 50000 45000 40000 35000 30000 25000 20000 15000 10000 5000 0 1 2 3 4 5 6 8 10 12 14 16 18 20 22 26 32 N um ber of used tiles 866 M hz 700 M H z no Tiles x86 14

Ergebnisse Tiles 1 2 3 4 5 6 8 10 12 14 16 18 20 22 26 32 866 Mhz 59365,00 29345,67 19815,00 14884,80 12026,80 9954,60 7994,80 8006,00 7997,60 8008,20 7998,80 8007,60 8016,00 8021,40 8025,00 8030,20 700 MHz 18097 15178 12984 9720 9716 9714 9720 9718 9718 9720 no Tiles x86 35784 324 Optimale Leistung bei ca. 8 bis 16 parallelen Threads Bei dieser Variante maximal etwa 18 parallele Bearbeitungen möglich Detektion auf erster Skalierung braucht mehr als 2/3 der Zeit (5783,66 ms) Verbesserungspotential: Parallelisierung der Kaskaden Fix-Point statt Floating-Point verwenden 15

Fragen? 16