Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Optimierung von Algorithmen M.Sc. Michael Krauß Veldenz Gymnasium Lauterecken Stand: Juli 2011."—  Präsentation transkript:

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

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

3 Optimierung von Algorithmen3 Lehrplanbezug 2.4 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).

4 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!!!

5 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

6 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!!!

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

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

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

10 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

11 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?

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

13 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!

14 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!

15 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.

16 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 ;-)

17 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)

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

19 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

20 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)

21 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

22 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

23 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

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

25 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!

26 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

27 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!

28 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.


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

Ähnliche Präsentationen


Google-Anzeigen