53
Star Trek 11: Star Trek 11: Unendliche Weiten Unendliche Weiten Wissenschafliche Software Wissenschafliche Software mit .NET mit .NET Bernd Marquardt Bernd Marquardt Microsoft C++ MVP Microsoft C++ MVP Microsoft Regional Director Microsoft Regional Director Germany Germany Software+Consulting Software+Consulting [email protected] [email protected] http://www.go-sky.de http://www.go-sky.de

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

Embed Size (px)

Citation preview

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

Star Trek 11: Unendliche Star Trek 11: Unendliche WeitenWeitenWissenschafliche Software mit Wissenschafliche Software mit .NET.NETBernd MarquardtBernd MarquardtMicrosoft C++ MVPMicrosoft C++ MVPMicrosoft Regional Director GermanyMicrosoft Regional Director GermanySoftware+ConsultingSoftware+Consultingberndm@[email protected]://www.go-sky.dehttp://www.go-sky.de

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

AgendaAgenda EinführungEinführung .NET-Performance allgemein.NET-Performance allgemein

Ein Beispiel: FFTEin Beispiel: FFT Die unendlichen Weiten…Die unendlichen Weiten…

CCD-Kameras und BilderCCD-Kameras und Bilder Bildbearbeitung, Pixel-Verfahren mit C#Bildbearbeitung, Pixel-Verfahren mit C# SpektroskopieSpektroskopie

Gauss-Fit von Peaks in einem Gauss-Fit von Peaks in einem SpektrumSpektrum

Performance und MT (I/O, OpenMP)Performance und MT (I/O, OpenMP) ZusammenfassungZusammenfassung

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

EinführungEinführung

.NET war neu (vor einigen Jahren).NET war neu (vor einigen Jahren) Version 1.0, 1.1, 2.0 vom FrameworkVersion 1.0, 1.1, 2.0 vom Framework Es sollte mittlerweile ganz gut Es sollte mittlerweile ganz gut

funktionierenfunktionieren Wie steht es mit der Performance Wie steht es mit der Performance

von .NET?von .NET? Mathematische Funktionen Mathematische Funktionen

System.MathSystem.Math Rechengenauigkeit Rechengenauigkeit IEEE 754 IEEE 754 Grafik (2D, 3D) unter Windows Grafik (2D, 3D) unter Windows

DirectXDirectX Ausführungsgeschwindigkeit Ausführungsgeschwindigkeit ??? ??? I/O-Performance I/O-Performance ??? ???

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

EinführungEinführung

Wenn es um schnelles Rechnen ging, Wenn es um schnelles Rechnen ging, gab es immer bestimmte gab es immer bestimmte PreferenzenPreferenzen

Historie:Historie: Maschinensprache Maschinensprache (lang, lang ist‘s (lang, lang ist‘s

her)her) FORTRANFORTRAN (lang ist‘s her)(lang ist‘s her) CC (schon mal (schon mal

gehört)gehört) C++C++ (kennt man)(kennt man) .NET???.NET??? (in Zukunft??)(in Zukunft??)

FORTRAN ist noch nicht ganz aus FORTRAN ist noch nicht ganz aus dem Rennen: Fortran für .NET dem Rennen: Fortran für .NET (Lahey)(Lahey)

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

EinführungEinführung Performance-Probleme können sehr Performance-Probleme können sehr

vielschichtig sein:vielschichtig sein: Mangelnde SkalierbarkeitMangelnde Skalierbarkeit Zu wenig ArbeitsspeicherZu wenig Arbeitsspeicher Langsames NetzwerkLangsames Netzwerk Zu langsame ServerZu langsame Server Schlechtes SchedulingSchlechtes Scheduling Langsame PeripherieLangsame Peripherie Falsche ProgrammstrukturFalsche Programmstruktur Multithreading-ProblemeMultithreading-Probleme Langsamer ProzessorLangsamer Prozessor

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

System.MathSystem.Math

Vielfältige mathematische Vielfältige mathematische FunktionenFunktionen

Ca. 30 Methoden und PropertiesCa. 30 Methoden und Properties Standard-MathematikStandard-Mathematik

Das ist eigentlich NICHT so vielDas ist eigentlich NICHT so viel Kann aber leicht erweitert werdenKann aber leicht erweitert werden

Eigene statische Klassen mit statischen Eigene statische Klassen mit statischen MethodenMethoden

Siehe „Numerical Reciepts“Siehe „Numerical Reciepts“

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

RechengenauigkeitRechengenauigkeit Float: 32 bitFloat: 32 bit

Ca. 7 signifikante StellenCa. 7 signifikante Stellen -3.402823 x 10-3.402823 x 103838 bis +3.402823 x 10 bis +3.402823 x 103838

Double: 64 bitDouble: 64 bit Ca. 15 signifikante StellenCa. 15 signifikante Stellen -1.79769313486232 x 10-1.79769313486232 x 10308308 bis bis

+1.79769313486232 x 10+1.79769313486232 x 10308308 Decimal: 128 bitDecimal: 128 bit

--79,228,162,514,264,337,593,543,950,379,228,162,514,264,337,593,543,950,335 bis 35 bis +79,228,162,514,264,337,593,543,950,+79,228,162,514,264,337,593,543,950,335 335

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

RechengenauigkeitRechengenauigkeit

Decimal-Typ ist eher für Finanz-Decimal-Typ ist eher für Finanz-Rechnungen mit großen Zahlen Rechnungen mit großen Zahlen erforderlicherforderlich

Genauigkeit ist über einen Genauigkeit ist über einen bestimmten Wertebereich sehr gutbestimmten Wertebereich sehr gut

Decimal = Integer (96 bit) + Decimal = Integer (96 bit) + Skalierung + VorzeichenSkalierung + Vorzeichen

Und wie ist die Performance?Und wie ist die Performance?

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

Nicht mathematisch, aber Nicht mathematisch, aber wichtig: Stringswichtig: Strings Hier kommt der Garbage-Collector Hier kommt der Garbage-Collector

ins Spielins Spiel Verwalteter SpeicherVerwalteter Speicher Verwaltung kostet Zeit!Verwaltung kostet Zeit!

Gefährlich:Gefährlich: stringstring += string;+= string; Häufiges Neuanlegen und Zerstören von Häufiges Neuanlegen und Zerstören von

ObjektenObjekten

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

String + StringBuilderString + StringBuilder

0

5000

10000

15000

20000

25000

30000

35000

40000

45000

50000

0 5000 10000 15000 20000 25000 30000 35000 40000 45000 50000

0

50

100

150

200

250

300

350

400

450

500

0 500000 1000000 1500000 2000000 2500000 3000000 3500000 4000000 4500000 5000000

StringString

StringBuilderStringBuilder

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

StringBuilderStringBuilder

Bei vielen (mehr als 5) String-Bei vielen (mehr als 5) String-Operationen Operationen StringBuilderStringBuilder benutzenbenutzen Umwandlung in string kostet nichtsUmwandlung in string kostet nichts

StringBuilderStringBuilder-Klasse enthält -Klasse enthält wichtige Methodenwichtige Methoden Konvertieren nicht immer erforderlichKonvertieren nicht immer erforderlich Z.B.: Z.B.: ReplaceReplace

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

Generics – oder doch Generics – oder doch nicht?nicht? Früher: Alles mit CollectionsFrüher: Alles mit Collections Generics können ihre Daten im Generics können ihre Daten im

„richtigen“ Typ speichern„richtigen“ Typ speichern Kein Boxing und Unboxing nötig Kein Boxing und Unboxing nötig

((System.ObjectSystem.Object)) Das bringt Performance-Gewinne…Das bringt Performance-Gewinne…

……und Typsicherheitund Typsicherheit

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

Performance: AllgemeinPerformance: Allgemein

Runtime und JIT-Compiler sind für alle Runtime und JIT-Compiler sind für alle Sprachen gleichSprachen gleich

Performance-Unterschiede können nur Performance-Unterschiede können nur aus den sprach-eigenen Compilern aus den sprach-eigenen Compilern entstehenentstehen

AnalysemöglichkeitenAnalysemöglichkeiten 1. Möglichkeit: Analyse des IL-Codes mit 1. Möglichkeit: Analyse des IL-Codes mit

dem Tool dem Tool ILDASMILDASM 2. Möglichkeit: Analyse des vom JIT-2. Möglichkeit: Analyse des vom JIT-

Compiler erzeugten Maschinencodes mit Compiler erzeugten Maschinencodes mit DebugBreak();DebugBreak();

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

IL-Code-UnterschiedeIL-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 .NETVB .NETC#C#

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

Arithmetik (einfach!)Arithmetik (einfach!) ((double) i + (double) j) * 2.5((double) i + (double) j) * 2.5

VB 6.0VB 6.0 50.610 sek 50.610 sek VC++ 6.0VC++ 6.0 5.160 sek5.160 sek

VC .NET unmng.VC .NET unmng. 4.992 sek4.992 sek

VC .NET mng.VC .NET mng. 5.359 sek5.359 sek C#C# 6.594 sek6.594 sek VB .NETVB .NET (7.625)(7.625) 6.598 sek6.598 sek

VS 6.0VS 6.0

VS .NETVS .NET

Asm.Asm.

CLRCLR

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

Arithmetik (kompliziert!)Arithmetik (kompliziert!) (((double) i + (double) j) * 2.5) / (i + j (((double) i + (double) j) * 2.5) / (i + j

+ 1)+ 1)

VB 6.0VB 6.0 80.313 sek80.313 sek VC++ 6.0VC++ 6.0 5.244 sek 5.244 sek

VC .NET unmng.VC .NET unmng. 5.156 sek 5.156 sek

VC .NET mng.VC .NET mng. 5.172 sek 5.172 sek C#C# 5.156 sek 5.156 sek VB .NETVB .NET 5.146 sek 5.146 sek

VS 6.0VS 6.0

VS .NETVS .NET

Asm.Asm.

CLRCLR

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

Arithmetik (esotherisch!)Arithmetik (esotherisch!) Fast Fourier TransformationFast Fourier Transformation

Sägezahn aus 65.536 EinzelwertenSägezahn aus 65.536 Einzelwerten Daten-Array als lokale VariableDaten-Array als lokale Variable

VC++ unmng. (lok. Array)VC++ unmng. (lok. Array) 63 63 msekmsek

VC++ mng. (lok. Array)VC++ mng. (lok. Array) 63 63 msekmsek

Allgemeine Ergebnisse:Allgemeine Ergebnisse: Mathematische Algorithmen sind Mathematische Algorithmen sind

sehr schnell – Rechenoperationen sehr schnell – Rechenoperationen ohne Einschränkungenohne Einschränkungen

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

Arithmetik (esotherisch!)Arithmetik (esotherisch!) Fast Fourier TransformationFast Fourier Transformation

Sägezahn aus 1.048.576 Sägezahn aus 1.048.576 EinzelwertenEinzelwerten

Daten-Array auf dem Heap (mit Daten-Array auf dem Heap (mit VC.NET unter Kontrolle des Garbage VC.NET unter Kontrolle des Garbage Collectors)Collectors)

VC++ unmng. (Heap)VC++ unmng. (Heap) 2.250 2.250 seksek

VC++ mng. (GC)VC++ mng. (GC) 2.609 2.609 seksek

Allgemeine Ergebnisse:Allgemeine Ergebnisse: Auch mit GC sind schnelle Auch mit GC sind schnelle

Berechnungen möglichBerechnungen möglich

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

ArithmetikArithmetik

Je komplexer die Berechnungen, Je komplexer die Berechnungen, desto geringer werden die desto geringer werden die Unterschiede bei den CLR-SprachenUnterschiede bei den CLR-Sprachen

Allgemeines Ergebnis:Allgemeines Ergebnis: Es wurde kein Testbeispiel gefunden, Es wurde kein Testbeispiel gefunden,

bei dem die CLR-Zeiten abnormal bei dem die CLR-Zeiten abnormal langsam warenlangsam waren

Bei allen Testbeispielen waren die Bei allen Testbeispielen waren die CLR-Zeiten immer wesentlich besser, CLR-Zeiten immer wesentlich besser, als die Zeiten von VB 6als die Zeiten von VB 6

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

Optimierung des CodesOptimierung des Codes

d += (double) i1 + 7.5 * 11.2 / 2.5;d += (double) i1 + 7.5 * 11.2 / 2.5; Sprach-Compiler fasst zusammenSprach-Compiler fasst zusammen

for-Schleifen mit wenigen for-Schleifen mit wenigen DurchgängenDurchgängen JIT macht Loop-UnrollingJIT macht Loop-Unrolling

for(i = 5; i < 5; i++)for(i = 5; i < 5; i++) JIT beachtet die Schleife nichtJIT 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“

........

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

……jetzt kommt die jetzt kommt die UnendlichkeitUnendlichkeit Hobby: Astronomie und AstrophysikHobby: 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… ……

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

EquipmentEquipment

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

CCD-TechnologieCCD-Technologie Früher: Normale Kleinbild-KamerasFrüher: Normale Kleinbild-Kameras

Nachteile:Nachteile: UnempfindlichUnempfindlich Scharfstellung schwierigScharfstellung schwierig Objektpositionierung schwierigObjektpositionierung schwierig Nicht linearNicht linear

Vorteile:Vorteile: Großes FormatGroßes Format Kein Notebook erforderlichKein Notebook erforderlich Kein StrombedarfKein Strombedarf Farbbild: Einmal belichtenFarbbild: Einmal belichten

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

CCD-TechnologieCCD-Technologie

Heute: CCD-KamerasHeute: CCD-Kameras Chips werden jetzt immer größer Chips werden jetzt immer größer

(Kleinbildformat)(Kleinbildformat) Höchste QuanteneffizienzHöchste Quanteneffizienz Man sieht sofort, was man bekommtMan sieht sofort, was man bekommt Es gibt auch schon Farb-CCD‘sEs gibt auch schon Farb-CCD‘s Auflösung ist sehr hochAuflösung ist sehr hoch Wichtig: Wenn man eine „gute“ Kamera Wichtig: Wenn man eine „gute“ Kamera

hat, braucht man auch ein „gutes“ hat, braucht man auch ein „gutes“ NotebookNotebook

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

Bild-AufnahmeBild-Aufnahme

CCD-Kamera wird gekühltCCD-Kamera wird gekühlt Flat-BildFlat-Bild DunkelbildDunkelbild Mehrere RohbilderMehrere Rohbilder Final-Bild = (Rohbild – Dunkelbild) / Final-Bild = (Rohbild – Dunkelbild) /

Flat-BildFlat-Bild Alle Final-Bilder addierenAlle Final-Bilder addieren Kontrast- und HelligkeitsverstärkungKontrast- und Helligkeitsverstärkung

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

BildbearbeitungBildbearbeitung

Es gibt CCD-Chip mit über 10 Es gibt CCD-Chip mit über 10 Millionen Pixel!!!Millionen Pixel!!!

Alle Bildoperationen dauern Alle Bildoperationen dauern entsprechend langeentsprechend lange

Beispiel: Download mit USB 2.0

ST-402ME 400,000 Pixel 0.8 sekST-2000XME2,000,000 Pixel 4.8 sek

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

BildbearbeitungBildbearbeitung

Anzahl der Pixel ist ebenfalls kritisch Anzahl der Pixel ist ebenfalls kritisch bei allen bei allen BildbearbeitungsoperationenBildbearbeitungsoperationen Kontrast und Helligkeit ändernKontrast und Helligkeit ändern Bild schärfenBild schärfen Bild weichzeichnenBild weichzeichnen Rauschen entfernenRauschen entfernen Bilder addierenBilder addieren Bilder kalibrierenBilder kalibrieren

Dunkelbild und Flat-BildDunkelbild und Flat-Bild

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

BildbearbeitungBildbearbeitung

Zusätzliches Problem:Zusätzliches Problem: GetPixelGetPixel und und SetPixelSetPixel aus der aus der

BitmapBitmap-Klasse sind sehr langsam-Klasse sind sehr langsam Besser:Besser:

unsafeunsafe-Code mit richtigen Zeigern-Code mit richtigen Zeigern IntPtrIntPtr kann nicht benutzt werden: kann nicht benutzt werden:

Zeigerarithmetik nicht erlaubtZeigerarithmetik nicht erlaubt LockBits, Scan0, UnlockBitsLockBits, Scan0, UnlockBits Deutlich schnellerDeutlich schneller

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

BildbearbeitungBildbearbeitung

Um das Letzte herauszuholen:Um das Letzte herauszuholen: Code in unmanaged C++ schreiben und Code in unmanaged C++ schreiben und

kapselnkapseln .NET-Wrapper-Klassen um die .NET-Wrapper-Klassen um die

öffentlichen C++-Klassen schreibenöffentlichen C++-Klassen schreiben Aus belibigen .NET-Sprachen benutzenAus belibigen .NET-Sprachen benutzen

Achtung: Aufruf von unmanaged Achtung: Aufruf von unmanaged Code!Code!

Benutzung von Zeigern aus VB.NET-Benutzung von Zeigern aus VB.NET-Projekten:Projekten: Code (z.B.) in C#-Klassen kapseln und Code (z.B.) in C#-Klassen kapseln und

benutzenbenutzen

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

SpektroskopieSpektroskopie

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

SpektrokopieSpektrokopie

Zerlegung des Lichtes in seine Zerlegung des Lichtes in seine farblichen Bestandteile (sichtbarer farblichen Bestandteile (sichtbarer Bereich: blau, grün, gelb, rot)Bereich: blau, grün, gelb, rot)

Es gibt auch unsichtbare Bereiche:Es gibt auch unsichtbare Bereiche: UV-, IR-, Radio-, Röntgen-, Gamma-UV-, IR-, Radio-, Röntgen-, Gamma-

StrahlungStrahlung Spezielle Detektoren sind erforderlichSpezielle Detektoren sind erforderlich Nicht jede Strahlung kann von der Erde Nicht jede Strahlung kann von der Erde

aus beobachtet werden aus beobachtet werden Atmosphäre Atmosphäre Weltraumbeobachtung von Satelitten Weltraumbeobachtung von Satelitten

ausaus Hubble, Cobe, Iras,…Hubble, Cobe, Iras,…

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

SpektrokopieSpektrokopie

Kontinuierliches Spektrum (z.B. von Kontinuierliches Spektrum (z.B. von einer Glühlampe):einer Glühlampe):

Spektrum des Sterns Wega im Spektrum des Sterns Wega im Sternbild Leier (Entf. ca. 30 Sternbild Leier (Entf. ca. 30 Lichtjahre):Lichtjahre):

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

SpektroskopieSpektroskopie Was kann man mit Spektroskopie Was kann man mit Spektroskopie

ermitteln:ermitteln: Chemische ZusammensetzungChemische Zusammensetzung

Einer Sonnen-Atmosphäre (auch Einer Sonnen-Atmosphäre (auch Druck)Druck)

Einer DunkelwolkeEiner Dunkelwolke Einer MolekülwolkeEiner Molekülwolke

Alter von SternenAlter von Sternen Bewegungsgeschwindigkeiten (Doppler-Bewegungsgeschwindigkeiten (Doppler-

Effekt)Effekt) Rotationsbewegungen von SternenRotationsbewegungen von Sternen Auflösung von DoppelsternenAuflösung von Doppelsternen Exo-PlanetenExo-Planeten ……

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

SpektroskopieSpektroskopie

AbsorptionslinienAbsorptionslinien Hintergrund strahlt Kontinuum ausHintergrund strahlt Kontinuum aus Davorliegendes Gas „entnimmt“ Licht Davorliegendes Gas „entnimmt“ Licht

um bestimmte angeregte Zustände zu um bestimmte angeregte Zustände zu erreichenerreichen

EmissionlinienEmissionlinien Ein Stern regt das umliegende Gas anEin Stern regt das umliegende Gas an Das Gas sendet Licht bestimmter Farbe Das Gas sendet Licht bestimmter Farbe

aus, wenn es sich wieder „abregt“aus, wenn es sich wieder „abregt“

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

SpektroskopieSpektroskopie

Vorgehensweise:Vorgehensweise: TeleskopTeleskop SpektrometerSpektrometer KameraKamera Auswertungs-Auswertungs-

softwaresoftware

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

Gauss-FitGauss-Fit Die Linien in Die Linien in

Spektren sind Spektren sind Gauss-FunktionenGauss-Funktionen

3 Größen:3 Größen: Mittelwert bMittelwert b Breite in halber Breite in halber

Höhe aHöhe a Höhe (hier: 1)Höhe (hier: 1)

0

0.5

1

1.5

2

2.5

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

)2

)(exp(

2

1)(

2

2

a

bx

axy

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

Gauss-FitGauss-Fit

Ein Spektrum besteht aus mehreren Ein Spektrum besteht aus mehreren PeaksPeaks

Für jeden Peak müssen 3 Parameter Für jeden Peak müssen 3 Parameter bestimmt werdenbestimmt werden

Verfahren: Nullstellensuche nach Verfahren: Nullstellensuche nach Newton-RhapsonNewton-Rhapson

Man braucht:Man braucht: Die 1. Ableitungen nach allen Die 1. Ableitungen nach allen

ParameternParametern Die 2. Ableitungen (Hesse-Matrix)Die 2. Ableitungen (Hesse-Matrix)

Gibt die Schrittweite bei der Suche anGibt die Schrittweite bei der Suche an

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

Gauss-FitGauss-Fit

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

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

Performance und MTPerformance und MT

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

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

Performance und MTPerformance und MT

Antwort: Ja!Antwort: Ja!

Besonders dann, wenn Besonders dann, wenn unterschiedliche Hardware unterschiedliche Hardware ausgenutzt wirdausgenutzt wird Rechnen und I/ORechnen und I/O Rechnen und GrafikRechnen und Grafik ……

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

Performance und OpenMPPerformance und OpenMP OpenMP ist eine einfache Möglichkeit OpenMP ist eine einfache Möglichkeit

für Multithreading bei Algorithmenfür Multithreading bei Algorithmen Für Fortran (Intel)Für Fortran (Intel) Für Für C++C++ (Intel, VS 2005) (Intel, VS 2005)

In OpenMP:In OpenMP: Steuerung der Parallelisierung durch C+Steuerung der Parallelisierung durch C+

+-Pragma im Code+-Pragma im Code Z.B.: Z.B.: #pragma omp parallel#pragma omp parallel Steueranweisung stehen direkt im CodeSteueranweisung stehen direkt im Code

Mit nativem und mit managed CodeMit nativem und mit managed Code Gut anwendbar für AlgorithmenGut anwendbar für Algorithmen

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

OpenMPOpenMP Es gibt unterschiedliche Arten der Es gibt unterschiedliche Arten der

Parallelisierung:Parallelisierung: Parallelisierung von SchleifenParallelisierung von Schleifen Parallelisierung von Code-RegionenParallelisierung von Code-Regionen

Nicht zu vergessen:Nicht zu vergessen: SynchronisierungSynchronisierung

Und wie steht‘s mit der Performance?Und wie steht‘s mit der Performance?

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

Schleifen mit OpenMPSchleifen mit OpenMP Schleifen werden auf mehrere Schleifen werden auf mehrere

Threads automatisch aufgeteiltThreads automatisch aufgeteilt Anzahl kann angegeben werden oder Anzahl kann angegeben werden oder

ist vom System vorgegeben oder wird ist vom System vorgegeben oder wird dynamisch ausgewähltdynamisch 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; }}

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

Schleifen mit OpenMPSchleifen mit OpenMP

Serielle Ausführung im Master-Thread

Serielle Ausführung im Master-Thread

Parallele Ausführung

Automatische Synchronisierung

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

Schleifen mit OpenMPSchleifen mit OpenMP

Das Verfahren kann auch zu Das Verfahren kann auch zu Problemen führen: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!!! }}

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

Schleifen mit OpenMPSchleifen mit OpenMP Häufig braucht man „Reduktionen“Häufig braucht man „Reduktionen“

Es gibt mehrere Threads mit eigenen z-Es gibt mehrere Threads mit eigenen z-Variablen, die dann zum Schluss zum Variablen, die dann zum Schluss zum Endergebnis addiert werdenEndergebnis 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;}

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

Code-Regionen und -Code-Regionen und -SektionenSektionen

Codeteile können ebenfalls parallel Codeteile können ebenfalls parallel laufenlaufen

Anzahl der Threads kann angegeben Anzahl der Threads kann angegeben werden oder ist vom System werden oder ist vom System vorgegebenvorgegeben

Mehrere Sektionen können parallel Mehrere Sektionen können parallel laufenlaufenvoid test(){ #pragma omp parallel num_threads(4) { Console::WriteLine(„Hallo, TechTalk!“); }}

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

OpenMPOpenMP Das hört sich ja sehr einfach an…Das hört sich ja sehr einfach an… ……es kann aber auch sehr kompliziert es kann aber auch sehr kompliziert

werdenwerden Das sprengt aber den Rahmen hier!Das sprengt aber den Rahmen hier!

Vorsicht beim Programmieren mit Vorsicht beim Programmieren mit mehreren Threads ist mehreren Threads ist IMMERIMMER wichtig wichtig Immer die Performance prüfenImmer die Performance prüfen Immer die Ergebnisse prüfenImmer die Ergebnisse prüfen

OpenMP ist gut für AlgorithmenOpenMP ist gut für Algorithmen OpenMP ist nicht gut für die OpenMP ist nicht gut für die

Parallelisierung von User InterfacesParallelisierung von User Interfaces

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

OpenMP-PerformanceOpenMP-Performance ACHTUNG: Performance-Tests sind ACHTUNG: Performance-Tests sind

mit Beta-Versionen immer etwas mit Beta-Versionen immer etwas kritisch!!!kritisch!!!

Trotzdem:Trotzdem: Einige Versuche…Einige Versuche… ……auf Single-Prozessor-Maschine (P4, 2.4 auf Single-Prozessor-Maschine (P4, 2.4

GHz, GHz, ohneohne HyperThreading, 400 MHz HyperThreading, 400 MHz FSB)FSB)

... auf Single-Prozessor-Maschine (P4, 3.2 ... auf Single-Prozessor-Maschine (P4, 3.2 GHz, GHz, mitmit HyperThreading, 800 MHz FSB) HyperThreading, 800 MHz FSB)

……auf auf DualDual-Prozessor-Maschine (P3, 600 -Prozessor-Maschine (P3, 600 MHz)MHz)

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

OpenMP-PerformanceOpenMP-Performance

Schleifen-ParallelisierungSchleifen-ParallelisierungInn. Schleife Threads ZeitSingleZeitSingle-HT ZeitDual

20,000 4 2.844 sek 1.953 sek 9.937 sek20,000 3 2.583 sek 1.360 sek 8.791 sek20,000 2 2.393 sek 0.766 sek 5.953 sek20,000 1 0.751 sek 0.625 sek 9.812 sek

20,000 Ohne 0.631 sek 0.532 sek 9.988 sek

Single = Single ProzessorSingle-HT = Single Prozessor mit HyperthreadingDual = Dual Prozessor

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

OpenMP-PerformanceOpenMP-Performance

Schleife mit ReduktionSchleife mit ReduktionSchleife Threads ZeitSingleZeitSingle-HT ZeitDual

10,000,000 10 2.494 sek 1.843 sek 9.922 sek10,000,000 6 2.484 sek 1.859 sek 9.906 sek10,000,000 4 2.493 sek 1.829 sek 9.937 sek10,000,000 3 2.473 sek 1.844 sek 9.921 sek10,000,000 2 2.463 sek 1.844 sek 9.890 sek10,000,000 1 2.524 sek 2.234 sek 16.219 sek

10,000,000 Ohne 2.444 sek 2.141 sek 15.853 sek

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

ZusammenfassungZusammenfassung .NET ist performant.NET ist performant

Auch ausreichend für Auch ausreichend für wissenschaftliche Berechnungenwissenschaftliche Berechnungen

Trotzdem: Wenn man „alles Trotzdem: Wenn man „alles rausholen“ will, vorher prüfenrausholen“ will, vorher prüfen

JITter werden immer besserJITter werden immer besser Maschinencode: Nur x86-optimiertMaschinencode: Nur x86-optimiert JIT in Zukunft: Optimierung auf JIT in Zukunft: Optimierung auf

bestimmten Prozessortyp (z.B.: P4-bestimmten Prozessortyp (z.B.: P4-HT)HT)

Wissenschaftliche Software ist mit Wissenschaftliche Software ist mit Windows-UI auch leichter zu Windows-UI auch leichter zu bedienenbedienen

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

Questions and AnswersQuestions and Answers