Optimierung von Algorithmen M.Sc. Michael Krauß Veldenz Gymnasium Lauterecken Stand: Juli 2011.

Slides:



Advertisements
Ähnliche Präsentationen
Programmieren in Logik
Advertisements

Algorithmentheorie 08 – Dynamische Programmierung (1)
Matrixmultiplikation
Schnelle Matrizenoperationen von Christian Büttner
PC-Cluster.
Einführung in Berechenbarkeit und Formale Sprachen
Netzwerke im Dialogmarketing
Concurrent Use.
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
REKURSION + ITERATION.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Minimum Spanning Tree: MST
Beispielrelation Buchbestellungen H = Menge der bedeutenden Ziele = {a, d} Schwelle T = 4 Stichprobe S = {a, b, a, a, a, a} mit s = |S| = 6 N = Anzahl.
Rekursion Richard Göbel.
Duo- und Quad Prozessor-Architektur
Effiziente Algorithmen
Effiziente Algorithmen
1. Die rekursive Datenstruktur Liste 1.1 Warteschlange (Queue)
Abschlussvortrag zur Studienarbeit
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Dynamische Programmierung mit Anwendung auf Sequence Alignment Problem
Rekursion Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Computerarchitektur AMD Athlon und Multikernprozessoren
2.4 Rekursion Klassifikation und Beispiele
Algorithmen und Datenstrukturen Übungsmodul 8
Parallelisierung für Multiprozessor-Maschinen
SFZ FN Sj. 13/14 Python 3 Rekursion Inf K1/2 Sj 13/14
Computer Algebra für Brüche --- angepasst an Ausbildungszwecke
Sortiernetzwerke1 Seminar über Algorithmen SS 2005 von Arash Sarkohi und Christian Bunse.
DataGround UG (haftungsbeschränk). DataGround UG (haftungsbeschränk) IST - Status: In der Produktion tritt an einem Arbeitsplatz ein Problem auf. Der.
Färben der Knoten von Graphen
Aktueller Stand der Technik. Auf dem Markt sind heute bereits 64-Bit Mikrocontroller. Die meiste Verwendung finden allerdings noch immer die 8-Bit Modelle.
Unterprogramme / Methoden
INTEL im vergleich mit AMD
Programmiersprachen II Vorbesprechung Klausur Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 3 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
© 2016 TravelTainment Einführung in die Garbage Collection Seminarvortrag Lars Frauenrath 1.
Dr. Wolfram Amme, Automatische Speicherverwaltung, Informatik II, FSU Jena, SS Automatische Speicherverwaltung.
Seminar Softwareproduktlinien Domänenspezifische Sprachen Sascha Draffehn von.
OpenSource – Freie Software Und die Frage, wie freie Software genutzt wird.
Planung eines Gruppenpuzzles zum Thema Analytische Geometrie Referentin: Anna Jacob Seminarleitung: StDin Claudia Homberg- Halter WS 09/10.
Nicolas Ruh EF Informatik 2017 Nicolas Ruh
Flexibles Job-Shop Scheduling in einer Glasfabrik
HCS Übung 3 Von: Patrick Denk Oleg Arenz
2.4 Rekursion Klassifikation und Beispiele
Apple Deployment Programs (DEP)
Hadoco.
FIEGE INNOVATION CHALLENGE
DIE TROJANER Benjamin Leu & Joel Dietschi.
Modern PC - Textbausteine
ReduSoft Ltd. Kurzbeschreibungen zu einigen Modulen, die im Programm MathProf 5.0 unter dem Themenbereich Algebra implementiert sind. Matrizen.
ReduSoft Ltd. Kurzbeschreibungen zu einigen Modulen, die im Programm MathProf 5.0 unter dem Themenbereich Algebra implementiert sind. Matrizen.
Einführung in die Programmierung
Mögliche Stoffverteilung im Grundkurs
REKURSION + ITERATION.
Datenstrukturen und Softwareentwicklung
FIEGE INNOVATION CHALLENGE
Gemeinsame Entwicklung eines schulinternen Curriculums
Lösung von Optimierungsaufgaben in der Unternehmensplanung
„Wie Aliens entstehen…!“ Wochenrückblick vom bis
 Präsentation transkript:

Optimierung von Algorithmen M.Sc. Michael Krauß Veldenz Gymnasium Lauterecken Stand: Juli 2011

● Lehrplanbezug ● Motivation ● Fibonacci: rekursiv, iterativ und direkt berechnet ● ● Optimierung durch Threads ● Optimierung der Warteschlange und Reihenfolge ● Fazit und Anregungen Inhalt der Präsentation

Optimierung von Algorithmen3 Lehrplanbezug Algorithmisches Problemlösen Effizienz Die Bedeutung von Zeit- und Speicheraufwand bei der Entwicklung von Algorithmen klären. Exemplarisch Algorithmen hinsichtlich ihres Laufzeitverhaltens vergleichen. Den Zeitaufwand dabei experimentell oder durch Abschätzungen ermitteln. 3.4 Algorithmen und Datenstrukturen Rekursion Das Grundprinzip einer rekursiven Problemreduktion an einfachen Beispielen erarbeiten und dabei die Begriffe Rekursionsbasis und Rekursionsschritt zur Beschreibung von Problemreduktionen einführen. Die Relevanz rekursiver Algorithmusbeschreibungen durch komplexere Beispiele (z.B. Standardalgorithmen) verdeutlichen. Rekursive Problemlösungen in eher einfacheren Fällen selbstständig entwickeln. Vor- und Nachteile zwischen Rekursion und Itera-tion durch einen Vergleich herausstellen (u. a. Verständlichkeit, Effizienz).

Optimierung von Algorithmen4 Motivation ● Effiziente Algorithmen sparen Zeit und Kosten ● Beobachtung und Bewertung der Effizienz eines Algorithmus ist eine interessante Erfahrung ● Multiprozessoren werden Stand heute immer noch zu wenig eingesetzt ● Threads und Multiprozessoren steigern die Leistungsfähigkeit eines Rechners!!!

Optimierung von Algorithmen5 Beispiel aus der Wirtschaft ● Eine Firma bietet ein Portal zur Routenberechnung an (vgl. Navigationssystem) ● Viele Kunden stellen "gleichzeitig" eine Anfrage an den Webservice ● Probleme: – Kunde will nicht lange warten – Firma kann nicht für jeden concurrent user einen eigenen Server bereitstellen ● Notwendigkeit von Queues und Threads

Optimierung von Algorithmen6 Beispiel aus der Wirtschaft ● Eine solche Situation ist aus verschiedenen Gründen im Unterricht schwer umzusetzen und zu simulieren: ● Fehlende Lizenzen und Programme ● Eine Lerngruppe bildet zu wenige concurrent user um einen heutigen Rechner ausreichend auszulasten ● Monitoring / Beobachtung ist sehr schwierig ● Man benötigt eine leicht umsetzbare und zu verstehende Situation!!!

● Lehrplanbezug ● Motivation ● Fibonacci: rekursiv, iterativ und direkt berechnet ● ● Optimierung durch Threads ● Optimierung der Warteschlange und Reihenfolge ● Fazit und Anregungen Inhalt der Präsentation

Optimierung von Algorithmen8 Der Klassiker: Fibonacci Fibonacci-Zahlen kann man rekursiv, iterativ und explizit berechnen. Rekursiv Iterativ

Optimierung von Algorithmen9 Matheeffizient != Informatikeffizient ● Fibo per explizites Bildungsgesetz von Moivre/ Binet

Optimierung von Algorithmen10 Rechenzeiten: fibo(0) - fibo(50) ● Hängen u.a. von CPU-Stärke ab ● hier: 2.33 GhZ QuadCore; 4GB RAM ● Rekursiv ms --> 10 mins, 30 secs. ● Iterativ3 ms ● Direkt38 ms

Optimierung von Algorithmen11 Zwischenfazit / Lernziele ● Aufwand von rekursiver Berechnung steigt exponentiell ● Aufwand von iterativer Berechnung steigt linear mit der Höhe von n ● Berechnung durch explizites Bildungsgesetz ist extrem aufwendig (Wurzelberechnungen etc. sind sehr teuer) ● Anregung: gibt es eine Schwelle, ab der Moivre schneller berechnet als iterativ hochzählt?

● Lehrplanbezug ● Motivation ● Fibonacci: rekursiv, iterativ und direkt berechnet ● ● Optimierung durch Threads ● Optimierung der Warteschlange und Reihenfolge ● Fazit und Anregungen Inhalt der Präsentation

Optimierung von Algorithmen13 Neuer Fokus: Mulitprozessoren ● Rekursive Berechnung von Fibonacci ist nicht effizient, das wissen wir (spätestens) jetzt ● Vorteile: ● einfach aufgebauter Algorithmus ● rechenintensiver Algorithmus, der die Hardware "lange beschäftigt" ● Somit gutes Beispiel für folgende Gedanken!

Optimierung von Algorithmen14 Optimierung von rekursivem Fibo Grund: Schüler verstehen das Ursprungsproblem und können an diesem Beispiel die Optimierungsschritte sehr gut nachvollziehen. Das Problem an sich ist künstlich, es liegen bereits effizientere Algorithmen vor! Aufgabe: Berechne rekursiv Fibonacci-Zahlen von 0-50!

Optimierung von Algorithmen15 Vor der Optimierung ● Ein heutiger Mehrkernprozessor (hier Quad- Core) berechnet eine Menge von Fibonacci- Zahlen auf einem Kern. Die anderen Kerne werden nicht benutzt. ● In der Grafik erkennt man, dass nur der rechte Kern durch FIBO ausgelastet ist, während die anderen nur durch das Betriebssytem beansprucht werden.

Optimierung von Algorithmen16 1. Optimierung ● Für jeden Kern wird ein eigener Thread erzeugt, die 50 Aufgaben / Anfragen werden aufgeteilt ● Alle Kerne arbeiten nun gleichzeitig ● Java verteilt die Threads automatisch auf die Kerne --> Danke ;-)

Optimierung von Algorithmen17 Sequence Diagram & Beobachtung ● Zu Beginn arbeiten alle 4 Kerne ● Die Gesamtzeit verkürzt sich ● Gegen Ende arbeitet 1 Thread, 3 sind fertig und "idlen" Auszug aus Sequence Diagram: fibo(0)- fibo(3)

● Lehrplanbezug ● Motivation ● Fibonacci: rekursiv, iterativ und direkt berechnet ● ● Optimierung durch Threads ● Optimierung der Warteschlange und Reihenfolge ● Fazit und Anregungen Inhalt der Präsentation

Optimierung von Algorithmen19 2. Optimierung: Order & Queue Optimierung 2: ● Umkehrung der Reihenfolge ● von fibo(50) bis fibo(0) rechnen ● Man beginnt mit den rechenintensivsten Aufgaben ● Eine gemeinsame Queue für alle Threads ● Sobald 1 Thread eine Aufgabe bearbeitet hat, nimmt er sich aus der Warteschlange die nächste, bis diese leer ist

Optimierung von Algorithmen20 Sequence Diagram 2. Optimierung ● Thread 4 arbeitet bereits am 3. Wert fibo(43), wenn Thread 1 erst mit seinem 1. Wert fibo(50) fertig wird Prinzip als Sequence Diagram (Auszug da sonst zu komplex)

Optimierung von Algorithmen21 Beobachtungen ● 1 Thread arbeitet sehr lange an komplexen Aufgaben (z.B. fibo(50)) ● In der Zwischenzeit bearbeiten andere Threads eine Vielzahl von einfacheren Aufgaben ● Deutlich optimierte Auslastung aller Kerne ● Wiederum verkürzte Bearbeitungszeit der Gesamtaufgabe

Optimierung von Algorithmen22 Messwerte: Rekursiver Fibo ● "Klassisch" mit einem Kern ● ms --> 10 mins, 30 secs. ● Optimierung 1: Threads ● ms --> 4 mins, 50 secs. ● Gewinn: 46,17% der Urprungszeit benötigt ● Optimierung 2: Warteschlange & Reihenfolge ● ms. --> 4 mins, 5 secs. ● Gewinn: 84,5% der Zeit von Optimierung 1 ● Gewinn: 39% der Ursprungszeit benötigt

Optimierung von Algorithmen23 Einschub: Testdaten eines Schülers ● Intel Core i5 2nd Generation (i5-2410M) with 2 Cores/4 Threads and Turbo-Boost: 2,9 GhZ; 6GB Ram ● Calculating fibo from 0 to 50 took ms. ● Das ist 53,4% der Rechenzeit des eingesetzten Quadcore ● Verfahren eignet sich zur Beurteilung der Leistungsfähigkeit eines Rechners

● Lehrplanbezug ● Motivation ● Fibonacci: rekursiv, iterativ und direkt berechnet ● ● Optimierung durch Threads ● Optimierung der Warteschlange und Reihenfolge ● Fazit und Anregungen Inhalt der Präsentation

Optimierung von Algorithmen25 Fazit ● Im Beispiel könnte die Fibo-Firma über 50% ihrer Rechner einsparen ● Moderne Hardware bietet "neue" Möglichkeiten der Algorithmusoptimierung ● Ein Mehrkernprozessor kann die Leistungsfähigkeit eines Rechners steigern ● Man kann mithilfe von Threads interessante Laufzeitbeobachtungen machen ● Quellcode ist im Anhang: Bitte ausprobieren!

Optimierung von Algorithmen26 Anregung I (B. Fröhlich): Umsetzung als Rollenspiel ● Algorithmen kann man sehr gut über Flussdiagramme als Rollenspiel durchführen ● Die Verwendung mehrerer Kerne ist bei einer großen Gruppe auch durchführbar ● Gesamtlaufzeiten und Wartezeiten (der Schüler an einer Station) lassen sich dabei beobachten ● Gleichzeitig wird das algorithmische Denken gefördert

Optimierung von Algorithmen27 Anregung II (K. Merkert) ● Gegenwärtig berechnet ein Thread einen Wert ● Man könnte die Implementierung verändern und Teilergebnisse anderen Threads zur Verfügung stellen ● Dies birgt potentielle Risiken (Lost Update, Verletzung der Isolation), die man mit den Schülern zusammen untersuchen / besprechen kann ● Achtung: Hoher Schwierigkeitsgrad!

Optimierung von Algorithmen28 Quellen ● Die Gedankenreihe basiert auf eigenen Überlegungen ● Literatur zu Threads und Warteschlagen gibt es sehr viele, z.B.: ● Gumm/Sommer: Einführung in die Informatik ● Schader: Java. Eine Einführung ● Anhang ● Fibonacci.java --> rekursiv, iterativ, Moivre ● FiboMultiCore.java --> Threads, Queue etc.