Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Star Trek 11: Unendliche Weiten Wissenschafliche Software mit.NET Bernd Marquardt Microsoft C++ MVP Microsoft Regional Director Germany Software+Consulting.

Ähnliche Präsentationen


Präsentation zum Thema: "Star Trek 11: Unendliche Weiten Wissenschafliche Software mit.NET Bernd Marquardt Microsoft C++ MVP Microsoft Regional Director Germany Software+Consulting."—  Präsentation transkript:

1 Star Trek 11: Unendliche Weiten Wissenschafliche Software mit.NET Bernd Marquardt Microsoft C++ MVP Microsoft Regional Director Germany Software+Consulting

2 Agenda Einführung Einführung.NET-Performance allgemein.NET-Performance allgemein Ein Beispiel: FFT Ein Beispiel: FFT Die unendlichen Weiten… Die unendlichen Weiten… CCD-Kameras und Bilder CCD-Kameras und Bilder Bildbearbeitung, Pixel-Verfahren mit C# Bildbearbeitung, Pixel-Verfahren mit C# Spektroskopie Spektroskopie Gauss-Fit von Peaks in einem Spektrum Gauss-Fit von Peaks in einem Spektrum Performance und MT (I/O, OpenMP) Performance und MT (I/O, OpenMP) Zusammenfassung Zusammenfassung

3 Einführung.NET war neu (vor einigen Jahren).NET war neu (vor einigen Jahren) Version 1.0, 1.1, 2.0 vom Framework Version 1.0, 1.1, 2.0 vom Framework Es sollte mittlerweile ganz gut funktionieren Es sollte mittlerweile ganz gut funktionieren Wie steht es mit der Performance von.NET? Wie steht es mit der Performance von.NET? Mathematische Funktionen System.Math Mathematische Funktionen System.Math Rechengenauigkeit IEEE 754 Rechengenauigkeit IEEE 754 Grafik (2D, 3D) unter Windows DirectX Grafik (2D, 3D) unter Windows DirectX Ausführungsgeschwindigkeit ??? Ausführungsgeschwindigkeit ??? I/O-Performance ??? I/O-Performance ???

4 Einführung Wenn es um schnelles Rechnen ging, gab es immer bestimmte Preferenzen Wenn es um schnelles Rechnen ging, gab es immer bestimmte Preferenzen Historie: Historie: Maschinensprache (lang, lang ists her) Maschinensprache (lang, lang ists her) FORTRAN(lang ists her) FORTRAN(lang ists her) C(schon mal gehört) C(schon mal gehört) C++(kennt man) C++(kennt man).NET???(in Zukunft??).NET???(in Zukunft??) FORTRAN ist noch nicht ganz aus dem Rennen: Fortran für.NET (Lahey) FORTRAN ist noch nicht ganz aus dem Rennen: Fortran für.NET (Lahey)

5 Einführung Performance-Probleme können sehr vielschichtig sein: Performance-Probleme können sehr vielschichtig sein: Mangelnde Skalierbarkeit Mangelnde Skalierbarkeit Zu wenig Arbeitsspeicher Zu wenig Arbeitsspeicher Langsames Netzwerk Langsames Netzwerk Zu langsame Server Zu langsame Server Schlechtes Scheduling Schlechtes Scheduling Langsame Peripherie Langsame Peripherie Falsche Programmstruktur Falsche Programmstruktur Multithreading-Probleme Multithreading-Probleme Langsamer Prozessor Langsamer Prozessor

6 System.Math Vielfältige mathematische Funktionen Vielfältige mathematische Funktionen Ca. 30 Methoden und Properties Ca. 30 Methoden und Properties Standard-Mathematik Standard-Mathematik Das ist eigentlich NICHT so viel Das ist eigentlich NICHT so viel Kann aber leicht erweitert werden Kann aber leicht erweitert werden Eigene statische Klassen mit statischen Methoden Eigene statische Klassen mit statischen Methoden Siehe Numerical Reciepts Siehe Numerical Reciepts

7 Rechengenauigkeit Float: 32 bit Float: 32 bit Ca. 7 signifikante Stellen Ca. 7 signifikante Stellen x bis x x bis x Double: 64 bit Double: 64 bit Ca. 15 signifikante Stellen Ca. 15 signifikante Stellen x bis x x bis x Decimal: 128 bit Decimal: 128 bit -79,228,162,514,264,337,593,543,950,335 bis +79,228,162,514,264,337,593,543,950, ,228,162,514,264,337,593,543,950,335 bis +79,228,162,514,264,337,593,543,950,335

8 Rechengenauigkeit Decimal-Typ ist eher für Finanz-Rechnungen mit großen Zahlen erforderlich Decimal-Typ ist eher für Finanz-Rechnungen mit großen Zahlen erforderlich Genauigkeit ist über einen bestimmten Wertebereich sehr gut Genauigkeit ist über einen bestimmten Wertebereich sehr gut Decimal = Integer (96 bit) + Skalierung + Vorzeichen Decimal = Integer (96 bit) + Skalierung + Vorzeichen Und wie ist die Performance? Und wie ist die Performance?

9 Nicht mathematisch, aber wichtig: Strings Hier kommt der Garbage-Collector ins Spiel Hier kommt der Garbage-Collector ins Spiel Verwalteter Speicher Verwalteter Speicher Verwaltung kostet Zeit! Verwaltung kostet Zeit! Gefährlich: Gefährlich: string += string; string += string; Häufiges Neuanlegen und Zerstören von Objekten Häufiges Neuanlegen und Zerstören von Objekten

10 String + StringBuilder String StringBuilder

11 StringBuilder Bei vielen (mehr als 5) String-Operationen StringBuilder benutzen Bei vielen (mehr als 5) String-Operationen StringBuilder benutzen Umwandlung in string kostet nichts Umwandlung in string kostet nichts StringBuilder -Klasse enthält wichtige Methoden StringBuilder -Klasse enthält wichtige Methoden Konvertieren nicht immer erforderlich Konvertieren nicht immer erforderlich Z.B.: Replace Z.B.: Replace

12 Generics – oder doch nicht? Früher: Alles mit Collections Früher: Alles mit Collections Generics können ihre Daten im richtigen Typ speichern Generics können ihre Daten im richtigen Typ speichern Kein Boxing und Unboxing nötig ( System.Object ) Kein Boxing und Unboxing nötig ( System.Object ) Das bringt Performance-Gewinne… Das bringt Performance-Gewinne… …und Typsicherheit …und Typsicherheit

13 Performance: Allgemein Runtime und JIT-Compiler sind für alle Sprachen gleich Runtime und JIT-Compiler sind für alle Sprachen gleich Performance-Unterschiede können nur aus den sprach-eigenen Compilern entstehen Performance-Unterschiede können nur aus den sprach-eigenen Compilern entstehen Analysemöglichkeiten Analysemöglichkeiten 1. Möglichkeit: Analyse des IL-Codes mit dem Tool ILDASM 1. Möglichkeit: Analyse des IL-Codes mit dem Tool ILDASM 2. Möglichkeit: Analyse des vom JIT-Compiler erzeugten Maschinencodes mit DebugBreak(); 2. Möglichkeit: Analyse des vom JIT-Compiler erzeugten Maschinencodes mit DebugBreak();

14 IL-Code-Unterschiede ldc.i4.0 stloc.0 br.s IL_000e ldloc.0 ldc.i4.1 add stloc.0 ldloc.0 ldc.i4.s 100 blt.s IL_0006 ldc.i4.0 stloc.0... ldloc.0 ldc.i4.1 add.ovf stloc.0 ldloc.0 ldc.i4.s 99 ble.s IL_0004 VB.NET C#

15 Arithmetik (einfach!) ((double) i + (double) j) * 2.5 ((double) i + (double) j) * 2.5 VB sek VB sek VC sek VC sek VC.NET unmng sek VC.NET unmng sek VC.NET mng sek VC.NET mng sek C#6.594 sek C#6.594 sek VB.NET(7.625)6.598 sek VB.NET(7.625)6.598 sek VS 6.0 VS.NET Asm. CLR

16 Arithmetik (kompliziert!) (((double) i + (double) j) * 2.5) / (i + j + 1) (((double) i + (double) j) * 2.5) / (i + j + 1) VB sek VB sek VC sek VC sek VC.NET unmng sek VC.NET unmng sek VC.NET mng sek VC.NET mng sek C# sek C# sek VB.NET sek VB.NET sek VS 6.0 VS.NET Asm. CLR

17 Arithmetik (esotherisch!) Fast Fourier Transformation Fast Fourier Transformation Sägezahn aus Einzelwerten Sägezahn aus Einzelwerten Daten-Array als lokale Variable Daten-Array als lokale Variable VC++ unmng. (lok. Array)63 msek VC++ unmng. (lok. Array)63 msek VC++ mng. (lok. Array)63 msek VC++ mng. (lok. Array)63 msek Allgemeine Ergebnisse: Allgemeine Ergebnisse: Mathematische Algorithmen sind sehr schnell – Rechenoperationen ohne Einschränkungen Mathematische Algorithmen sind sehr schnell – Rechenoperationen ohne Einschränkungen

18 Arithmetik (esotherisch!) Fast Fourier Transformation Fast Fourier Transformation Sägezahn aus Einzelwerten Sägezahn aus Einzelwerten Daten-Array auf dem Heap (mit VC.NET unter Kontrolle des Garbage Collectors) Daten-Array auf dem Heap (mit VC.NET unter Kontrolle des Garbage Collectors) VC++ unmng. (Heap)2.250 sek VC++ unmng. (Heap)2.250 sek VC++ mng. (GC)2.609 sek VC++ mng. (GC)2.609 sek Allgemeine Ergebnisse: Allgemeine Ergebnisse: Auch mit GC sind schnelle Berechnungen möglich Auch mit GC sind schnelle Berechnungen möglich

19 Arithmetik Je komplexer die Berechnungen, desto geringer werden die Unterschiede bei den CLR-Sprachen Je komplexer die Berechnungen, desto geringer werden die Unterschiede bei den CLR-Sprachen Allgemeines Ergebnis: Allgemeines Ergebnis: Es wurde kein Testbeispiel gefunden, bei dem die CLR-Zeiten abnormal langsam waren Es wurde kein Testbeispiel gefunden, bei dem die CLR-Zeiten abnormal langsam waren Bei allen Testbeispielen waren die CLR- Zeiten immer wesentlich besser, als die Zeiten von VB 6 Bei allen Testbeispielen waren die CLR- Zeiten immer wesentlich besser, als die Zeiten von VB 6

20 Optimierung des Codes d += (double) i * 11.2 / 2.5; d += (double) i * 11.2 / 2.5; Sprach-Compiler fasst zusammen Sprach-Compiler fasst zusammen for-Schleifen mit wenigen Durchgängen for-Schleifen mit wenigen Durchgängen JIT macht Loop-Unrolling JIT macht Loop-Unrolling for(i = 5; i < 5; i++) for(i = 5; i < 5; i++) JIT beachtet die Schleife nicht JIT beachtet die Schleife nicht d += 3 + a – a; d += 3 + a – a; JIT erzeugt keinen Code für + a - a JIT erzeugt keinen Code für + a - a

21 …jetzt kommt die Unendlichkeit Hobby: Astronomie und Astrophysik Hobby: Astronomie und Astrophysik Man fängt an… Man fängt an… …einfach mit gucken… …einfach mit gucken… …dann fotografieren… …dann fotografieren… …dann messen… …dann messen… …dann auswerten… …dann auswerten… …

22 Equipment

23 CCD-Technologie Früher: Normale Kleinbild-Kameras Früher: Normale Kleinbild-Kameras Nachteile: Nachteile: Unempfindlich Unempfindlich Scharfstellung schwierig Scharfstellung schwierig Objektpositionierung schwierig Objektpositionierung schwierig Nicht linear Nicht linear Vorteile: Vorteile: Großes Format Großes Format Kein Notebook erforderlich Kein Notebook erforderlich Kein Strombedarf Kein Strombedarf Farbbild: Einmal belichten Farbbild: Einmal belichten

24 CCD-Technologie Heute: CCD-Kameras Heute: CCD-Kameras Chips werden jetzt immer größer (Kleinbildformat) Chips werden jetzt immer größer (Kleinbildformat) Höchste Quanteneffizienz Höchste Quanteneffizienz Man sieht sofort, was man bekommt Man sieht sofort, was man bekommt Es gibt auch schon Farb-CCDs Es gibt auch schon Farb-CCDs Auflösung ist sehr hoch Auflösung ist sehr hoch Wichtig: Wenn man eine gute Kamera hat, braucht man auch ein gutes Notebook Wichtig: Wenn man eine gute Kamera hat, braucht man auch ein gutes Notebook

25 Bild-Aufnahme CCD-Kamera wird gekühlt CCD-Kamera wird gekühlt Flat-Bild Flat-Bild Dunkelbild Dunkelbild Mehrere Rohbilder Mehrere Rohbilder Final-Bild = (Rohbild – Dunkelbild) / Flat-Bild Final-Bild = (Rohbild – Dunkelbild) / Flat-Bild Alle Final-Bilder addieren Alle Final-Bilder addieren Kontrast- und Helligkeitsverstärkung Kontrast- und Helligkeitsverstärkung

26 Bildbearbeitung Es gibt CCD-Chip mit über 10 Millionen Pixel!!! Es gibt CCD-Chip mit über 10 Millionen Pixel!!! Alle Bildoperationen dauern entsprechend lange Alle Bildoperationen dauern entsprechend lange Beispiel: Download mit USB 2.0 ST-402ME 400,000 Pixel0.8 sek ST-2000XME2,000,000 Pixel4.8 sek

27 Bildbearbeitung Anzahl der Pixel ist ebenfalls kritisch bei allen Bildbearbeitungsoperationen Anzahl der Pixel ist ebenfalls kritisch bei allen Bildbearbeitungsoperationen Kontrast und Helligkeit ändern Kontrast und Helligkeit ändern Bild schärfen Bild schärfen Bild weichzeichnen Bild weichzeichnen Rauschen entfernen Rauschen entfernen Bilder addieren Bilder addieren Bilder kalibrieren Bilder kalibrieren Dunkelbild und Flat-Bild Dunkelbild und Flat-Bild

28 Bildbearbeitung Zusätzliches Problem: Zusätzliches Problem: GetPixel und SetPixel aus der Bitmap - Klasse sind sehr langsam GetPixel und SetPixel aus der Bitmap - Klasse sind sehr langsam Besser: Besser: unsafe -Code mit richtigen Zeigern unsafe -Code mit richtigen Zeigern IntPtr kann nicht benutzt werden: Zeigerarithmetik nicht erlaubt IntPtr kann nicht benutzt werden: Zeigerarithmetik nicht erlaubt LockBits, Scan0, UnlockBits LockBits, Scan0, UnlockBits Deutlich schneller Deutlich schneller

29 Bildbearbeitung Um das Letzte herauszuholen: Um das Letzte herauszuholen: Code in unmanaged C++ schreiben und kapseln Code in unmanaged C++ schreiben und kapseln.NET-Wrapper-Klassen um die öffentlichen C++- Klassen schreiben.NET-Wrapper-Klassen um die öffentlichen C++- Klassen schreiben Aus belibigen.NET-Sprachen benutzen Aus belibigen.NET-Sprachen benutzen Achtung: Aufruf von unmanaged Code! Achtung: Aufruf von unmanaged Code! Benutzung von Zeigern aus VB.NET- Projekten: Benutzung von Zeigern aus VB.NET- Projekten: Code (z.B.) in C#-Klassen kapseln und benutzen Code (z.B.) in C#-Klassen kapseln und benutzen

30 Spektroskopie

31 Spektrokopie Zerlegung des Lichtes in seine farblichen Bestandteile (sichtbarer Bereich: blau, grün, gelb, rot) Zerlegung des Lichtes in seine farblichen Bestandteile (sichtbarer Bereich: blau, grün, gelb, rot) Es gibt auch unsichtbare Bereiche: Es gibt auch unsichtbare Bereiche: UV-, IR-, Radio-, Röntgen-, Gamma-Strahlung UV-, IR-, Radio-, Röntgen-, Gamma-Strahlung Spezielle Detektoren sind erforderlich Spezielle Detektoren sind erforderlich Nicht jede Strahlung kann von der Erde aus beobachtet werden Atmosphäre Nicht jede Strahlung kann von der Erde aus beobachtet werden Atmosphäre Weltraumbeobachtung von Satelitten aus Weltraumbeobachtung von Satelitten aus Hubble, Cobe, Iras,… Hubble, Cobe, Iras,…

32 Spektrokopie Kontinuierliches Spektrum (z.B. von einer Glühlampe): Kontinuierliches Spektrum (z.B. von einer Glühlampe): Spektrum des Sterns Wega im Sternbild Leier (Entf. ca. 30 Lichtjahre): Spektrum des Sterns Wega im Sternbild Leier (Entf. ca. 30 Lichtjahre):

33 Spektroskopie Was kann man mit Spektroskopie ermitteln: Was kann man mit Spektroskopie ermitteln: Chemische Zusammensetzung Chemische Zusammensetzung Einer Sonnen-Atmosphäre (auch Druck) Einer Sonnen-Atmosphäre (auch Druck) Einer Dunkelwolke Einer Dunkelwolke Einer Molekülwolke Einer Molekülwolke Alter von Sternen Alter von Sternen Bewegungsgeschwindigkeiten (Doppler-Effekt) Bewegungsgeschwindigkeiten (Doppler-Effekt) Rotationsbewegungen von Sternen Rotationsbewegungen von Sternen Auflösung von Doppelsternen Auflösung von Doppelsternen Exo-Planeten Exo-Planeten …

34 Spektroskopie Absorptionslinien Absorptionslinien Hintergrund strahlt Kontinuum aus Hintergrund strahlt Kontinuum aus Davorliegendes Gas entnimmt Licht um bestimmte angeregte Zustände zu erreichen Davorliegendes Gas entnimmt Licht um bestimmte angeregte Zustände zu erreichen Emissionlinien Emissionlinien Ein Stern regt das umliegende Gas an Ein Stern regt das umliegende Gas an Das Gas sendet Licht bestimmter Farbe aus, wenn es sich wieder abregt Das Gas sendet Licht bestimmter Farbe aus, wenn es sich wieder abregt

35 Spektroskopie Vorgehensweise: Vorgehensweise: Teleskop Teleskop Spektrometer Spektrometer Kamera Kamera Auswertungs- software Auswertungs- software

36 Gauss-Fit Die Linien in Spektren sind Gauss-Funktionen Die Linien in Spektren sind Gauss-Funktionen 3 Größen: 3 Größen: Mittelwert b Mittelwert b Breite in halber Höhe a Breite in halber Höhe a Höhe (hier: 1) Höhe (hier: 1)

37 Gauss-Fit Ein Spektrum besteht aus mehreren Peaks Ein Spektrum besteht aus mehreren Peaks Für jeden Peak müssen 3 Parameter bestimmt werden Für jeden Peak müssen 3 Parameter bestimmt werden Verfahren: Nullstellensuche nach Newton- Rhapson Verfahren: Nullstellensuche nach Newton- Rhapson Man braucht: Man braucht: Die 1. Ableitungen nach allen Parametern Die 1. Ableitungen nach allen Parametern Die 2. Ableitungen (Hesse-Matrix) Die 2. Ableitungen (Hesse-Matrix) Gibt die Schrittweite bei der Suche an Gibt die Schrittweite bei der Suche an

38 Gauss-Fit Man versucht, die Parameter einer Gauss- Funktion so zu wählen, dass die Abweichungen von den gemessenen Daten möglichst klein werden Man versucht, die Parameter einer Gauss- Funktion so zu wählen, dass die Abweichungen von den gemessenen Daten möglichst klein werden

39 Performance und MT Gibt es Situationen, in denen auf einer Single-Prozessor-Maschine multithreaded Code schneller ist als seriell abgearbeiteter Code? Gibt es Situationen, in denen auf einer Single-Prozessor-Maschine multithreaded Code schneller ist als seriell abgearbeiteter Code?

40 Performance und MT Antwort: Ja! Antwort: Ja! Besonders dann, wenn unterschiedliche Hardware ausgenutzt wird Besonders dann, wenn unterschiedliche Hardware ausgenutzt wird Rechnen und I/O Rechnen und I/O Rechnen und Grafik Rechnen und Grafik …

41 Performance und OpenMP OpenMP ist eine einfache Möglichkeit für Multithreading bei Algorithmen OpenMP ist eine einfache Möglichkeit für Multithreading bei Algorithmen Für Fortran (Intel) Für Fortran (Intel) Für C++ (Intel, VS 2005) Für C++ (Intel, VS 2005) In OpenMP: In OpenMP: Steuerung der Parallelisierung durch C++- Pragma im Code Steuerung der Parallelisierung durch C++- Pragma im Code Z.B.: #pragma omp parallel Z.B.: #pragma omp parallel Steueranweisung stehen direkt im Code Steueranweisung stehen direkt im Code Mit nativem und mit managed Code Mit nativem und mit managed Code Gut anwendbar für Algorithmen Gut anwendbar für Algorithmen

42 OpenMP Es gibt unterschiedliche Arten der Parallelisierung: Es gibt unterschiedliche Arten der Parallelisierung: Parallelisierung von Schleifen Parallelisierung von Schleifen Parallelisierung von Code-Regionen Parallelisierung von Code-Regionen Nicht zu vergessen: Nicht zu vergessen: Synchronisierung Synchronisierung Und wie stehts mit der Performance? Und wie stehts mit der Performance?

43 Schleifen mit OpenMP Schleifen werden auf mehrere Threads automatisch aufgeteilt Schleifen werden auf mehrere Threads automatisch aufgeteilt Anzahl kann angegeben werden oder ist vom System vorgegeben oder wird dynamisch ausgewählt Anzahl kann angegeben werden oder ist vom System vorgegeben oder wird dynamisch ausgewählt void saxpy(double z[], double a, double x[], double y, int n) { #pragma omp parallel for for(int i = 0; i < n; i++) { z[i] = a * x[i] + y; }

44 Schleifen mit OpenMP Serielle Ausführung im Master-Thread Parallele Ausführung Automatische Synchronisierung

45 Schleifen mit OpenMP Das Verfahren kann auch zu Problemen führen: Das Verfahren kann auch zu Problemen führen: void test(double x[], double z[], int n) { #pragma omp parallel for for(int i = 1; i < n; i++) { z[i] = x[i] + z[i – 1]; // Fehler!!! }

46 Schleifen mit OpenMP Häufig braucht man Reduktionen Häufig braucht man Reduktionen Es gibt mehrere Threads mit eigenen z- Variablen, die dann zum Schluss zum Endergebnis addiert werden Es gibt mehrere Threads mit eigenen z- Variablen, die dann zum Schluss zum Endergebnis addiert werden double test(double x[], int n) { double z = 0.0; #pragma omp parallel for reduction(+:z) for(int i = 1; i < n; i++) { z += x[i]; } return z; }

47 Code-Regionen und -Sektionen Codeteile können ebenfalls parallel laufen Codeteile können ebenfalls parallel laufen Anzahl der Threads kann angegeben werden oder ist vom System vorgegeben Anzahl der Threads kann angegeben werden oder ist vom System vorgegeben Mehrere Sektionen können parallel laufen Mehrere Sektionen können parallel laufen void test() { #pragma omp parallel num_threads(4) { Console::WriteLine(Hallo, TechTalk!); }

48 OpenMP Das hört sich ja sehr einfach an… Das hört sich ja sehr einfach an… …es kann aber auch sehr kompliziert werden …es kann aber auch sehr kompliziert werden Das sprengt aber den Rahmen hier! Das sprengt aber den Rahmen hier! Vorsicht beim Programmieren mit mehreren Threads ist IMMER wichtig Vorsicht beim Programmieren mit mehreren Threads ist IMMER wichtig Immer die Performance prüfen Immer die Performance prüfen Immer die Ergebnisse prüfen Immer die Ergebnisse prüfen OpenMP ist gut für Algorithmen OpenMP ist gut für Algorithmen OpenMP ist nicht gut für die Parallelisierung von User Interfaces OpenMP ist nicht gut für die Parallelisierung von User Interfaces

49 OpenMP-Performance ACHTUNG: Performance-Tests sind mit Beta- Versionen immer etwas kritisch!!! ACHTUNG: Performance-Tests sind mit Beta- Versionen immer etwas kritisch!!! Trotzdem: Trotzdem: Einige Versuche… Einige Versuche… …auf Single-Prozessor-Maschine (P4, 2.4 GHz, ohne HyperThreading, 400 MHz FSB) …auf Single-Prozessor-Maschine (P4, 2.4 GHz, ohne HyperThreading, 400 MHz FSB)... auf Single-Prozessor-Maschine (P4, 3.2 GHz, mit HyperThreading, 800 MHz FSB)... auf Single-Prozessor-Maschine (P4, 3.2 GHz, mit HyperThreading, 800 MHz FSB) …auf Dual-Prozessor-Maschine (P3, 600 MHz) …auf Dual-Prozessor-Maschine (P3, 600 MHz)

50 OpenMP-Performance Schleifen-Parallelisierung Schleifen-Parallelisierung Inn. SchleifeThreadsZeit Single Zeit Single-HT Zeit Dual 20, sek1.953 sek9.937 sek 20, sek1.360 sek8.791 sek 20, sek0.766 sek5.953 sek 20, sek0.625 sek9.812 sek 20,000Ohne0.631 sek0.532 sek9.988 sek Single = Single Prozessor Single-HT = Single Prozessor mit Hyperthreading Dual = Dual Prozessor

51 OpenMP-Performance Schleife mit Reduktion Schleife mit Reduktion SchleifeThreadsZeit Single Zeit Single-HT Zeit Dual 10,000, sek1.843 sek9.922 sek 10,000, sek1.859 sek9.906 sek 10,000, sek1.829 sek9.937 sek 10,000, sek1.844 sek9.921 sek 10,000, sek1.844 sek9.890 sek 10,000, sek2.234 sek sek 10,000,000Ohne2.444 sek2.141 sek sek

52 Zusammenfassung.NET ist performant.NET ist performant Auch ausreichend für wissenschaftliche Berechnungen Auch ausreichend für wissenschaftliche Berechnungen Trotzdem: Wenn man alles rausholen will, vorher prüfen Trotzdem: Wenn man alles rausholen will, vorher prüfen JITter werden immer besser JITter werden immer besser Maschinencode: Nur x86-optimiert Maschinencode: Nur x86-optimiert JIT in Zukunft: Optimierung auf bestimmten Prozessortyp (z.B.: P4-HT) JIT in Zukunft: Optimierung auf bestimmten Prozessortyp (z.B.: P4-HT) Wissenschaftliche Software ist mit Windows-UI auch leichter zu bedienen Wissenschaftliche Software ist mit Windows-UI auch leichter zu bedienen

53 Questions and Answers


Herunterladen ppt "Star Trek 11: Unendliche Weiten Wissenschafliche Software mit.NET Bernd Marquardt Microsoft C++ MVP Microsoft Regional Director Germany Software+Consulting."

Ähnliche Präsentationen


Google-Anzeigen