Christoph Niederseer, Michaela Mayr, Alexander Aichinger, Fabian Küppers. Wissenschaftl. Arbeitstechniken und Präsentation

Ähnliche Dokumente
Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

JAVA - Suchen - Sortieren

Programmieren I. Kapitel 7. Sortieren und Suchen

Grundlegende Sortieralgorithmen

Grundlagen der Programmierung 2. Sortierverfahren

damit hätten wir nach Ende der Schleife: "a[0 n-1] enthält nur Elemente aus a[0 n-1], aber in sortierter Reihenfolge".

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2

Sortierverfahren für Felder (Listen)

ALP I. Funktionale Programmierung

Abschnitt: Algorithmendesign und Laufzeitanalyse

Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :

Kapitel 6 Elementare Sortieralgorithmen

Datenstrukturen und Algorithmen

Allgemeine Speed-Up Formel. Gesetz von Gustafson-Barsis

Vom Leichtesten zum Schwersten Sortieralgorithmen

Teile und Herrsche Teil 2

6. Parallele Algorithmen

Fragen für die Klausuren

16. All Pairs Shortest Path (ASPS)

Kostenmaße. F3 03/04 p.188/395

Pro Informatik 2009: Objektorientierte Programmierung Tag 17. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

Programmierung Paralleler Prozesse

3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen

Sortierverfahren. Sortierverfahren für eindimensionale Arrays

Einführung in die Informatik 2

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Grundlagen der Programmierung

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Suchen und Sortieren (Die klassischen Algorithmen)

Algorithmen und Datenstrukturen 1

A+D: Bitonisches Sortieren

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1-1. Seminar -

Gedächtnisprotokoll. Modul: Parallele Programmierung und Grid Computing Prüfer: Herr Prof. Dr. Keller Datum: 6. April 2011

Algorithmen und Datenstrukturen


Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

Sortieralgorithmen. Vorlesung Algorithmen und Datenstrukturen 2. Prof. Dr. W. P. Kowalk Universität Oldenburg

Einstieg in die Informatik mit Java

Algorithmen und Datenstrukturen (für ET/IT)

MATHEMATISCHE ANALYSE VON ALGORITHMEN

Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou

Folge 13 - Quicksort

Seminarvortrag Amdahlsches und Gustafsonsches Gesetz

Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass

Effiziente Algorithmen

1. Grundlagen Sortieren Vertauschen Selektion Einfügen Quicksort Suchen...

Laufzeit und Komplexität

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?

Algorithmen und Datenstrukturen 1

1 Konzepte der Parallelverarbeitung

Programmiertechnik II

Geometrische Algorithmen

Einschub: Anweisungen und Bedingungen für PAP und Struktogramme (1)

Projekt Systementwicklung

Algorithmen und Datenstrukturen

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Rekursion

Grundlagen: Algorithmen und Datenstrukturen

4 Effizienz und Komplexität 3.1 1

Komplexität von Algorithmen

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Überblick. 5.1 Sequentielles Suchen. 5 Suchen und Sortieren

Einstieg in die Informatik mit Java

Multicore Architektur vs. Amdahl`s Gesetz

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n)

Überblick. Lineares Suchen

Dynamische Programmierung. Problemlösungsstrategie der Informatik

DATENSTRUKTUREN UND ALGORITHMEN

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen

Intel Threading Building Blocks (TBB)

Informatik I 1. Kapitel. Einführung in Algorithmen und Datenstrukturen. Einführung in Algorithmen. Einführung in Algorithmen.

Übersicht. 4.1 Ausdrücke. 4.2 Funktionale Algorithmen. 4.3 Anweisungen. 4.4 Imperative Algorithmen Variablen und Konstanten. 4.4.

MSDN Webcast: Parallelprogrammierung mit der Task Parallel Library für.net (Teil 1) Presenter: Bernd Marquardt

Otto-von-Guericke-Universität Magdeburg Fakultät für Informatik Institut für Simulation und Graphik Prof. Dr. Holger Theisel

Einführung in die Informatik 2

Sortieren Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 1

Median und i-kleinste Elemente

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

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Übung Datenbanksysteme II Physische Speicherstrukturen. Thorsten Papenbrock

Informatik ohne Rechner

Uebersicht. Webpage & Ilias. Administratives. Lehrbuch. Vorkenntnisse. Datenstrukturen & Algorithmen

Algorithmentheorie Randomisierung. Robert Elsässer

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002

Einführung in die Informatik I Kapitel II.1: Suchen

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Parallele Berechnungen

Algorithmen und Datenstrukturen 1

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm

Grundlagen der Informatik 2 (GdI2) - Algorithmen und Datenstrukturen -

Datenstrukturen & Algorithmen

One of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. Bin Hu

Informatik I 4. Kapitel Suchen in sequentiellen Listen

Parallele Systeme. 1 Einführung Durchführung der erweiterten Übung OpenMP... 3

Beschreiben Sie die Eigenschaften der verschiedenen Rechnertypen an Hand:

Transkript:

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 4. Radix Sort

Definitionen und Abgrenzung Komplexitätsklasse NC Amdahlsches Gesetz Gustafsons Gesetz

Sequentielle Programmierung Parallele Programmierung: Threads werden nebenläufig ausgeführt Nebenläufige Threads synchronisieren Möglich, wenn gleiche Resultate durch Parallelisierung erzielt wird, wie sequentielle

Komplexität (Ermittlung von Zeit- und Speicherplatzaufwand) kann bei parallelen Algorithmen schwieriger nachvollziehbar sein. Eigene Komlexitätsklasse NC (Nick s Class nach Nick Pippenger) polylogarithmische Zeit ( O(log c n), c konstant) polynomieller Aufwand (also O(n k ), k konstant)

Grenzen von parallel lösbaren Problemen Gesetz von Gene Amdahl 1967 Gesetz von John Gustafson 1988

Geschwindigkeitzuwachs wird vor allem durch sequentiellen Anteil des Problems beschränkt. (z.b.: Prozess-Initialisierung, Speicherplatz- Allokation) Kritik: Günstiger Fall: gesamte Problemgröße im Cache statt im langsameren Hauptspeicher Je größer Problemmenge, desto weniger fällt Zeit für Initialisierung ins Gewicht

Quelle: http://de.wikipedia.org/w/index.php?title=datei:amdahlslaw_german.svg&filetimestamp=20090311122810

Eine genügend große Problemgröße kann effizient parallelisiert werden. Unterschied: paralleler Anteil wächst mit der Anzahl der Prozessoren - >sequentieller Anteil vernachlässigbar. Geht Anzahl der Prozessoren gegen unendlich, so wächst SpeedUp linear mit Anzahl der Prozessoren. Kritik Probleme mit bestimmter Größe Echtzeit

Einleitung Definition: Bitonische Reihe Batcher Algorithmus Ablauf Umsetzung als paralleler Algorithmus Merge Darstellung für Netzwerk Ordnung 8 Darstellung für vereinfachtes Netzwerk Ordnung 8 Konkretes Beispiel Ordnung 8

Probleme große Datenmengen zu sortieren Grenzen bei Computern mit einem Prozessor Folge: mehrere Rechner verwenden Basis für parallele Sortieralgorithmen ist bitonisches Sortieren

Eine Folge a 0,,a n von ganzen Zahlen heißt bitonisch, wenn der erste Teil der Folge aufsteigend und der zweite Teil absteigend sortiert ist, oder wenn man die Folgenglieder so durchschieben kann, dass die Bedingung erfüllt ist.

1. Input: unsortierte Folge 2. In 2 Hälften teilen 3. a. Hälfte aufsteigend b. Hälfte absteigend sortieren 4. Verbinden durch merge 5. Sortieren mit merge Animation

Shuffle Exchange Unshuffle Oder: a 1,,a i (aufsteigend) und a i+1,,a n (absteigend) mit i=n/2 merge: min(a 1,a i+1 ),,min(a i,a n ), max(a 1,a i+1 ),,max(a i,a n ).

1.Phase (sortieren auf bitonische Folge)

2.Phase (sortieren der bitonischen Folge)

Rekursionsebenen + Vergleichsoperationen Θ(log 2 n) Schnellster sequentieller Algorithmus: Θ(n logn)

Rückblick: 1962, England, Tony Hoare Quick Schnell, sort sortieren Rekursiver, nicht stabiler Algorithmus Divide and Conquer Teile und Herrsche

Wahl eines Pivotelements Alle Elemente < Pivot: linke Teilliste Alle Elemente > Pivot: rechte Teilliste Selbstaufrufe: Rekursion Änderung der Position der zueinander gleichen Elemente: nicht stabiler Algorithmus

1. Phase: Die Partitionierung Alle Elemente in Blöcke Größe der Blöcke: pro Kern 2 Blöcke gleichzeitig im First Level Cache der CPU PID = Process Identifier Aufgabe: Blöcke neutralisieren 2. Phase: Sequentielle Partitionierung Blöcke nochmal richtig positionieren Array in 2 Teilarrays teilen

3. Phase: Prozess Partitionierung Prozesse werden in 2 Gruppen geteilt Pro Gruppe 1 Teilarray Neubeginn mit der 1. Phase 4. Phase: Sequenzielles Sortieren mit Hilfe Aufteilen der Teilarrays Sortierung durch Quicksort Sobald 1 Prozess fertig: Unterstützung für andere

Zwei Arten: LSD: least significant digit first MSD: most significant digit first Sequentieller Radix Sort Parallelisierung

Grundüberlegung: 2 Phasen: Partitionierung: Daten werden in entsprechende Fächer aufgeteilt Sammeln Daten werden aus den Fächern gesammelt